筆者最近在作某汽車上的智慧型方向盤按鍵專案,系統要求待機電流小於100ua,同時能檢測系統輸入電壓狀態,做到能自檢欠壓和過壓,並通過lin傳送給中控。
故筆者在對輸入電壓加了乙個分壓電路來檢測,現在客戶測試發現過壓和欠壓的判斷閾值與要求不符合,筆者在實際測試過程中也確實發現了問題,但未燒錄過程式的板子卻不會出現這種情況。實際電路如下圖
比如,假設vcc輸入電壓為8v,那麼理論值就是0.56v(電路前端有乙個整流二極體,故實際輸入電壓又0.7v壓降),但測試燒錄過程式的板子的tp6點卻發現測量值只有0.36v。這個問題困擾了筆者一天,筆者測試了多塊不同的板子,才勉強得出燒錄和未燒錄過程式的區別。後來筆者想到曾經有個大神跟我普及過輸入阻抗匹配的問題,突然靈感一現,查詢了晶元手冊,才茅塞頓開。
查詢晶元手冊,可知晶元adc引腳內部拓撲結構如下圖二所示:
圖二 晶元adc拓撲結構
圖三 充電時間公式
其中, rain:外部輸入阻抗,最大50kω;
radc:取樣開關電阻,最大值為1kω;
cadc:內部取樣和保持電容,最大值為8pf.
由上可以分析:
當電流流經rain會產生乙個壓降,經過radc後會對cadc充電。根據圖三公式可以得出cadc的充電時間由 rain和radc控制,可近似的看成 tc = (radc + rain) × cadc。如果時間過短,adc轉換的數值會小於實際值。
當阻抗大於ic裡adc允許的最大阻抗。電路工作時,一路電流經過r40到r42到地,還有一路經過r40流入mcu的ad介面;因為當系統休眠時,晶元供電斷開,晶元i/o口呈現懸空狀態,i/o可能會存在一定的到地的漏電流
。故可等效的看成是乙個電阻rl與r42併聯到地,因此檢測點的電壓會存在誤差。
那知道了問題該怎麼去規避這種問題呢,筆者給出以下兩種方案
2. r42接地腳由mcu控制,這樣就可以實現對取樣的控制,具體電路可參考下圖
其中,可根據實際應用場景選擇是否需要隔離,另外mos管的過流能力也是根據實際情況選擇。
STM32F0系列串列埠DMA收發資料
這裡用的庫函式版本,晶元型號為stm32f030c8t6.在用到串列埠dma時,要按以下幾個步驟進行。1.確定使用的串口號,這裡,我用的是usart2,對應復用的引腳是pa2,pa3。再根據資料手冊查詢其對應dma通道。2.先進行串列埠初始化配置 void usart2 init 3.再配置dma初...
STM32F0非對齊訪問引起的硬體錯誤及其排除
前段時間在用stm32l0晶元時遇到乙個硬體錯誤,主要是記憶體的非對齊訪問導致的。注 cm3 核心支援非對齊訪問,而 cm0不支援非對齊訪問。先科普一下,什麼是非對齊訪問 如上圖所示,若要訪問的變數是int float u32型別的 佔4位元組 則這些變數在記憶體中,只能以圖中0 4 8為起始位址 ...
STM32F0微控制器快速入門七 UART中斷操作
1.從輪詢到中斷 很多同學都不喜歡用中斷,而偏愛用輪詢的操作方式。這是不是和我們的天性有關呢?每個人都喜歡一切盡在掌握中,肯定都不喜歡被打斷。我們常常都有這樣的經驗 正在跟別人說一件事,然後突然有個 打進來,call打完後突然記不起來剛才講到哪了!這種糟糕的體驗對我們影響是如此深刻,以至於我們認定機...