欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2640|回復: 2
收起左側

STM32 LL庫ADC雙通道采樣電壓值疊加是什么?

[復制鏈接]
ID:837826 發表于 2021-7-9 16:40 | 顯示全部樓層 |閱讀模式
我在使用LL庫中配置ADC用DMA模式傳輸數據,雙通道采樣電壓值,為什么仿真出來的結果會是疊加的,而且值不能最低不能為0,最低為0x0800(上下波動一點),輸入一個AI,最大值為0X0BFF,輸入兩個AI才會到0X0FFF,也就是AI1和AI2通道單獨輸入可以都能讀取0X0800~0X0BFF的值,但是一起輸入在DMA內存地址的數組中就會將兩者的值疊加?這是為什么?有大佬能幫忙看看嘛?
STM32單片機源程序如下:
  1.   LL_ADC_EnableInternalRegulator(ADC3);//
  2.   //ADC3采樣通道等初始化
  3.   ADC_InitStruct.Resolution = LL_ADC_RESOLUTION_12B;//設置ADC分辨率(12位)
  4.   ADC_InitStruct.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT;//設置ADC轉換數據對齊(右對齊)
  5.   ADC_InitStruct.LowPowerMode = LL_ADC_LP_MODE_NONE;
  6.   LL_ADC_Init(ADC3, &ADC_InitStruct);
  7.   
  8.   ADC_REG_InitStruct.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;
  9.   ADC_REG_InitStruct.SequencerLength = LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS;
  10.   ADC_REG_InitStruct.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
  11.   ADC_REG_InitStruct.ContinuousMode = LL_ADC_REG_CONV_CONTINUOUS
  12.   ADC_REG_InitStruct.DMATransfer = LL_ADC_REG_DMA_TRANSFER_UNLIMITED;
  13.   ADC_REG_InitStruct.Overrun = LL_ADC_REG_OVR_DATA_OVERWRITTEN
  14.   LL_ADC_REG_Init(ADC3, &ADC_REG_InitStruct);
  15.   
  16.   
  17.   LL_ADC_SetGainCompensation(ADC3, 0)
  18.   LL_ADC_SetOverSamplingScope(ADC3, LL_ADC_OVS_DISABLE)
  19.   LL_ADC_DisableDeepPowerDown(ADC3)
  20.   
  21.   ADC_CommonInitStruct.CommonClock = LL_ADC_CLOCK_ASYNC_DIV4;
  22.   ADC_CommonInitStruct.Multimode = LL_ADC_MULTI_INDEPENDENT;
  23.   LL_ADC_CommonInit(__LL_ADC_COMMON_INSTANCE(ADC3), &ADC_CommonInitStruct);
  24.   LL_ADC_EnableIT_EOS(ADC3);
  25.   LL_ADC_DisableIT_EOC(ADC3);
  26.   /** Configure Regular Channel
  27.   */
  28.   LL_ADC_REG_SetSequencerRanks(ADC3, LL_ADC_REG_RANK_1, LL_ADC_CHANNEL_1;
  29.   LL_ADC_SetChannelSamplingTime(ADC3, LL_ADC_CHANNEL_1, LL_ADC_SAMPLINGTIME_92CYCLES_5);
  30.   LL_ADC_SetChannelSingleDiff(ADC3, LL_ADC_CHANNEL_1, LL_ADC_SINGLE_ENDED);
  31.   /** Configure Regular Channe5
  32.   */
  33.   LL_ADC_REG_SetSequencerRanks(ADC3, LL_ADC_REG_RANK_2, LL_ADC_CHANNEL_5);
  34.   LL_ADC_SetChannelSamplingTime(ADC3, LL_ADC_CHANNEL_5, LL_ADC_SAMPLINGTIME_92CYCLES_5);
  35.   LL_ADC_SetChannelSingleDiff(ADC3, LL_ADC_CHANNEL_5, LL_ADC_SINGLE_ENDED);
  36.   ActivateAdc3();//包含ADC3使能
  37.   
  38.   StartAdc3ConvPoll();
  39.   ADCSoftConversion();//添加調用此函數,ADC軟件觸發
復制代碼
這是輸入一個AI到10V的值:



這是兩個AI都到10V的值:
企業51hei截圖_16258200084716.png

而且,AI1FilterResult和AI2FilterResult分別對應DMA內存數組中的第一、二個數據之后的處理之后的值,只有AI1FilterResult又值,而AI2FilterResult一直為0,這又是為什么啊?????

回復

使用道具 舉報

ID:939710 發表于 2021-7-10 09:26 | 顯示全部樓層
你沒有使能內存端地址增加吧,還有設置內存段數據長度
回復

使用道具 舉報

ID:837826 發表于 2021-7-10 09:33 | 顯示全部樓層
lishengaha 發表于 2021-7-10 09:26
你沒有使能內存端地址增加吧,還有設置內存段數據長度

DMA的配置都是正常的,主要是ADC兩個通道采樣兩個AI的值是會疊加
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表