0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何排查串口通信問(wèn)題?

jf_pJlTbmA9 ? 來(lái)源:魚鷹談單片機(jī) ? 作者:魚鷹談單片機(jī) ? 2023-09-18 10:58 ? 次閱讀

來(lái)源:公眾號(hào)【魚鷹談單片機(jī)

作者:魚鷹Osprey

ID :emOsprey

工作過(guò)程中,總是會(huì)遇到各種各樣的通信問(wèn)題,除了掌握軟件知識(shí),必要的硬件技能也必不可少,比如萬(wàn)用表、示波器、邏輯分析儀等,如此才能做到精準(zhǔn)定位,早點(diǎn)打卡下班~~

魚鷹根據(jù)個(gè)人多年的嵌入式開發(fā)經(jīng)驗(yàn),在此斗膽總結(jié)一番,希望可以給一些新人提供排查方向。

在此,以串口通信為例,介紹排查步驟或方向:

wKgZomUD6siALJNuAABL5abR-lg887.png

紅色代表可能出錯(cuò)的位置

1、示波器看波形

通信,不管是單向通信還是雙向通信,必然存在兩個(gè)器件,所以我們需要重點(diǎn)關(guān)注這兩個(gè),而兩者之間必然存在物理連接--導(dǎo)線(無(wú)線除外),遇到通信問(wèn)題,應(yīng)該首先保證導(dǎo)線連接正常、電壓正常,如果這一點(diǎn)都沒有確定,直接跳過(guò)該步驟,很大可能做無(wú)用功,查來(lái)查去,最終可能查了一個(gè)寂寞。

串口雙向通信,一般會(huì)設(shè)計(jì)成主從方式,即一個(gè)主器件通過(guò)雙方約定好的協(xié)議主動(dòng)向從機(jī)發(fā)起數(shù)據(jù)傳輸,并且從機(jī)永遠(yuǎn)是被動(dòng)應(yīng)答。這樣保證在多從機(jī)通信的情況下,不會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)亂的情況(如果多個(gè)從機(jī)同時(shí)發(fā)送數(shù)據(jù),可能造成交通擁堵,畢竟一個(gè)方向只有一條道)。

這種情況下,可以讓主機(jī)定時(shí)發(fā)送固定數(shù)據(jù)幀(比如版本查詢,這樣可以減少變量),通過(guò)查看示波器來(lái)確定從機(jī)是否有返回?cái)?shù)據(jù)。

如此,我們可以確定兩個(gè)問(wèn)題:

1、觀察主機(jī)發(fā)送引腳波形是否正常(串口平時(shí)一般為高電平,發(fā)數(shù)據(jù)時(shí)才會(huì)變化)、同時(shí)需要確定電壓是否正常、波特率可看可不看、具體傳輸數(shù)據(jù)也是,因?yàn)樵撾A段只是從大的方向進(jìn)行排查;

2、從機(jī)是否有回應(yīng)。

這里又分為兩種情況:

1)從機(jī)沒有回應(yīng):

此時(shí)我們需要在接下來(lái)的排查步驟中確定幾個(gè)問(wèn)題:

<1>從機(jī)發(fā)送功能是否正常?

<2>主機(jī)發(fā)送的數(shù)據(jù)從機(jī)是否已經(jīng)正常接收?

<3>主機(jī)發(fā)送的數(shù)據(jù)協(xié)議是否正確。

2)從機(jī)有回應(yīng)。

這種情況下,問(wèn)題就比較簡(jiǎn)單,重點(diǎn)排查上層協(xié)議即可(可以保證從機(jī)的收、發(fā)沒有問(wèn)題)。

這里特別注意的是,波形測(cè)量位置一定是在最終點(diǎn),而不是中間某個(gè)探測(cè)點(diǎn)或者模擬開關(guān)之類的器件。

比如,主機(jī)發(fā)送引腳,測(cè)量位置應(yīng)該在從機(jī)芯片的接收引腳,而測(cè)量主機(jī)的接收則在主機(jī)芯片的接收引腳,才不會(huì)導(dǎo)致結(jié)果誤判。

2、根據(jù)波形情況,確定主從器件發(fā)送、接收功能

