msp430或stm32,在使用內部adc出現的取樣資料異常抖動問題
取樣設計:
用於檢測供電線路電流及電壓。
產品執行在兩種模式下,1、低功耗靜態模式(倉儲態),2、全功能全速執行模式(工作態)。
在倉儲態下,所有外設均處於關閉狀態,mcu也處於低功耗模式下(如msp430處於lpm3模式,stm32處於stop2模式下),僅保留低功耗定時器及adc,adc處於低速執行狀態,檢測的是工頻訊號,在乙個工頻週期內檢測8個點的資料,每隔2.5ms取樣一次。外部取樣通道也通過mos管進行開啟關閉。
adc轉換器內部圖:
問題1.adc多通道連續取樣,取樣值異常波動
當mcu需要多通道連續取樣時,adc從設定的通道開始順序取樣到通道結束,其內部使用的是乙個adc進行對不同的取樣通道的切換,在切換過程中,不可避免的需要對adc內部rc(cadc)進行充放電,此時就存在乙個隱蔽的問題。
若不同的取樣通道之間的取樣幅值不同,如chanel1的訊號為3.6v的電池電壓,chanel2的訊號為1v基準的交流訊號,chanel3的訊號為3v左右的溫度訊號。此時adc先取樣chanel1,完成後將結果寫入結果暫存器,緊接著取樣chanel2,再取樣chanel3。
這個過程中,當不同的通道接入adc時,外接待取樣訊號會通過rc迴路進行充放電(這個過程需要一定的取樣保持時間設定),sample and hold time越長時間,cadc的電壓值與待採訊號值越一致,取樣結果越準確。但增加該時間則增加相應的時間及功耗。
產品在執行過程**現的問題也基於此。在執行過程中,偶發異常的取樣到與實際值偏離較大的資料,取樣的交流訊號產生了失真,計算出來的值也發生了跳動。
原因在於:由於通道1連線的電壓為3.6v,而通道2連線的訊號低於1,在取樣完成chanel1時,adc自動切換到chanel2,此時由於取樣保持時間設定較小,adc的rc還未放電完成,由較高的電壓訊號切換到較低的電壓訊號,rc未完成放電,導致最後的取樣結果出錯。但其實該種情況也不會必現,mcu差異性導致批量的產品中只有部分會出現該問題。
相同的道理,如果相鄰的通道,chanel2電壓訊號較低,chanel3的電壓訊號較高時,也可能產生adc的cadc未完成充電,取樣得到的值也不準確。
解決方法:1、增加取樣保持時間。2、在電壓訊號相差較大的通道中間,增加對基準電壓的取樣,使訊號處於平均值,在切換通道時不會因為充放電不及時導致資料錯誤。
問題2 對mos管控制的週期開關的通道進行取樣,異常檢測到有訊號
試產的產品部分出現adc取樣的訊號呈下降趨勢,如2080,2070,2060,2055,2048,2048,但待檢訊號無異常,訊號源無明顯抖動。
由於功耗的限制,對於某些取樣訊號的通道無法長時間開啟著,需要通過mos來信道開啟和關閉,通過定時器對其週期性的開啟測量計算。
原因:在開啟mos管時會產生乙個衝擊訊號,需要較長的時間穩定,由於器件的一致性差異,穩定的時間也略有差別。在設計時,設計為執行開啟後60ms再去進行取樣,部分產品就會檢測到異常值,導致計算出現偏差,產品執行狀態也出現偏差。
解決方法:增加等待時間,開啟通道後,等待80ms再進行取樣,取樣資料無誤。
stm32 adc取樣異常 取樣發生抖動
同樣在設計階段,產品在低功耗狀態下的取樣無異常。產品邏輯是在取樣計算到交流訊號時,喚醒mcu外設開啟工作。
在第二次試產時,出現了部分裝置,在無外部訊號時,也取樣計算到了資料,導致執行狀態發生錯誤,體現在靜態功耗異常。從外部基準電源、工作電源、待檢訊號來查,其紋波均較小無異常,但adc還是取樣到抖動資料。
產品設計在定時器lptime中斷裡2.5ms週期觸發開啟adc轉化,隨後mcu進入stop2模式。
問題:取樣到的資料,偶發的出現一兩個點的跳動,如2048,2048,2048,1750,2048,2048,通過計算後,判定為檢測到外部訊號,喚醒了mcu及其外設,導致功耗異常。
但是通過jlink除錯就不會出現adc取樣異常。
通過更換mcu可以解決問題。
切換到外部adc取樣晶元時,不會出現抖動
mcu高速執行時,不會出現抖動
通過詢問技術支援,1、輸入阻抗不匹配 2、取樣電容沒充飽。(回到第乙個問題了)
在更改程式,增加取樣保持時間後,修復了部分異常裝置。但依舊有部分裝置異常。此時取樣保持時間已加到最大,也無法解決該問題,且通過更換mcu可解決問題,又懷疑到硬體設計上來。。。
原因:
由於產品設計,在lptime中斷裡開啟adc取樣,隨後退出中斷後立即進入stop2模式,以降低整機功耗,使其執行在超低功耗狀態下,此時mcu主頻為4mhz。在測試過程中將取樣保持時間開啟到最大,但在實際執行過程中,adc的時鐘是與sysclk時鐘一致的,在退出lptime的中斷後mcu進入了stop2模式,此時sysclk是被關閉的,adc時鐘也被關閉了,再多的取樣保持時間也會停止不執行取樣了。
解決:開啟adc->dma中斷,在觸發adc取樣後,等待dma傳輸完成中斷(即等待所有adc通道都取樣完成),再進入stop2模式。此時保證了設定的取樣保持時間有效執行。但隨即也引入了靜態功耗增加的問題,為該處等待,功耗增加10ua。
總結:
在多次試產過程中,總會出現各種奇奇怪怪的問題是在設計和準備樣機過程中無法發現的問題。在設計包括準備樣機的過程中,會對所用的器件一一進行篩選,且數量較少。當批量生產時,由於器件一致性差異,生產過程的老化破壞,操作人員的黑盒操作,都會使問題逐一暴露。所以乙個產品在真正批量供貨問世前,必須經過至少3輪的試產試執行,才能保證問題基本在廠內消滅。
時鐘抖動對高速ADC取樣系統的影響
在高速資料取樣中,adc時鐘訊號的穩定性對其效能有至關重要的影響,因為這些抖動會破壞高速adc的時序。孔徑的定義 孔徑時間ta,是指從取樣時鐘跳變開始,一直到保持電壓建立。換言之,孔徑是指取樣保持電路中開關切換的時間,即從低阻態轉換為高阻態的時間。由上面圖可以看出,在ta時間內,模擬訊號實際上是一直...
adc 取樣 校準
stm32內部參照電壓vrefin的使用 stm32的內部參照電壓vrefint和adcx in17相連線,它的作用是相當於乙個標準電壓測量點,內部參照電壓vrefint只能出現在主adc1中使用。內部參照電壓vrefint與參考電壓不是一回事。adc的參考電壓都是通過vref 提供的並作為adc轉...
adc 取樣 通道
今天學習stm32的adc部分,adc1有18個通道,其中adc16和adc17是內部通道,分別接內部溫度計和vrefint。在做a d轉換的時候,16個多路通道可以分為兩組 規則組和注入組。不知道大家怎麼看,也許是我看的不夠專注,反正我覺得stm32的參考手冊真是晦澀難懂,就像 一樣。就規則組這個...