使用STM32L496的Nucleo板的LPUART 做打印輸出時(shí),電腦端始終沒法出現(xiàn)任何信息。
根據(jù)該開發(fā)板使用手冊說明,外設(shè)LPUART的TX/RX腳【PG7/PG8】默認(rèn)與開發(fā)板STLINK部分的VCP端口相連,這樣做的好處就可以省去飛線的麻煩,更不需要外接USB-UART轉(zhuǎn)換器件。
客戶的LPUART相關(guān)代碼是基于該Nucleo板的cube庫例程修改而成。
上述CUBE庫LPUART例程里的通信口用的PB10/PB11。從芯片數(shù)據(jù)手冊我們可以得知LPUART的通信口可以復(fù)用到多個(gè)端口,如:PA2,PA3/PB11,PB10/PC1,PC0/PG7,PG8。
先基于例程配置使用PB10/PB11通信口做打印輸出,用飛線接到STM32L496的Nucleo板STLINK端的VCP接口,輸出正常。說明STLINK端的VCP端口、LPUART外設(shè)以及PC端vcp驅(qū)動(dòng)的安裝都是正常的。
將LPUART通信口修改PG7,PG8,并做相關(guān)復(fù)用功能、GPIO配置的修改,電腦端根本看不到任何打印信息。即使用示波器直接測試LPUART輸出腳PG7也毫無動(dòng)靜。難道PG7,PG8有什么特別的地方?查看手冊!
通過查看手冊可得知,端口PG[15:2]的供電由VDDIO2負(fù)責(zé)。現(xiàn)在需要用它,VDDIO2腳應(yīng)接上相關(guān)電源。
通過查看NUCLEO板原理圖可知,VDDIO2已經(jīng)與VDD相連了。
那軟件上還需要添加些什么配置呢?因?yàn)橐僮鱒DDIO2域,電源接口時(shí)鐘要使能。另外,還要對一個(gè)跟VDDIO2供電有效的寄存器位【IOSV】進(jìn)行置位,申明VDDIO2域可以工作了。
HAL_PWREx_EnableVddIO2(); //IOSV@PWR_CR2 ……①
__HAL_RCC_PWR_CLK_ENABLE(); //PWREN@RCC_APB1ENR1……②
將上面的第一句代碼插入到例程中的HAL_UART_MspInit()函數(shù)里,將第二句代碼
添加到SystemClock_Config()即可。然后編譯調(diào)試,輸出正常,問題基本了結(jié)。
上面是基于現(xiàn)存Cube庫代碼修改而成的。如果利用STM32CubeMx工具進(jìn)行配置會(huì)快捷很多,關(guān)于上面添加的那些配代碼STM32CubeMx都幫你配置好,省去你研究那些細(xì)節(jié)了,從效率上講高了很多。也許會(huì)有人說這個(gè)效率是以犧牲對細(xì)節(jié)的把握為代價(jià),也沒說錯(cuò)。不過多數(shù)時(shí)候作為應(yīng)用工程師來講重點(diǎn)還是在應(yīng)用功能的實(shí)現(xiàn)和優(yōu)化層面。
最后順便提醒下關(guān)于LPUART的波特率配置要注意的問題。
其實(shí)在前面的測試過程中,在設(shè)置波特率時(shí)也遇到點(diǎn)問題。例程中的波特率設(shè)置的115200,當(dāng)把波特率設(shè)置為較低數(shù)值,比方9600時(shí),發(fā)現(xiàn)UART通信不工作了。當(dāng)波特率調(diào)高時(shí)工作又正常了,這樣反復(fù)驗(yàn)證了多次現(xiàn)象依舊,應(yīng)該是波特率設(shè)置這個(gè)地方有些細(xì)節(jié)需進(jìn)一步了解確認(rèn)。打開STM32L4的參考手冊RM0394閱讀相關(guān)章節(jié)。關(guān)于波特率的設(shè)置及參數(shù)限制都做了明確描述。
1.對于LPUART的波特率設(shè)置除了滿足上述公式外,還得遵守LPUART的時(shí)鐘須在【3倍波特率到4096倍波特率】范圍內(nèi)。前面測試過程中,LPUART的時(shí)鐘源來自系統(tǒng)時(shí)鐘,最高80MHz。依據(jù)上述規(guī)定及公式,那它的波特率最低不得低于80M/4096=19531,所以當(dāng)我們設(shè)置波特率為9600時(shí)自然無法正常通信了,此時(shí)建議配置在38400以上。
2.LPUART的時(shí)鐘源可以是系統(tǒng)時(shí)鐘,還可以是LSE。如果是32768的LSE,根據(jù)上述規(guī)定,LPUART_BRR的值不得小于0X300,即十進(jìn)制768.那么相應(yīng)的波特率配置就不要高于9600.
OK,拋磚引玉似地分享這些小細(xì)節(jié),愿君有所獲。
-
單片機(jī)
+關(guān)注
關(guān)注
6026文章
44456瀏覽量
631026 -
pcb
+關(guān)注
關(guān)注
4308文章
22862瀏覽量
394934 -
PCB設(shè)計(jì)
+關(guān)注
關(guān)注
394文章
4660瀏覽量
84957
原文標(biāo)題:一個(gè)關(guān)于LPUART輸出異常問題分享
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論