前面我們介紹過GD32 485發(fā)送時出現(xiàn)異常的最常見原因,有小伙伴反饋想要知道GD32 串口接受異常的可能原因,今天我們就來安排。
一、波特率異常導致收發(fā)出錯
我們知道,串口是異步通訊接口,通訊雙方或者多方都需要工作在相同波特率下,如果波特率不對,則發(fā)送和接收都會異常。通常引起波特率異常的原因有以下幾種:
外部晶振頻率設置錯誤
GD32 固件庫中,波特率的運算是需要去獲取掛載這個串口的內(nèi)部總線的頻率
而獲取總線頻率的的函數(shù)中需要用到HXTAL_VALUE這個值,即外部晶振的實際頻率。
GD32庫中這個值默認是8M或25M,而有的小伙伴在用其他頻率的晶振時,雖然根據(jù)實際頻率修改了配置主頻的函數(shù),但沒將HXTAL_VALUE這個值修改為實際值,就會導致配置出來的波特率和預想不符,從而導致波特率異常。
晶振頻偏
如果外部和內(nèi)部晶振出現(xiàn)頻偏,也會導致波特率頻偏,這個很好理解,那么頻偏多少會出現(xiàn)異常呢?根據(jù)實際測試和經(jīng)驗,晶振出現(xiàn)2%的頻偏,就會導致串口異常。如果使用的外部晶振,可以直接測量晶振的波形:
如果是用的內(nèi)部晶振,可以通過PA8口輸出內(nèi)部晶振頻率,再測量PA8口波形即可(如何使用PA8輸出內(nèi)部頻率,后面也會出教程哦)。至于為什么超過2%就出現(xiàn)異常,小伙伴們可以自己思考下哦。
二、接受過載
當串口接收線上數(shù)據(jù)量較大,而軟件由于一些原因比如需要處理更高優(yōu)先級的任務時,就可能會發(fā)生數(shù)據(jù)寄存器和移位寄存器中的數(shù)據(jù)都還沒有被讀走的情況下,又接收到新的數(shù)據(jù),此時串口發(fā)生接收過載。
串口狀態(tài)寄存器中的ORERR位將會置“1”,新的數(shù)據(jù)也將不會被接收到MCU中,從而導致數(shù)據(jù)丟失。
該問題的解決辦法:
(1)使用中斷進行數(shù)據(jù)接收,且適當提高中斷優(yōu)先級,同時需要打開接收過載中斷,當發(fā)送過載時表示有數(shù)據(jù)丟失,可以對這一幀數(shù)據(jù)做算法處理;
(2)使用DMA接受數(shù)據(jù),因為DMA不需要CPU參與,故一般情況下不會出現(xiàn)接收過載。
三、接收的數(shù)據(jù)起始位不標準
我們知道,串口每個byte的數(shù)據(jù)都有一個起始位,占一個bit時間,如果由于一些原因?qū)е聦Ψ桨l(fā)過來的數(shù)據(jù)起始位過短的話,MCU就無法識別到這個起始位,從而這個byte的數(shù)據(jù)就不會被接收。小編就見過因為加了隔離芯片導致起始位變短,而傳輸?shù)牡谝粋€數(shù)據(jù)bit位變長,雖然這個byte的數(shù)據(jù)時間是符合波特率的,但由于起始位不標準,也將導致接收異常。
實際上這個問題只會在GD部分芯片上出現(xiàn),比如GD32F405/407/450,這是因為這幾顆芯片串口起始位的檢測比較嚴苛,而GD32有的型號做了起始位檢測優(yōu)化,比如GD32F30x、F425/427/470系列,就不會出現(xiàn)這樣的問題。
四、干擾
串口的發(fā)送和接收,實際上就是一串波形,當波形收到干擾時,也會出現(xiàn)通信異常。這種情況下,小伙伴們就要去通過硬件的方式去過濾到干擾源就可以解決問題了。
上一篇:【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(14)RTC 模塊介紹
下一篇:你了解GD32 MCU的命名規(guī)則嗎
推薦閱讀最新更新時間:2025-04-23 19:13







設計資源 培訓 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設備數(shù)驅(qū)動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 【訓練營】物聯(lián)網(wǎng)控制開關_491332A+李志博
- FC-12M_STM32F401,STM32F401 MCU 32.768kHz晶振單元振蕩電路及選型指南
- 具有負載瞬態(tài)響應的 LT1118CS8 低壓差穩(wěn)壓器的典型應用電路
- 用于有線網(wǎng)絡的 1.5V DC 到 DC 單路輸出電源
- LT1493 的典型應用 - 5MHz、3V/us、低功率單電源、雙路和四路精密運算放大器
- 使用 Analog Devices 的 LT1109CS8 的參考設計
- ADP1763 4 A低VIN、低噪聲、CMOS線性穩(wěn)壓器
- EUP3467可調(diào)壓5A降壓模塊支持CCCV
- LTC3564 的電池在 1.2A 應用中達到 1.2V
- LD39100PUR 1A 低靜態(tài)電流、低噪聲穩(wěn)壓器的可調(diào)輸出典型應用
- 強強聯(lián)合再進階!理想AD Pro輔助駕駛正式升級搭載地平線征程6M
- 英特爾與黑芝麻智能簽署合作備忘錄,聯(lián)合發(fā)布艙駕融合平臺
- 英特爾與面壁智能宣布建立戰(zhàn)略合作伙伴關系,共同研發(fā)端側(cè)原生智能座艙
- 芯馳科技發(fā)布X10,打造全民AI時代座艙處理器新標桿
- 精準適配,輕裝全能!芯馳發(fā)布E3系列高端智控MCU三大應用場景
- 場景定義、精準創(chuàng)「芯」,芯馳全新發(fā)布AI座艙處理器和高端智控系列
- Arm 技術(shù)加持,地平線以 HSD 及征程 6P 推動汽車智能化變革
- 華為自動駕駛技術(shù)解讀
- 加速電動化轉(zhuǎn)型,邦迪汽車系統(tǒng)攜多款創(chuàng)新產(chǎn)品首秀2025上海車展
- 數(shù)據(jù)中心面臨電力約束挑戰(zhàn),推動GenAI終端發(fā)展
- ARM CMSIS Driver 學習 之 USART
- STM32 延時函數(shù)解析
- STM32硬件調(diào)試過程遇中到Delay_ms()函數(shù)卡死的問題
- stm32f4使用Systick實現(xiàn)延時
- STM32F4 Discovery USB HID 用到的文件圖解
- 5G行業(yè)市場發(fā)展前景預測 潛在的萬億市場規(guī)模
- 面對自動駕駛的嚴峻挑戰(zhàn) 且看英偉達如何自如應對?
- 國內(nèi)首個5G電話成功撥通 是你想象的樣子嗎?
- 芯片企業(yè)享有稅收優(yōu)惠政策 集成電路國產(chǎn)化率有望提升
- 2018手機面板的演進路線(華為\小米\OPPO\vivo等)