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