娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

GD32串口接收異常的幾個原因

發(fā)布者:靜心靜氣最新更新時間:2024-10-29 來源: elecfans關鍵字:GD32  串口  接收異常 手機看文章 掃描二維碼
隨時隨地手機看文章

前面我們介紹過GD32 485發(fā)送時出現(xiàn)異常的最常見原因,有小伙伴反饋想要知道GD32 串口接受異常的可能原因,今天我們就來安排。


一、波特率異常導致收發(fā)出錯

我們知道,串口是異步通訊接口,通訊雙方或者多方都需要工作在相同波特率下,如果波特率不對,則發(fā)送和接收都會異常。通常引起波特率異常的原因有以下幾種:

外部晶振頻率設置錯誤

GD32 固件庫中,波特率的運算是需要去獲取掛載這個串口的內(nèi)部總線的頻率

wKgaomWohQ-ALJt8AAEBK-4Gcd0028.png


而獲取總線頻率的的函數(shù)中需要用到HXTAL_VALUE這個值,即外部晶振的實際頻率。

wKgZomWohRWAZtpRAADPb5Tu77g076.png


GD32庫中這個值默認是8M或25M,而有的小伙伴在用其他頻率的晶振時,雖然根據(jù)實際頻率修改了配置主頻的函數(shù),但沒將HXTAL_VALUE這個值修改為實際值,就會導致配置出來的波特率和預想不符,從而導致波特率異常。

wKgaomWohRqAZ4gSAABZzLvczos644.png


晶振頻偏

如果外部和內(nèi)部晶振出現(xiàn)頻偏,也會導致波特率頻偏,這個很好理解,那么頻偏多少會出現(xiàn)異常呢?根據(jù)實際測試和經(jīng)驗,晶振出現(xiàn)2%的頻偏,就會導致串口異常。如果使用的外部晶振,可以直接測量晶振的波形:

wKgZomWohSCAYjJXAAQ-2Eq8nvo695.png


如果是用的內(nèi)部晶振,可以通過PA8口輸出內(nèi)部晶振頻率,再測量PA8口波形即可(如何使用PA8輸出內(nèi)部頻率,后面也會出教程哦)。至于為什么超過2%就出現(xiàn)異常,小伙伴們可以自己思考下哦。

wKgaomWohSWAcFpkAABb_TAWJEw682.png


二、接受過載

當串口接收線上數(shù)據(jù)量較大,而軟件由于一些原因比如需要處理更高優(yōu)先級的任務時,就可能會發(fā)生數(shù)據(jù)寄存器移位寄存器中的數(shù)據(jù)都還沒有被讀走的情況下,又接收到新的數(shù)據(jù),此時串口發(fā)生接收過載。

wKgZomWohSqAKUvqAAFUuSfI-Po847.png


串口狀態(tài)寄存器中的ORERR位將會置“1”,新的數(shù)據(jù)也將不會被接收到MCU中,從而導致數(shù)據(jù)丟失。

wKgZomWohTWARiHlAAG-wm1GULY778.png


該問題的解決辦法:

(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ù)時間是符合波特率的,但由于起始位不標準,也將導致接收異常。

wKgaomWohT2AX46UAAB-xvefIss875.png


實際上這個問題只會在GD部分芯片上出現(xiàn),比如GD32F405/407/450,這是因為這幾顆芯片串口起始位的檢測比較嚴苛,而GD32有的型號做了起始位檢測優(yōu)化,比如GD32F30x、F425/427/470系列,就不會出現(xiàn)這樣的問題。


四、干擾

串口的發(fā)送和接收,實際上就是一串波形,當波形收到干擾時,也會出現(xiàn)通信異常。這種情況下,小伙伴們就要去通過硬件的方式去過濾到干擾源就可以解決問題了。


關鍵字:GD32  串口  接收異常 引用地址:GD32串口接收異常的幾個原因

上一篇:【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(14)RTC 模塊介紹
下一篇:你了解GD32 MCU的命名規(guī)則嗎

推薦閱讀最新更新時間:2025-04-23 19:13

