• 資料介紹
    • 1、問(wèn)題描述
    • 2、問(wèn)題確認(rèn)
    • 3、問(wèn)題分析
    • 4、問(wèn)題解決
    • 5、小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

LAT1482 STM32G0單線(xiàn)串口通信幀錯(cuò)誤問(wèn)題解析

03/04 15:08
784
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

LAT1482 STM32G0單線(xiàn)串口通信幀錯(cuò)誤問(wèn)題解析

730.37 KB

1、問(wèn)題描述

客戶(hù)反饋產(chǎn)品在使用 STM32G0C1NEY6TR 的 USART6 和另外一顆STM32L433CCY6TR 進(jìn)行單線(xiàn)串口半雙工通信時(shí)發(fā)現(xiàn)數(shù)據(jù)幀錯(cuò)誤,而且很容易復(fù)現(xiàn)。從邏輯分析儀抓到的數(shù)據(jù)看是停止位報(bào)錯(cuò)。

2、問(wèn)題確認(rèn)

針對(duì)客戶(hù)的反饋,建議客戶(hù)用示波器抓串口波形看數(shù)據(jù)幀報(bào)錯(cuò)時(shí)波形有沒(méi)異常。后來(lái)從抓到的波形看 STM32L433 發(fā)送過(guò)來(lái)的起始位數(shù)據(jù)電壓為 1.51v,明顯低于0.7VDD=2.31v(這里 STM32G0 VDD=3.3v,STM32L433 VDD=2.5v)。

3、問(wèn)題分析

從示波器的波形看,客戶(hù)產(chǎn)品兩顆 MCU 串口通信電平并不一致,STM32G0 是 3.3v供電,而 STM32L433 是 2.5v 供電。但正常 STM32L433 串口發(fā)送數(shù)據(jù)給 STM32G0 高電平為 2.4v 高于 0.7VDD,理論上這也不會(huì)影響正常的串口通信。我們懷疑 1.5V 電平是由于UART 通信線(xiàn)兩邊狀態(tài)切換時(shí)一邊拉高而另一邊拉低導(dǎo)致。建議客戶(hù)提供兩邊串口 GPIO 的配置,并檢查半雙工兩邊收發(fā)狀態(tài)切換時(shí)的時(shí)序邏輯。

4、問(wèn)題解決

既然找到了產(chǎn)生問(wèn)題的原因,也就為我們解決問(wèn)題提供了思路。問(wèn)題的解決方法比較簡(jiǎn)單,我們查看客戶(hù) STM32G0 切換 TX,RX 部分代碼,如下圖十,發(fā)現(xiàn)在 TX 發(fā)送完中斷處理函數(shù)中,要切換到 RX 接收狀態(tài)還需要經(jīng)過(guò)復(fù)雜的函數(shù)調(diào)用。后面建議客戶(hù)在 TX 發(fā)送完成中斷函數(shù)中直接修改 USART_CR2 寄存器的 SWAP 位完成切換到 RX。并且改用 DMA 收發(fā)數(shù)據(jù)。修改代碼后,客戶(hù)反饋波形得到改善,問(wèn)題被解決。

5、小結(jié)

本篇筆記分享了怎么幫客戶(hù)一步步分析解決一個(gè)客制化單線(xiàn)串口半雙工通信幀錯(cuò)誤問(wèn)題的過(guò)程。后面也建議客戶(hù)在后續(xù)的開(kāi)發(fā)中如果使用到單線(xiàn)串口,建議參考 ST 官方 RM0444提供的方式。畢竟這種客制化使用單線(xiàn)串口的方式,并不是 ST 推薦的方式,需要客戶(hù)自己驗(yàn)證其可靠性。

資料預(yù)覽

相關(guān)推薦