查看: 2969|回復: 0
打印 上一主題 下一主題

[提問] 關于STM32F030K6T6用DMA傳輸ADC采樣值問題 [復制鏈接]

xunavc (離線)
積分
3058
帖子
247
跳轉到指定樓層
樓主
發表于 2019-2-20 15:38:06 |只看該作者 |倒序瀏覽

  最近在學STM32F0芯片,在網上看到一個網友用DMA傳輸ADC采樣值,并用tiM15間隔觸發ADC的思路,覺得不錯想把他的代碼移植一下,由于我用的是STM32F030K6T6,與網友的芯片不一樣,網友做的是三路連續采樣,而我的硬件電路采樣點只有一個,就是采樣外部鋰電池電壓,鋰電池電壓約4.1v,用兩個10K電阻串聯分壓,PA3采樣分壓電壓(,圖片上是兩個100K,由于ADC采樣電流的問題后將100K調整成10K),于是準備將通道17(Vref)加進來,也就是用DMA傳輸2路,后串口打印仿真發現采樣值不正確,看規格書發現這句代碼配置ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward 的解釋是:向前掃描 ( 從 CHSEL0 到 CHSEL16)  ,那這樣可能采樣不到通道17上面,將采樣2路的想法放棄,于是又只單采樣一路再打印值為97,為簡單驗證是否正確,用芯片供電電壓3.3V加到采樣通道PA3上,打印值為255,這樣肯定采樣不對,因我配置的是12位采樣(DC_InitStructure.ADC_Resolution =   ADC_Resolution_12b),理論值應該在4095左右,反復查詢代碼找不到問題,后來發現255這個參數好是配置8位采樣的理論值,于是又將采樣配置成8位,串口打印150,在PA3上加3.3v也是255,這樣3.3V*150/255的結果是1.92V,至此排除誤差,感覺ADC采樣正確。
  做這個實驗我已經花了很多時間和精力,我不知道是不是因為只有一個ADC通道還配置DMA傳輸的問題,如果多幾個通道(0-16)可能不會這樣,能成功配置成12位采樣,能力有限,請大神們幫忙指導一下,謝謝!
    芯片STM32F030K6T6 http://www.dzsc.com/ic-detail/9_450.html的特點
  系列:STM32 F0
  核心處理器:ARM Cortex-M0
  核心尺寸:32-位
  速度:48MHz
  連接性:IC,SPI,UART/USART
  外設:DMA,POR,PWM,WDT
  I/O數:26
  程序存儲容量:32KB(32K x 8)
  程序存儲器類型:閃存
  RAM容量:4K x 8
  電壓-電源(Vcc/Vdd):2.4 V ~ 3.6 V
  數據轉換器:A/D 12x12b
  振蕩器類型:內部
  工作溫度:-40°C ~ 85°C(TA)
  濕氣敏感性等級(MSL):3(168 小時)
  封裝/外殼:32-LQFP
1.jpg

未標題-1.jpg (2.66 KB, 下載次數: 136)

未標題-1.jpg

您需要登錄后才可以發表評論 登錄 | 立即注冊

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
回頂部
二四三一是什么生肖