• 資料介紹
  • 在線預(yù)覽
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

LAT1361 STM32的USART能否支持9位數(shù)據(jù)格式話題

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

LAT1361 STM32的USART能否支持9位數(shù)據(jù)格式話題

504.12 KB

問(wèn)題描述

有客戶(hù)反饋,他最近在做一個(gè)項(xiàng)目用到 STM32L051 這款單片機(jī)。平常的 USART 串口傳輸是 8 位數(shù)據(jù),但是他的項(xiàng)目需要用串口傳輸 9 位數(shù)據(jù)。當(dāng)設(shè)置為 8 位數(shù)據(jù)時(shí),串口響應(yīng)中斷正常。但是,當(dāng)設(shè)置為 9 位數(shù)據(jù)時(shí),串口就不產(chǎn)生中斷了。USART2 的 ISR 寄存器 RXNE 位被置1,RDR 寄存器接收到了數(shù)據(jù),就是不產(chǎn)生中斷,數(shù)據(jù)也讀不出來(lái)。請(qǐng)問(wèn)是不是 HAL 庫(kù)函數(shù)哪里出了 bug?另外,客戶(hù)還補(bǔ)充說(shuō),使用 STM32CubeMX 進(jìn)行配置并創(chuàng)建的工程代碼。

問(wèn)題分析

客戶(hù)表達(dá)的意思就是說(shuō),他使用 8 位數(shù)據(jù)格式進(jìn)行 USART 通信時(shí)一切 OK,UART 中斷也正常,說(shuō)明人家對(duì)這個(gè)模塊的使用還是熟悉的。但使用 9 位數(shù)據(jù)格式時(shí)發(fā)生異常了。大致意思是說(shuō)使用 9 位數(shù)據(jù)格式后數(shù)據(jù)貌似也收到了,RXNE 也置位了,就是基本的中斷沒(méi)法產(chǎn)生。落腳點(diǎn)就是懷疑 ST 的相關(guān) HAL 庫(kù)函數(shù)是不是有 Bug。

說(shuō)實(shí)話,本人之前也沒(méi)有使用 USART 的 9 位數(shù)據(jù)格式做過(guò)工程或驗(yàn)證測(cè)試?,F(xiàn)在客戶(hù)的重點(diǎn)是懷疑庫(kù)的 Bug 問(wèn)題。先打開(kāi)相應(yīng)庫(kù)函數(shù),掃了幾眼并未能看出代碼有什么不妥的地方。然后,打開(kāi)手冊(cè),看看 L05X 系列芯片的 USART 到底支不支持 9 位數(shù)據(jù)格式的傳輸。

問(wèn)題驗(yàn)證

既然這樣,手冊(cè)明確了芯片的 USART 支持 9 位數(shù)據(jù)格式。趕緊找一塊跟客戶(hù)同一個(gè)系列的開(kāi)發(fā)板 32L053DISCOVERY 做針對(duì)性的測(cè)試驗(yàn)證。

因?yàn)榭蛻?hù)使用的是 USART2,所以我開(kāi)始也是使用 STM32L051 的 USART2 進(jìn)行測(cè)試,巧的是,測(cè)試結(jié)果似乎不如人意,接收都成問(wèn)題。結(jié)合方才閱讀各個(gè)系列的手冊(cè)得知,STM32 系列的 USART 都支持 9bit 數(shù)據(jù)格式。剛好手邊有塊 STM32G4 系列的板,任意選了個(gè)片上的USART 進(jìn)行測(cè)試,也是采用中斷方式進(jìn)行收發(fā)。這次很順利,收發(fā)正常。這個(gè)驗(yàn)證可以初步肯定我們的相關(guān)庫(kù)代碼是沒(méi)問(wèn)題的,因?yàn)?HAL 庫(kù)針對(duì)公共功能的代碼是一樣的。

然后我再回過(guò)來(lái)基于 32L0538DISCOVERY 開(kāi)發(fā)板進(jìn)行驗(yàn)證,發(fā)現(xiàn)原來(lái)是這塊開(kāi)發(fā)板上的 USART2 所使用的GPIO 已作他用,有兩個(gè)跳線焊盤(pán)沒(méi)有連接,所以并沒(méi)有實(shí)際連接到排針上,所以使用前檢查一下電路圖很重要。這次我干脆就用其兄弟 USART1 來(lái)進(jìn)行測(cè)試,這次非常順利。同時(shí)也比較了USART1 和 USART2 的特性,這個(gè)地方二者沒(méi)有差別。斷定問(wèn)題出在客戶(hù)的配置或應(yīng)用代碼上,我們的庫(kù)沒(méi)有問(wèn)題.

驗(yàn)證演示

相信并不是很多人使用過(guò)這個(gè) USART 的 9 位數(shù)據(jù)通信格式,應(yīng)用或許有點(diǎn)小眾。越是涉及這種相對(duì)小眾的應(yīng)用功能,我們?cè)陂_(kāi)發(fā)過(guò)程若遇到不順時(shí),往往可能懷疑自己用得對(duì)不對(duì),或者說(shuō)這玩意到底能不能用?;谶@個(gè)想法,我也順便將 STM32 USART 9 位數(shù)據(jù)格式基于 HAL 庫(kù)的實(shí)現(xiàn)分享出來(lái),包括中斷方式和 DMA 方式。

問(wèn)題小結(jié)

這里基于客戶(hù)的咨詢(xún),將整個(gè)驗(yàn)證測(cè)試過(guò)程整理分享出來(lái),希望給未來(lái)首次涉及相關(guān)應(yīng)用的同仁有個(gè)參考,并提供強(qiáng)有力的開(kāi)發(fā)信心。

在線預(yù)覽

相關(guān)推薦