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

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

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

一個(gè)關(guān)于LPUART輸出異常問題分享

STM32單片機(jī) ? 來源:未知 ? 作者:李建兵 ? 2018-03-16 10:12 ? 次閱讀

使用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é),愿君有所獲。

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

    關(guān)注

    6026

    文章

    44456

    瀏覽量

    631026
  • pcb
    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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于rtt studio創(chuàng)建的stm32h750基礎(chǔ)工程,LPUART1編譯下載后程序可以運(yùn)行但無log輸出

    記錄下開啟低功耗串口lpuart1的問題點(diǎn)和臨時(shí)解決辦法,希望官方早日修復(fù)問題現(xiàn)象:使用rtt studio基于芯片創(chuàng)建了stm32h750的基礎(chǔ)工程,log串口選用的LPUART1(tx:PB6
    發(fā)表于 03-16 10:07

    記錄下開啟低功耗串口lpuart1的問題點(diǎn)和臨時(shí)解決辦法

    問題現(xiàn)象:使用rtt studio基于芯片創(chuàng)建了stm32h750的基礎(chǔ)工程,log串口選用的LPUART1(tx:PB6/rx:PB7)編譯下載后程序可以運(yùn)行,但無log輸出,硬件上串口指示燈變常
    發(fā)表于 07-27 10:38

    為什么在X-CUBE-LPUART中找不到關(guān)于STM32U5項(xiàng)目

    根據(jù)應(yīng)用說明,它說 X-CUBE-LPUART 支持 STM32U5。我試圖在 LPBAM 中找到 LPUART 接收的示例,但我找不到任何示例。Cube IDE 有個(gè)示例,但 LP
    發(fā)表于 12-02 07:41

    基于MM32L0130的LPUART外設(shè)應(yīng)用簡介

    固定分頻系數(shù)的話會(huì)引入累計(jì)誤差,所以在接收和發(fā)送的時(shí)候采用3、4分頻交替進(jìn)行接收和發(fā)送,每個(gè)bit采樣次,每個(gè)bit采用3分頻還是4分頻由MCTL寄存器控制,接收和發(fā)送時(shí)序圖如下:當(dāng)LPUART工作
    發(fā)表于 12-09 16:04

    淺析LPUART使用DMA的配置步驟

    完成和DMA傳輸出錯(cuò)。各通道單獨(dú)的中斷請求由這3種事件標(biāo)志邏輯或起來。可以配置寄存器的對應(yīng)位來使能這些中斷:1.2LPUART使用DMA的配置步驟1 根據(jù)基本UART配置步驟配置LPUART2 使能
    發(fā)表于 12-12 17:10

    I.MX RT1062中未觸發(fā)LPUART1 RX中斷處理程序的原因?

    我有個(gè)用于 i.MX RT1062 處理器的 MIMXRT1060-EVKB。 我已經(jīng)下載了關(guān)于第二個(gè)引導(dǎo)加載程序的軟件 。我使用的是 gnu 工具鏈,所以我必須使用 makefil
    發(fā)表于 03-16 06:59

    FRDM-K32L2A4S LPUART0如何配置?

    ,115200 8N1,啟用了 tx 和 rx。 使用 pinmux 工具,我選擇 GPIO A14 作為 TX,GPIO A15 作為 RX。我生成了代碼并嘗試發(fā)送一個(gè)
    發(fā)表于 03-21 07:32

    不能同時(shí)使用lpuart_adapter和uart_adapter嗎?

    我將 MKL17Z32 與 MCUExpresso 和 SDK v2.8.0 起使用。這個(gè)微控制器有2個(gè)LPUARTLPUART0和LPUart
    發(fā)表于 03-24 07:36

    以STM32L431為例,解析LPUART喚醒STOP模式

    使用HSI16作為LPUART的時(shí)鐘,波特率就可以較高。不過使用LPUART來喚醒還是有個(gè)問題要注意,即高速的波特率與LPUART的喚醒時(shí)間差的問題。
    發(fā)表于 10-31 14:27 ?2.4w次閱讀
    以STM32L431為例,解析<b class='flag-5'>LPUART</b>喚醒STOP模式

    遇到開關(guān)電源電壓輸出異常時(shí)的診斷和維修措施

    民熔小課堂在之前的分享中提到了開關(guān)電源電壓輸出異常的幾種情況,而它們的異常原因也大致探討了部分。那么在遇到開關(guān)電源電壓輸出異常時(shí)又怎樣處理呢
    發(fā)表于 08-31 09:41 ?5353次閱讀

    基于MM32L0130的LPUART應(yīng)用(1)

    LPUART(Low power universal asynchronous receiver transmitter,低功耗通用異步收發(fā)器),相比標(biāo)準(zhǔn)的UART,其功耗極低,支持在低功耗模式下運(yùn)行,并且可以將MCU從低功耗模式喚醒。
    的頭像 發(fā)表于 06-02 17:27 ?1040次閱讀
    基于MM32L0130的<b class='flag-5'>LPUART</b>應(yīng)用(1)

    【S32K 進(jìn)階之旅】LPUART 模塊介紹與應(yīng)用

    S32K144 LPUART 模塊特性等詳解
    的頭像 發(fā)表于 03-29 14:27 ?3923次閱讀
    【S32K 進(jìn)階之旅】<b class='flag-5'>LPUART</b> 模塊介紹與應(yīng)用

    【S32K 進(jìn)階之旅】 LPUART 模塊的例程解讀

    為了幫助新手快速的入門 LPUART 模塊,本文將逐句解析例程 LPUART_s32k144,例程的導(dǎo)入方式及演示效果請參考我的上篇博文
    的頭像 發(fā)表于 04-06 16:43 ?2373次閱讀
    【S32K 進(jìn)階之旅】 <b class='flag-5'>LPUART</b> 模塊的例程解讀

    個(gè)地址未對齊引起的HardFault異常

    個(gè)地址未對齊引起的 HardFault 異常
    的頭像 發(fā)表于 09-18 10:57 ?669次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>地址未對齊引起的HardFault<b class='flag-5'>異常</b>

    晶振輸出頻率異常怎么辦?

    晶振輸出頻率異常怎么辦? 晶振輸出頻率異常是指晶振輸出信號(hào)的頻率與預(yù)期不符。晶振作為種常見的時(shí)
    的頭像 發(fā)表于 01-24 16:11 ?725次閱讀