如果說(shuō)步驟 1 發(fā)現(xiàn)主機(jī)沒有正常傳輸波形產(chǎn)生,就要根據(jù)情況再確定一些問(wèn)題。

1、如果發(fā)現(xiàn)波形失真、變形、電壓不正常等情況,請(qǐng)呼叫硬件工程師一起排查。

2、主機(jī)芯片發(fā)送引腳可以看到波形,但從機(jī)接收引腳看不到,請(qǐng)使用萬(wàn)用表確定是否虛焊接。相反方向也排查一遍。

3、主機(jī)或從機(jī)不能正常發(fā)送或接收。

如果你使用了 DMA 發(fā)送,又使用了《終極串口接收方式,極致效率》筆記介紹的方式接收,那么你可以從以下方向進(jìn)行排查(其他更簡(jiǎn)單的方式類似):

1)發(fā)送、接收引腳時(shí)鐘是否開啟、輸入輸出模式是否配置正常,發(fā)送引腳一般復(fù)用輸出、接收一般上拉輸入(如果只是引腳配置錯(cuò)誤,發(fā)送 DMA的 計(jì)數(shù)器會(huì)變化,但是沒有實(shí)際波形輸出);

2)串口外設(shè)寄存器配置是否正常。如果全是 0 ,說(shuō)時(shí)鐘沒有打開,或者未調(diào)用初始化函數(shù),其次查看對(duì)應(yīng)的 DMA 請(qǐng)求位(發(fā)送、接收,如果這個(gè)沒有開啟,DMA 計(jì)數(shù)器不會(huì)變化)、串口使能位等;波特率可以等發(fā)出波形再看,畢竟你現(xiàn)在連數(shù)據(jù)都沒有。

3)查看 DMA 配置是否正常,外設(shè)、內(nèi)存地址寄存器、計(jì)數(shù)器、使能位、對(duì)應(yīng)通道的傳輸標(biāo)志位(F4 如果傳輸標(biāo)志不清除,無(wú)法啟動(dòng)下一次傳輸),總之把對(duì)應(yīng)結(jié)構(gòu)體的成員看一遍就對(duì)了,可能一個(gè)小配置錯(cuò)了,就導(dǎo)致整個(gè)傳輸失敗。

4)如果是特殊引腳,看是否需要關(guān)閉默認(rèn)功能,開啟普通 GPIO 功能

5)如果是復(fù)映射功能,查看對(duì)應(yīng)的映射寄存器是否配置正確,配置時(shí),可能需要開啟對(duì)應(yīng)的時(shí)鐘。

以上排查方法對(duì)發(fā)送、接收都適合。排查后,可以通過(guò)短接 Tx、Rx 引腳的方式確定發(fā)送、接收是否異常。如果是單方向的,可以配合串口模塊測(cè)試。

終極殺招:

如果上述排查都沒有發(fā)現(xiàn)問(wèn)題,還是失敗,要么換板子,要么換一個(gè)可以用的簡(jiǎn)單例程修改后測(cè)試,此時(shí)可以對(duì)比例程調(diào)試模式下的寄存器配置(寄存器配置截圖后對(duì)比)。

另外, 排查時(shí)需要特別注意的是,不能只看代碼,不看實(shí)際寄存器的值。因?yàn)橛械臅r(shí)候,代碼也可能有各種各樣的問(wèn)題(比如時(shí)鐘如果沒有打開,那么即使有對(duì)應(yīng)的配置代碼,你一個(gè)寄存器值也寫不進(jìn)去),只有看最終寄存器的值才最安心。這里也多次強(qiáng)調(diào)了時(shí)鐘的重要性,不過(guò)一般這種問(wèn)題很容易排查。

以上排查方向,配合魚鷹的調(diào)試系列文章,消化好!

3、協(xié)議問(wèn)題

上述排查,應(yīng)該基本解決了雙方通信問(wèn)題的,即自發(fā)自收應(yīng)該沒有問(wèn)題。但不代表雙方就能夠正常通信了。

這里可能存在幾個(gè)問(wèn)題:

1、雙方波特率設(shè)置不匹配(這個(gè)問(wèn)題比較容易查,直接看波形或寄存器(寄存器可能還沒那么靠譜,外設(shè)一致可以)即可)

