<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

聚沃科技 ? 2024-01-18 09:57 ? 次閱讀

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

一、波特率異常導致收發出錯

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

外部晶振頻率設置錯誤

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

wKgaomWohQ-ALJt8AAEBK-4Gcd0028.png

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

wKgZomWohRWAZtpRAADPb5Tu77g076.png

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

wKgaomWohRqAZ4gSAABZzLvczos644.png

晶振頻偏

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

wKgZomWohSCAYjJXAAQ-2Eq8nvo695.png

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

wKgaomWohSWAcFpkAABb_TAWJEw682.png

二、接受過載

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

wKgZomWohSqAKUvqAAFUuSfI-Po847.png

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

wKgZomWohTWARiHlAAG-wm1GULY778.png

該問題的解決辦法:

(1)使用中斷進行數據接收,且適當提高中斷優先級,同時需要打開接收過載中斷,當發送過載時表示有數據丟失,可以對這一幀數據做算法處理;

(2)使用DMA接受數據,因為DMA不需要CPU參與,故一般情況下不會出現接收過載。

三、接收的數據起始位不標準

我們知道,串口每個byte的數據都有一個起始位,占一個bit時間,如果由于一些原因導致對方發過來的數據起始位過短的話,MCU就無法識別到這個起始位,從而這個byte的數據就不會被接收。小編就見過因為加了隔離芯片導致起始位變短,而傳輸的第一個數據bit位變長,雖然這個byte的數據時間是符合波特率的,但由于起始位不標準,也將導致接收異常。

wKgaomWohT2AX46UAAB-xvefIss875.png

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

四、干擾

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

以上,就是小編總結的幾點串口接收異常的可能原因,小伙伴們有知道其他原因的,歡迎在評論區交流哦。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6008

    文章

    44087

    瀏覽量

    623072
  • 串口
    +關注

    關注

    14

    文章

    1501

    瀏覽量

    74696
  • GD32
    +關注

    關注

    7

    文章

    357

    瀏覽量

    23794
收藏 人收藏

    評論

    相關推薦

    GD32 串口接受異常幾個原因

    單片機mcu
    聚沃科技
    發布于 :2024年01月19日 10:42:07

    GD32和STM32有哪些不同的地方

    一、前言GD32是國內開發的一款單片機,據說開發的人員是來自ST公司的,GD32也是以STM32作為模板做出來的。所以GD32和STM32有很多地方都是一樣的,不過GD32畢竟是不同的
    發表于 08-09 07:03

    什么是GD32

    一、前言什么GD32?GD32是國內開發的一款單片機,據說開發的人員是來自ST公司的,GD32也是以STM32作為模板做出來的。所以GD32和STM32有很多地方都是一樣的,不過
    發表于 08-12 07:46

    GD32的外部中斷介紹

    中斷介紹? 高效的中斷處理;? 支持異常搶占和咬尾中斷;? 將系統從省電模式喚醒;? 3 種觸發類型:上升沿觸發,下降沿觸發和任意沿觸發;? 軟件中斷或事件觸發;? 可配置的觸發源。簡單介紹下它的一些必備知識,后面我們能用得到的。首先就是GD32的中斷線這個圖很清楚的表示
    發表于 08-16 08:36

    GD32可以替換STM32嗎

    什么是GD32?GD32與STM32的區別在哪?GD32可以替換STM32嗎?
    發表于 10-20 07:03

    GD32 DMA串口通訊DEMO的相關資料推薦

    GD32 DMA串口通訊GD32 USART0 DMA發送與接收不定長數據GD32E230簡介GD32E230采用DMA進行
    發表于 12-10 06:26

    淺析stm32f103&gd32的u***虛擬串口+打印類printer組合設備

    stm32f103&gd32的u***虛擬串口+打印類printer組合設備@TOCstm32f103&gd32的u***虛擬串口,打印類printer組合設備由于
    發表于 01-26 06:27

    GD32串口回環的設置解析

    GD32串口IO該怎樣去設置呢?GD32串口接收該怎樣去設置呢?
    發表于 02-28 06:33

    GD32和STM32的區別

    一、前言GD32是國內開發的一款單片機,據說開發的人員是來自ST公司的,GD32也是以STM32作為模板做出來的。所以GD32和STM32有很多地方都是一樣的,不過GD32畢竟是不同的
    發表于 11-18 20:51 ?47次下載
    <b class='flag-5'>GD32</b>和STM32的區別

    GD32 DMA串口通訊DEMO

    GD32 DMA串口通訊GD32 USART0 DMA發送與接收不定長數據GD32E230簡介GD32E230采用DMA進行
    發表于 11-26 19:36 ?73次下載
    <b class='flag-5'>GD32</b> DMA<b class='flag-5'>串口</b>通訊DEMO

    gd32和stm32哪個好?

    gd32和stm32哪個好? GD32和STM32是兩種常見的微控制器系列,是開發者們常用的開發板核心。盡管它們相似之處很多,但它們也存在著差異,本文將深入探討GD32和STM32,分享它們的優缺點
    的頭像 發表于 08-16 11:32 ?1164次閱讀

    GD32與STM32兼容嗎?

    GD32與STM32兼容嗎? GD32與STM32是兩個不同的微控制器系列,是由兩個不同的公司設計和生產的。GD32系列是由國內的長沙國芯微電子設計和生產的,而STM32系列則是由歐洲
    的頭像 發表于 08-16 11:32 ?2388次閱讀

    GD32和STM32有何區別?GD32如何替換STM32呢?

    GD32和STM32有何區別?GD32如何替換STM32呢? GD32和STM32是兩種不同的微控制器系列,一般被用于嵌入式系統開發。GD32是中國華大基因(Gigadevice)公司
    的頭像 發表于 11-22 18:18 ?4034次閱讀

    GD32 485發送異常最常見原因

    相信有小伙伴們遇到過這樣的問題,在使用GD32進行串口485發送的時候,明明發送了特定長度的數據,但從機就是不響應,現在就讓我們來解析下最常見的一個原因。
    的頭像 發表于 01-16 09:39 ?616次閱讀
    <b class='flag-5'>GD32</b> 485發送<b class='flag-5'>異常</b>最常見<b class='flag-5'>原因</b>

    GD32 MCU ISP失敗的原因

    玩過GD32的小伙伴們都知道,GD32 MCU支持ISP,即在系統編程,前面的常見問題也給大家講過什么是ISP,什么是IAP?那有沒有小伙伴遇到過ISP失敗的情況,失敗的原因是什么呢?
    的頭像 發表于 02-28 09:23 ?617次閱讀
    <b class='flag-5'>GD32</b> MCU ISP失敗的<b class='flag-5'>原因</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>