|
|
@@ -13,7 +13,7 @@ inserted ADC 由timer0 ch3触发,
|
|
|
#define ISQ3_OFFSET 15
|
|
|
#define IL_OFFSET 20
|
|
|
|
|
|
-#define ADC_SAMPLE_TIME ADC_SAMPLETIME_7POINT5
|
|
|
+#define ADC_SAMPLE_TIME ADC_SAMPLETIME_28POINT5
|
|
|
#define ADC_TRIGGER_PHASE ADC0_1_EXTTRIG_INSERTED_T0_CH3
|
|
|
#define ADC_TRIGGER_PHASE2 ADC0_1_EXTTRIG_INSERTED_T1_CH0
|
|
|
#define ADC_TRIGGER_NONE ADC0_1_2_EXTTRIG_INSERTED_NONE
|
|
|
@@ -70,22 +70,24 @@ static s32 __inline _adc_avg(s32 *v) {
|
|
|
}
|
|
|
#endif
|
|
|
static void __inline adc_phase_current_read(u8 phases, s32 *v1, s32 *v2) {
|
|
|
-#ifdef CONFIG_HW_MUTISAMPLE
|
|
|
- *v1 = ADC_IDATA0(ADC0);
|
|
|
- *v2 = ADC_IDATA0(ADC1);
|
|
|
-#elif defined (CONFIG_SW_MUTISAMPLE)
|
|
|
+#ifdef HIGH_SIDE_CURRENT_SENSOR
|
|
|
+#ifdef CONFIG_SW_MUTISAMPLE
|
|
|
s32 v[4];
|
|
|
v[0] = ADC_IDATA0(ADC0);
|
|
|
- v[1] = ADC_IDATA1(ADC0);
|
|
|
+ v[1] = ADC_IDATA1(ADC1);
|
|
|
v[2] = ADC_IDATA2(ADC0);
|
|
|
- v[3] = ADC_IDATA3(ADC0);
|
|
|
+ v[3] = ADC_IDATA3(ADC1);
|
|
|
*v1 = _adc_avg(v);
|
|
|
|
|
|
v[0] = ADC_IDATA0(ADC1);
|
|
|
- v[1] = ADC_IDATA1(ADC1);
|
|
|
+ v[1] = ADC_IDATA1(ADC0);
|
|
|
v[2] = ADC_IDATA2(ADC1);
|
|
|
- v[3] = ADC_IDATA3(ADC1);
|
|
|
+ v[3] = ADC_IDATA3(ADC0);
|
|
|
*v2 = _adc_avg(v);
|
|
|
+#else
|
|
|
+ *v1 = ADC_IDATA0(ADC0);
|
|
|
+ *v2 = ADC_IDATA0(ADC1);
|
|
|
+#endif
|
|
|
#else
|
|
|
*v1 = (s32)(*adc_phase_reg1[phases]) ;
|
|
|
*v2 = (s32)(*adc_phase_reg2[phases]) ;
|
|
|
@@ -94,12 +96,14 @@ static void __inline adc_phase_current_read(u8 phases, s32 *v1, s32 *v2) {
|
|
|
|
|
|
|
|
|
static void __inline adc_current_sample_config(u8 phases) {
|
|
|
-#ifdef CONFIG_HW_MUTISAMPLE
|
|
|
+#ifdef HIGH_SIDE_CURRENT_SENSOR
|
|
|
+#ifdef CONFIG_SW_MUTISAMPLE
|
|
|
+ ADC_ISQ(ADC0) = ADC_INS_RANK_4_CHANS(V_PHASE_I_CHAN, W_PHASE_I_CHAN, V_PHASE_I_CHAN, W_PHASE_I_CHAN);
|
|
|
+ ADC_ISQ(ADC1) = ADC_INS_RANK_4_CHANS(W_PHASE_I_CHAN, V_PHASE_I_CHAN, W_PHASE_I_CHAN, V_PHASE_I_CHAN);
|
|
|
+#else
|
|
|
ADC_ISQ(ADC0) = ADC_RANK_CHANNEL(V_PHASE_I_CHAN);
|
|
|
ADC_ISQ(ADC1) = ADC_RANK_CHANNEL(W_PHASE_I_CHAN);
|
|
|
-#elif defined (CONFIG_SW_MUTISAMPLE)
|
|
|
- ADC_ISQ(ADC0) = ADC_INS_RANK_4_CHANS(V_PHASE_I_CHAN, V_PHASE_I_CHAN, V_PHASE_I_CHAN, V_PHASE_I_CHAN);
|
|
|
- ADC_ISQ(ADC1) = ADC_INS_RANK_4_CHANS(W_PHASE_I_CHAN, W_PHASE_I_CHAN, W_PHASE_I_CHAN, W_PHASE_I_CHAN);
|
|
|
+#endif
|
|
|
#else
|
|
|
ADC_ISQ(ADC0) = adc0_rank_channels[phases];
|
|
|
ADC_ISQ(ADC1) = adc1_rank_channels[phases];
|