2、上層協(xié)議不匹配,比如 CRC 校驗(yàn)有問(wèn)題、幀頭定義有誤等等……

3、對(duì)方解析函數(shù)有問(wèn)題。

這個(gè)時(shí)候,配合邏輯分析儀分析是最方便的,到底是從機(jī)問(wèn)題還是主機(jī)問(wèn)題一目了然,當(dāng)然你直接在Tx、Rx上并上兩個(gè)串口模塊的 Rx 去接收串口數(shù)據(jù)也是可以的~~

以上排查步驟不一定按順序排查,但一般查看波形都是優(yōu)先選擇。

4、其他通信

在此繼續(xù)介紹一下 SPI 通信可能出現(xiàn)的問(wèn)題:

1、SPI 發(fā)送數(shù)據(jù)后,沒有延時(shí)即立刻開始接收(此時(shí)從機(jī)可能沒有反應(yīng)過(guò)來(lái),也就沒有數(shù)據(jù)輸出),SPI 的波形可能失真(通過(guò)示波器可以觀察出來(lái)),也可能波形挺好,但接收就是有問(wèn)題;

2、 CS 控制時(shí)機(jī)不對(duì),或者也可能需要延時(shí)一段時(shí)間。

3、SPI 波特率太高,導(dǎo)致器件無(wú)法識(shí)別。測(cè)試時(shí)最好使用最低波特率,但也不排除太低波特率反而不行的情況,所以多試試幾種。

總之,測(cè)試代碼應(yīng)該要考慮最極端的情況(比如延時(shí)久一點(diǎn),波特率慢一點(diǎn)),調(diào)通之后再優(yōu)化這些參數(shù),提高通信效率。

另外,如果有參考例程,可以直接對(duì)比例程輸出的波形進(jìn)行修改,直到你的代碼輸出波形(注意,這里直接對(duì)比波形)和例程保持一致,如果還是有問(wèn)題,那么換從機(jī)器件再試。當(dāng)然,電源這里也一定要先確定沒有問(wèn)題。

一般來(lái)說(shuō),只要 CS、CLK、MOSI 控制時(shí)序正確,器件的 MISO 引腳一定會(huì)有數(shù)據(jù)輸出(即使你沒有接主機(jī)的 MISO),如果你能看到 MISO 輸出波形,但主機(jī)還是沒有正確接收,那么就查主機(jī)的 MISO 引腳配置和延時(shí)情況了。

I2C 通信:

1、和 SPI 類似,查看時(shí)序問(wèn)題

2、注意地址問(wèn)題,有可能說(shuō)明書的地址和實(shí)際的地址之間換算可能需要移位。

3、注意從機(jī)鎖死問(wèn)題,傳輸前發(fā)幾個(gè)停止信號(hào)過(guò)去試試