GD32 MCU 移植教程】5、GD32E230 系列移植到 GD32F330 系列
1.前言 GD32E230 系列是 GD 的 Cortex_M23 系列產(chǎn)品,GD32F330 系列是 GD 的 Cortex_M4 系列產(chǎn)品,這兩個系列的兼容度非常高。客戶會有從 GD32E230 系列移植到 GD32F330 系列的需求,本文檔專門針對既有的 GD32E230 代碼如何移植到 GD32F330 做一個詳細的介紹; 2.硬件差異 GD32E230 系列的封裝類型有:TSSOP20、LGA20、QFN28、QFN32、LQFP32、LQFP48,GD32F330系列的封裝類型有:TSSOP20、QFN28、QFN32、LQFP48、LQFP64,兩個系列相同封裝的芯片引腳是兼容的。 注意: 1. TSSOP20
[單片機]
【<font color='red'>GD32</font> MCU 移植教程】5、GD32E230 系列移植到 GD32F330 系列
如何使用Keil打開GD32 FPU及使用ARM DSP庫 ?
GD32目前支持ARM Cortex-M和RISC-V兩種內(nèi)核系列芯片,其中Cortex-M內(nèi)核已經(jīng)支持的有M3、M4、M23、M33、M7,這里面除了M3和M23以外,其他的都帶FPU單元。我們知道,F(xiàn)PU在浮點運算速度上有很大的提升,并且只有帶FPU才可以使用ARM的DSP庫。 現(xiàn)在就以GD32F303為例來教大家在keil中如何打開GD32 FPU以及使用ARM DSP庫的方法。 第一步:在keil-Options-Target中設置Floating Point Hardware為Single Precision(小編用的是Keil5,用Keil4的小伙伴這里應該選為Use FPU) 第二步:工程中定義 __T
[單片機]
如何使用Keil打開<font color='red'>GD32</font> FPU及使用ARM DSP庫 ?
干貨 | 用GD32替換STM32,這些細節(jié)你一定要知道!
GD32是國內(nèi)開發(fā)的一款單片機,據(jù)說開發(fā)的人員是來自ST公司的,GD32也是以STM32作為模板做出來的。所以GD32和STM32有很多地方都是一樣的。 不過GD32畢竟是不同的產(chǎn)品,不可能所有東西都沿用STM32,有些自主開發(fā)的東西還是有區(qū)別的。 相同的地方我們就不說了,下面列一下不同的地方。 01 內(nèi)核 GD32采用二代的M3內(nèi)核,STM32主要采用一代M3內(nèi)核,下圖是ARM公司的M3內(nèi)核勘誤表,GD使用的內(nèi)核只有752419這一個BUG。 02 主頻 使用HSE(高速外部時鐘):GD32的主頻最大108M,STM32的主頻最大72M 使用HSI(高速內(nèi)部時鐘):GD32的主頻最大10
[單片機]
s3c2440串口裸板驅(qū)動(使用fifo)
1:串口的數(shù)據(jù)發(fā)送的數(shù)據(jù)量較大時,使用fifo可以大大降低MCU的開銷。(有點類似串入并出的cput處理模型,本質(zhì)上還是串行收發(fā)) 2:在某些特殊場合,例如制定較復雜的協(xié)議時,可以使用fifo特性來做協(xié)議簡化,比如一包 數(shù)據(jù)包含8個字節(jié),(并且fifo設置的長度為8),這樣相當于把uart轉(zhuǎn)換為類似CAN/以太網(wǎng)模型, 這樣信息可擴展性得到了質(zhì)的提高,當然,這里需要同步協(xié)調(diào)。 fifo分析拓展: 1. 如果要用中斷來處理接收到的數(shù)據(jù),就是說,接收完數(shù)據(jù)然后產(chǎn)生中斷,再于中斷里處理接收的數(shù)據(jù)。如果要實現(xiàn)這個本意,要設置好觸發(fā)點。 至于超時中斷之類,那是另外一回事了。 2. 就UART的中斷類型
[單片機]
s3c2440<font color='red'>串口</font>裸板驅(qū)動(使用fifo)
不用串口,如何打印STM32單片機log
本文主要介紹在嵌入式開發(fā)中用來輸出log的方法。 最常用的是通過串口輸出uart log,這種方法實現(xiàn)簡單,大部分嵌入式芯片都有串口功能。但是這樣簡單的功能有時候卻不是那么好用,比如: 一款新拿到的芯片,沒有串口驅(qū)動時如何打印log 某些應用下對時序要求比較高,串口輸出log占用時間太長怎么辦?比如USB枚舉。 某些bug正常運行時會出現(xiàn),當打開串口log時又不再復現(xiàn)怎么辦 一些封裝中沒有串口,或者串口已經(jīng)被用作其他用途,要如何輸出log 下文來討論這些問題。 1輸出log信息到SRAM 準確來說這里并不是輸出log,而是以一種方式不使用串口就可以看到log。在芯片開發(fā)階段都可以連接仿真器調(diào)試,可以使用打斷點的方法調(diào)試,但是有
[單片機]
不用<font color='red'>串口</font>,如何打印STM32單片機log
基于STM32的模擬UART串口通信工作原理
UART工作原理 UART即通用異步收發(fā)器,是一種串行通信方式。數(shù)據(jù)在傳輸過程中是通過一位一位地進行傳輸來實現(xiàn)通信的,串行通信方式具有傳輸線少,成本底等優(yōu)點,缺點是速度慢。串行通信分為兩種類型:同步通信方式和異步通信方式。 但一般多用異步通信方式,主要因為接受和發(fā)送的時鐘是可以獨立的這樣有利于增加發(fā)送與接收的靈活性。異步通信是一個字符接著一個字符傳輸,一個字符的信息由起始位、數(shù)據(jù)位、奇偶校驗位和停止位組成。 每一個字符的傳輸靠起始位來同步,字符的前面一位是起始位,用下降沿通知收方開始傳輸,緊接著起始位之后的是數(shù)據(jù)位,傳輸時低位在前高位在后,字符本身由5~8位數(shù)據(jù)位組成。 數(shù)據(jù)位后面是奇偶校驗位,最后是停止位,停止位是用高
[單片機]
基于STM32的模擬UART<font color='red'>串口</font>通信工作原理
基于CCS工程MSP430串口升級(三)
一、前文 第一次接觸MSP430的芯片,第一次使用CCS開發(fā)環(huán)境,花了將近一個星期的時間,才把MSP430串口升級做出來。 同樣分成BOOT(引導程序)、APP(主程序)、上位機(PC端工具),三個部分來講解。 二、正文 折騰這個功能的時候,遇到了很多問題,現(xiàn)在來一一描述 C和匯編語言混合編程 C語言嵌入?yún)R編語言是asm(“xxx”);,這樣一開始編譯一直不過。 然后幾經(jīng)百度谷歌后,發(fā)現(xiàn)在xxx前面加上制表符t,asm( xxx );,編譯就過了。 IAR沒有這個問題,CCS就這樣。看來CCS編譯器還有待改進。 匯編語言,#和&傻傻分不清 mov #0xEFFE,PC和mov &0xEFFE,PC 一開始搞不清楚,啥區(qū)
[單片機]
基于CCS工程MSP430<font color='red'>串口</font>升級(三)
MSP430 串口通訊
MSP430 串口1 實現(xiàn)即時通訊 芯片:430F169 現(xiàn)在市面上大多數(shù)單片機都自帶串口,本章介紹如何建立430串口通訊 單片機通過接收口(URXD)和發(fā)送口(UTXD)和外界進行通訊 430F169自帶串口0和串口1兩個通訊口 串口通訊是基于系統(tǒng)時鐘上進行的,系統(tǒng)時鐘的配置可以參考我之前的系統(tǒng)時鐘進行配置。 1 串口控制各種寄存器 1 UxCTL,串口控制寄存器 2 UxTCTL,串口傳輸控制寄存器 3 UxRCTL,串口接收控制寄存器 4 UxBR0,波特率控制寄存器0 5 UxBR1,波特率控制寄存器1 6 UxMCTL,調(diào)制控制寄存器 7 UxRXBUF,接收緩存寄存器 8 UxTXBUF,傳
[單片機]
MSP430 <font color='red'>串口</font>通訊
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 滦平县| 镇远县| 浦江县| 英德市| 阳西县| 沽源县| 马龙县| 平武县| 南安市| 嘉定区| 剑川县| 河曲县| 读书| 禹州市| 宁蒗| 宁国市| 鄯善县| 万荣县| 连江县| 安乡县| 平罗县| 二连浩特市| 高安市| 潮安县| 云南省| 海晏县| 清原| 公主岭市| 霍城县| 天祝| 扎赉特旗| 永丰县| 吉水县| 阿鲁科尔沁旗| 积石山| 华阴市| 刚察县| 监利县| 吉首市| 凭祥市| 平原县|