在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何排查串口通信問題?

jf_pJlTbmA9 ? 來源:魚鷹談單片機 ? 作者:魚鷹談單片機 ? 2023-09-18 10:58 ? 次閱讀

來源:公眾號【魚鷹談單片機

作者:魚鷹Osprey

ID :emOsprey

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

魚鷹根據個人多年的嵌入式開發經驗,在此斗膽總結一番,希望可以給一些新人提供排查方向。

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

wKgZomUD6siALJNuAABL5abR-lg887.png

紅色代表可能出錯的位置

1、示波器看波形

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

串口雙向通信,一般會設計成主從方式,即一個主器件通過雙方約定好的協議主動向從機發起數據傳輸,并且從機永遠是被動應答。這樣保證在多從機通信的情況下,不會出現數據錯亂的情況(如果多個從機同時發送數據,可能造成交通擁堵,畢竟一個方向只有一條道)。

這種情況下,可以讓主機定時發送固定數據幀(比如版本查詢,這樣可以減少變量),通過查看示波器來確定從機是否有返回數據。

如此,我們可以確定兩個問題:

1、觀察主機發送引腳波形是否正常(串口平時一般為高電平,發數據時才會變化)、同時需要確定電壓是否正常、波特率可看可不看、具體傳輸數據也是,因為該階段只是從大的方向進行排查;

2、從機是否有回應。

這里又分為兩種情況:

1)從機沒有回應:

此時我們需要在接下來的排查步驟中確定幾個問題:

<1>從機發送功能是否正常?

<2>主機發送的數據從機是否已經正常接收?

<3>主機發送的數據協議是否正確。

2)從機有回應。

這種情況下,問題就比較簡單,重點排查上層協議即可(可以保證從機的收、發沒有問題)。

這里特別注意的是,波形測量位置一定是在最終點,而不是中間某個探測點或者模擬開關之類的器件。

比如,主機發送引腳,測量位置應該在從機芯片的接收引腳,而測量主機的接收則在主機芯片的接收引腳,才不會導致結果誤判。

2、根據波形情況,確定主從器件發送、接收功能

如果說步驟 1 發現主機沒有正常傳輸波形產生,就要根據情況再確定一些問題。

1、如果發現波形失真、變形、電壓不正常等情況,請呼叫硬件工程師一起排查。

2、主機芯片發送引腳可以看到波形,但從機接收引腳看不到,請使用萬用表確定是否虛焊接。相反方向也排查一遍。

3、主機或從機不能正常發送或接收。

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

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

2)串口外設寄存器配置是否正常。如果全是 0 ,說時鐘沒有打開,或者未調用初始化函數,其次查看對應的 DMA 請求位(發送、接收,如果這個沒有開啟,DMA 計數器不會變化)、串口使能位等;波特率可以等發出波形再看,畢竟你現在連數據都沒有。

3)查看 DMA 配置是否正常,外設、內存地址寄存器、計數器、使能位、對應通道的傳輸標志位(F4 如果傳輸標志不清除,無法啟動下一次傳輸),總之把對應結構體的成員看一遍就對了,可能一個小配置錯了,就導致整個傳輸失敗。

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

5)如果是復映射功能,查看對應的映射寄存器是否配置正確,配置時,可能需要開啟對應的時鐘。

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

終極殺招:

如果上述排查都沒有發現問題,還是失敗,要么換板子,要么換一個可以用的簡單例程修改后測試,此時可以對比例程調試模式下的寄存器配置(寄存器配置截圖后對比)。

另外, 排查時需要特別注意的是,不能只看代碼,不看實際寄存器的值。因為有的時候,代碼也可能有各種各樣的問題(比如時鐘如果沒有打開,那么即使有對應的配置代碼,你一個寄存器值也寫不進去),只有看最終寄存器的值才最安心。這里也多次強調了時鐘的重要性,不過一般這種問題很容易排查。

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

3、協議問題

上述排查,應該基本解決了雙方通信問題的,即自發自收應該沒有問題。但不代表雙方就能夠正常通信了。

這里可能存在幾個問題:

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

2、上層協議不匹配,比如 CRC 校驗有問題、幀頭定義有誤等等……

3、對方解析函數有問題。

這個時候,配合邏輯分析儀分析是最方便的,到底是從機問題還是主機問題一目了然,當然你直接在Tx、Rx上并上兩個串口模塊的 Rx 去接收串口數據也是可以的~~

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

4、其他通信

在此繼續介紹一下 SPI 通信可能出現的問題:

1、SPI 發送數據后,沒有延時即立刻開始接收(此時從機可能沒有反應過來,也就沒有數據輸出),SPI 的波形可能失真(通過示波器可以觀察出來),也可能波形挺好,但接收就是有問題;

2、 CS 控制時機不對,或者也可能需要延時一段時間。