來(lái)源:魚鷹談單片機(jī)

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 萬(wàn)用表
    +關(guān)注

    關(guān)注

    87

    文章

    2030

    瀏覽量

    126960
  • 示波器
    +關(guān)注

    關(guān)注

    113

    文章

    6147

    瀏覽量

    184061
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1604

    瀏覽量

    55325
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    QT串口通信的簡(jiǎn)單使用

    QT串口通信是上位機(jī)和下位機(jī)通信常用的通信方式, 也是學(xué)習(xí)QT必須學(xué)會(huì)的基礎(chǔ)知識(shí), 這篇就簡(jiǎn)單介紹一下QT串口
    的頭像 發(fā)表于 01-15 09:27 ?1657次閱讀
    QT<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的簡(jiǎn)單使用

    如何排查FPGA與USB之間的芯片通信問(wèn)題?

    ”,而在SBBulkSourceSink固件中沒有顯示這個(gè)錯(cuò)誤,可不可以證明我的FPGA和USB之間通信成功?另外,我該如何排查FPGA與USB之間的芯片通信問(wèn)題?
    發(fā)表于 02-27 06:46

    無(wú)線通信中如何排查電磁波干擾?

    無(wú)線通信中如何排查電磁波干擾?
    發(fā)表于 03-07 07:18

    如何去排查移動(dòng)通信基站的射頻干擾?有哪些流程?

    如何去排查移動(dòng)通信基站的射頻干擾?有哪些流程?
    發(fā)表于 05-24 06:36

    串口通信原理和簡(jiǎn)介

    本文針對(duì)串口通信定義,以及串口通信原理進(jìn)行相關(guān)的講述。
    發(fā)表于 11-09 14:39 ?1.5w次閱讀

    串口通信調(diào)試(PC與PC串口通信

    【LabVIEW從入門到精通】4.1.6 串口通信調(diào)試(PC與PC串口通信
    發(fā)表于 01-08 15:43 ?0次下載

    串口通信調(diào)試(PC與智能儀器串口通信

    【LabVIEW從入門到精通】4.1.6 串口通信調(diào)試(PC與智能儀器串口通信
    發(fā)表于 01-08 15:42 ?0次下載

    LabVIEW串口通信詳解

    LabVIEW串口通信詳解,基于LabVIEW來(lái)分析串口通信。
    發(fā)表于 03-15 13:55 ?479次下載

    niosii的UART串口通信

    niosii的UART串口通信niosii的UART串口通信。
    發(fā)表于 04-06 17:03 ?1次下載

    LESSON7_串口通信

    串口通信,串口雙機(jī)通信,通信技術(shù)。
    發(fā)表于 04-13 14:23 ?0次下載

    Qt實(shí)現(xiàn)串口通信

    要實(shí)現(xiàn)串口通信,需要知道串口通信需要的信息
    的頭像 發(fā)表于 04-23 17:34 ?3865次閱讀
    Qt實(shí)現(xiàn)<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    【請(qǐng)查收】串口通信問(wèn)題排查指南

    點(diǎn)擊藍(lán)字關(guān)注小億在我們從事嵌入式相關(guān)的項(xiàng)目開發(fā)時(shí),經(jīng)常會(huì)遇到各種各樣的串口通信問(wèn)題。筆者根據(jù)自己平時(shí)的調(diào)試開發(fā)經(jīng)驗(yàn),總結(jié)了一份排查指南,希望可以給大家提供一些排查問(wèn)題的方向和辦法。
    的頭像 發(fā)表于 07-02 15:01 ?1148次閱讀
    【請(qǐng)查收】<b class='flag-5'>串口</b><b class='flag-5'>通信</b>問(wèn)題<b class='flag-5'>排查</b>指南

    如何快速排查衛(wèi)星通信的干擾與影響?

    隨著目前國(guó)內(nèi)5G網(wǎng)絡(luò)建設(shè)的發(fā)展,5G信號(hào)的覆蓋范圍越來(lái)越廣泛,然而這樣的發(fā)展卻對(duì)C波段衛(wèi)星信號(hào)造成了干擾,虹科手持式頻譜分析儀提供靈活的檢測(cè)與排查方案,經(jīng)濟(jì)高效地進(jìn)行衛(wèi)星通信的干擾問(wèn)題排查。
    的頭像 發(fā)表于 10-08 11:24 ?1242次閱讀
    如何快速<b class='flag-5'>排查</b>衛(wèi)星<b class='flag-5'>通信</b>的干擾與影響?

    【分享】什么是串口通信?串口常見通信問(wèn)題如何解決?

    在之前的文章中小編介紹了什么是CAN總線,包括CAN總線的數(shù)據(jù)格式和通信特點(diǎn)等方面的內(nèi)容,今天將分享串口通信相關(guān)知識(shí)內(nèi)容。CAN總線、串口通信
    的頭像 發(fā)表于 06-21 17:45 ?2191次閱讀
    【分享】什么是<b class='flag-5'>串口</b><b class='flag-5'>通信</b>?<b class='flag-5'>串口</b>常見<b class='flag-5'>通信</b>問(wèn)題如何解決?

    串口通信的常見錯(cuò)誤及故障排除方法介紹

    串口通信作為設(shè)備間數(shù)據(jù)傳輸?shù)某S梅绞剑趯?shí)際應(yīng)用中可能會(huì)遇見多種故障和問(wèn)題,導(dǎo)致電子工程師無(wú)法進(jìn)行后續(xù)設(shè)計(jì),那么如何針對(duì)這些錯(cuò)誤進(jìn)行故障排查?
    的頭像 發(fā)表于 03-25 09:05 ?9163次閱讀