我在使用LL庫中配置ADC用DMA模式傳輸數據,雙通道采樣電壓值,為什么仿真出來的結果會是疊加的,而且值不能最低不能為0,最低為0x0800(上下波動一點),輸入一個AI,最大值為0X0BFF,輸入兩個AI才會到0X0FFF,也就是AI1和AI2通道單獨輸入可以都能讀取0X0800~0X0BFF的值,但是一起輸入在DMA內存地址的數組中就會將兩者的值疊加?這是為什么?有大佬能幫忙看看嘛?
STM32單片機源程序如下:
- LL_ADC_EnableInternalRegulator(ADC3);//
- //ADC3采樣通道等初始化
- ADC_InitStruct.Resolution = LL_ADC_RESOLUTION_12B;//設置ADC分辨率(12位)
- ADC_InitStruct.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT;//設置ADC轉換數據對齊(右對齊)
- ADC_InitStruct.LowPowerMode = LL_ADC_LP_MODE_NONE;
- LL_ADC_Init(ADC3, &ADC_InitStruct);
-
- ADC_REG_InitStruct.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;
- ADC_REG_InitStruct.SequencerLength = LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS;
- ADC_REG_InitStruct.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
- ADC_REG_InitStruct.ContinuousMode = LL_ADC_REG_CONV_CONTINUOUS
- ADC_REG_InitStruct.DMATransfer = LL_ADC_REG_DMA_TRANSFER_UNLIMITED;
- ADC_REG_InitStruct.Overrun = LL_ADC_REG_OVR_DATA_OVERWRITTEN
- LL_ADC_REG_Init(ADC3, &ADC_REG_InitStruct);
-
-
- LL_ADC_SetGainCompensation(ADC3, 0)
- LL_ADC_SetOverSamplingScope(ADC3, LL_ADC_OVS_DISABLE)
- LL_ADC_DisableDeepPowerDown(ADC3)
-
- ADC_CommonInitStruct.CommonClock = LL_ADC_CLOCK_ASYNC_DIV4;
- ADC_CommonInitStruct.Multimode = LL_ADC_MULTI_INDEPENDENT;
- LL_ADC_CommonInit(__LL_ADC_COMMON_INSTANCE(ADC3), &ADC_CommonInitStruct);
- LL_ADC_EnableIT_EOS(ADC3);
- LL_ADC_DisableIT_EOC(ADC3);
- /** Configure Regular Channel
- */
- LL_ADC_REG_SetSequencerRanks(ADC3, LL_ADC_REG_RANK_1, LL_ADC_CHANNEL_1;
- LL_ADC_SetChannelSamplingTime(ADC3, LL_ADC_CHANNEL_1, LL_ADC_SAMPLINGTIME_92CYCLES_5);
- LL_ADC_SetChannelSingleDiff(ADC3, LL_ADC_CHANNEL_1, LL_ADC_SINGLE_ENDED);
- /** Configure Regular Channe5
- */
- LL_ADC_REG_SetSequencerRanks(ADC3, LL_ADC_REG_RANK_2, LL_ADC_CHANNEL_5);
- LL_ADC_SetChannelSamplingTime(ADC3, LL_ADC_CHANNEL_5, LL_ADC_SAMPLINGTIME_92CYCLES_5);
- LL_ADC_SetChannelSingleDiff(ADC3, LL_ADC_CHANNEL_5, LL_ADC_SINGLE_ENDED);
- ActivateAdc3();//包含ADC3使能
-
- StartAdc3ConvPoll();
- ADCSoftConversion();//添加調用此函數,ADC軟件觸發
復制代碼 這是輸入一個AI到10V的值:
這是兩個AI都到10V的值:
企業51hei截圖_16258200084716.png (21.71 KB, 下載次數: 61)
下載附件
2021-7-9 16:40 上傳
而且,AI1FilterResult和AI2FilterResult分別對應DMA內存數組中的第一、二個數據之后的處理之后的值,只有AI1FilterResult又值,而AI2FilterResult一直為0,這又是為什么啊?????
|