3、SPI 波特率太高,導致器件無法識別。測試時最好使用最低波特率,但也不排除太低波特率反而不行的情況,所以多試試幾種。

總之,測試代碼應該要考慮最極端的情況(比如延時久一點,波特率慢一點),調通之后再優化這些參數,提高通信效率。

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

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

I2C 通信:

1、和 SPI 類似,查看時序問題

2、注意地址問題,有可能說明書的地址和實際的地址之間換算可能需要移位。

3、注意從機鎖死問題,傳輸前發幾個停止信號過去試試

來源:魚鷹談單片機

審核編輯:湯梓紅

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

    關注

    88

    文章

    2074

    瀏覽量

    127691
  • 示波器
    +關注

    關注

    113

    文章

    6246

    瀏覽量

    184963
  • 串口通信
    +關注

    關注

    34

    文章

    1626

    瀏覽量

    55529
收藏 人收藏

    評論

    相關推薦

    如何排查FPGA與USB之間的芯片通信問題?

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

    無線通信中如何排查電磁波干擾?

    無線通信中如何排查電磁波干擾?
    發表于 03-07 07:18

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

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

    串口通信原理和簡介

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

    串口通信調試(PC與PC串口通信

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

    串口通信調試(PC與智能儀器串口通信

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

    LabVIEW串口通信詳解

    LabVIEW串口通信詳解,基于LabVIEW來分析串口通信
    發表于 03-15 13:55 ?481次下載

    niosii的UART串口通信

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

    LESSON7_串口通信

    串口通信串口雙機通信通信技術。
    發表于 04-13 14:23 ?0次下載

    【請查收】串口通信問題排查指南

    點擊藍字關注小億在我們從事嵌入式相關的項目開發時,經常會遇到各種各樣的串口通信問題。筆者根據自己平時的調試開發經驗,總結了一份排查指南,希望可以給大家提供一些排查問題的方向和辦法。
    的頭像 發表于 07-02 15:01 ?1325次閱讀
    【請查收】<b class='flag-5'>串口</b><b class='flag-5'>通信</b>問題<b class='flag-5'>排查</b>指南

    如何快速排查衛星通信的干擾與影響?

    隨著目前國內5G網絡建設的發展,5G信號的覆蓋范圍越來越廣泛,然而這樣的發展卻對C波段衛星信號造成了干擾,虹科手持式頻譜分析儀提供靈活的檢測與排查方案,經濟高效地進行衛星通信的干擾問題排查
    的頭像 發表于 10-08 11:24 ?1412次閱讀
    如何快速<b class='flag-5'>排查</b>衛星<b class='flag-5'>通信</b>的干擾與影響?

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

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

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

    串口通信作為設備間數據傳輸的常用方式,在實際應用中可能會遇見多種故障和問題,導致電子工程師無法進行后續設計,那么如何針對這些錯誤進行故障排查
    的頭像 發表于 03-25 09:05 ?1.2w次閱讀

    為什么通信要使用虛擬串口串口助手?

    串口助手和虛擬串口是什么?串口助手和虛擬串口串口通信中很常見。
    的頭像 發表于 11-15 01:04 ?1033次閱讀
    為什么<b class='flag-5'>通信</b>要使用虛擬<b class='flag-5'>串口</b>和<b class='flag-5'>串口</b>助手?

    串口通信協議解析 串口通信應用實例

    串口通信協議解析 串口通信協議是指規定了數據包的內容,內容包含了起始位、主體數據、校驗位及停止位,雙方需要約定一致的數據包格式才能正常收發數據的有關規范。以下是
    的頭像 發表于 11-21 17:03 ?528次閱讀
    主站蜘蛛池模板: 天天爽夜夜操| 2020狠狠操| 中文字幕精品一区影音先锋| 亚洲怡红院在线观看| 好大好硬好深好爽视频h| 字幕网中文aⅴ资源站| 欧美成人69| 手机福利在线| 日本一区不卡在线观看| 日日噜噜噜夜夜爽爽狠狠视频| 爱逼综合| 国产在线h| 色网站欧美| 午夜毛片不卡高清免费| 亚洲一区二区三区精品视频| 日本最好的免费影院| 天天夜夜骑| 男女视频在线| 久久国内精品视频| 黑人黄色大片| 性欧美videofree另类超大 | 日韩在线免费看网站| 亚洲邪恶天堂影院在线观看| 在线观看亚洲免费视频| 欧美精品 在线播放| 黄色网址日本| 天堂成人| 色极影院| 我要看一级大片| 亚洲444kkk| 高清一区二区三区免费| 国产三级日本三级在线播放| 欧美二级| 美女骚网站| 2020狠狠操| 你懂的在线免费视频| 国产精品福利久久| 日本网络视频www色高清免费| 奇米影视777欧美在线观看| 亚洲成人网在线观看| 午夜精品久久久久久久久|