0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个关于LPUART输出异常问题分享

STM32单片机 来源:未知 作者:李建兵 2018-03-16 10:12 次阅读

使用STM32L496的Nucleo板的LPUART 做打印输出时,电脑端始终没法出现任何信息

根据该开发板使用手册说明,外设LPUART的TX/RX脚【PG7/PG8】默认与开发板STLINK部分的VCP端口相连,这样做的好处就可以省去飞线的麻烦,更不需要外接USB-UART转换器件。

客户的LPUART相关代码是基于该Nucleo板的cube库例程修改而成。

上述CUBE库LPUART例程里的通信口用的PB10/PB11。从芯片数据手册我们可以得知LPUART的通信口可以复用到多个端口,如:PA2,PA3/PB11,PB10/PC1,PC0/PG7,PG8。

先基于例程配置使用PB10/PB11通信口做打印输出,用飞线接到STM32L496的Nucleo板STLINK端的VCP接口,输出正常。说明STLINK端的VCP端口、LPUART外设以及PC端vcp驱动的安装都是正常的。

将LPUART通信口修改PG7,PG8,并做相关复用功能、GPIO配置的修改,电脑端根本看不到任何打印信息。即使用示波器直接测试LPUART输出脚PG7也毫无动静。难道PG7,PG8有什么特别的地方?查看手册!

通过查看手册可得知,端口PG[15:2]的供电由VDDIO2负责。现在需要用它,VDDIO2脚应接上相关电源

通过查看NUCLEO板原理图可知,VDDIO2已经与VDD相连了。

那软件上还需要添加些什么配置呢?因为要操作VDDIO2域,电源接口时钟要使能。另外,还要对一个跟VDDIO2供电有效的寄存器位【IOSV】进行置位,申明VDDIO2域可以工作了。

HAL_PWREx_EnableVddIO2(); //IOSV@PWR_CR2 ……①

__HAL_RCC_PWR_CLK_ENABLE(); //PWREN@RCC_APB1ENR1……②

将上面的第一句代码插入到例程中的HAL_UART_MspInit()函数里,将第二句代码

添加到SystemClock_Config()即可。然后编译调试,输出正常,问题基本了结。

上面是基于现存Cube库代码修改而成的。如果利用STM32CubeMx工具进行配置会快捷很多,关于上面添加的那些配代码STM32CubeMx都帮你配置好,省去你研究那些细节了,从效率上讲高了很多。也许会有人说这个效率是以牺牲对细节的把握为代价,也没说错。不过多数时候作为应用工程师来讲重点还是在应用功能的实现和优化层面。

最后顺便提醒下关于LPUART的波特率配置要注意的问题。

其实在前面的测试过程中,在设置波特率时也遇到点问题。例程中的波特率设置的115200,当把波特率设置为较低数值,比方9600时,发现UART通信不工作了。当波特率调高时工作又正常了,这样反复验证了多次现象依旧,应该是波特率设置这个地方有些细节需进一步了解确认。打开STM32L4的参考手册RM0394阅读相关章节。关于波特率的设置及参数限制都做了明确描述。

1.对于LPUART的波特率设置除了满足上述公式外,还得遵守LPUART的时钟须在【3倍波特率到4096倍波特率】范围内。前面测试过程中,LPUART的时钟源来自系统时钟,最高80MHz。依据上述规定及公式,那它的波特率最低不得低于80M/4096=19531,所以当我们设置波特率为9600时自然无法正常通信了,此时建议配置在38400以上。

2.LPUART的时钟源可以是系统时钟,还可以是LSE。如果是32768的LSE,根据上述规定,LPUART_BRR的值不得小于0X300,即十进制768.那么相应的波特率配置就不要高于9600.

OK,抛砖引玉似地分享这些小细节,愿君有所获。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44488

    浏览量

    631868
  • pcb
    pcb
    +关注

    关注

    4315

    文章

    22930

    浏览量

    395479
  • PCB设计
    +关注

    关注

    394

    文章

    4668

    浏览量

    85102

原文标题:一个关于LPUART输出异常问题分享

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于rtt studio创建的stm32h750基础工程,LPUART1编译下载后程序可以运行但无log输出

    记录下开启低功耗串口lpuart1的问题点和临时解决办法,希望官方早日修复问题现象:使用rtt studio基于芯片创建了stm32h750的基础工程,log串口选用的LPUART1(tx:PB6
    发表于 03-16 10:07

    记录下开启低功耗串口lpuart1的问题点和临时解决办法

    问题现象:使用rtt studio基于芯片创建了stm32h750的基础工程,log串口选用的LPUART1(tx:PB6/rx:PB7)编译下载后程序可以运行,但无log输出,硬件上串口指示灯变常
    发表于 07-27 10:38

    为什么在X-CUBE-LPUART中找不到关于STM32U5项目

    根据应用说明,它说 X-CUBE-LPUART 支持 STM32U5。我试图在 LPBAM 中找到 LPUART 接收的示例,但我找不到任何示例。Cube IDE 有示例,但 LP
    发表于 12-02 07:41

    基于MM32L0130的LPUART外设应用简介

    固定分频系数的话会引入累计误差,所以在接收和发送的时候采用3、4分频交替进行接收和发送,每个bit采样次,每个bit采用3分频还是4分频由MCTL寄存器控制,接收和发送时序图如下:当LPUART工作
    发表于 12-09 16:04

    浅析LPUART使用DMA的配置步骤

    完成和DMA传输出错。各通道单独的中断请求由这3种事件标志逻辑或起来。可以配置寄存器的对应位来使能这些中断:1.2LPUART使用DMA的配置步骤1 根据基本UART配置步骤配置LPUART2 使能
    发表于 12-12 17:10

    I.MX RT1062中未触发LPUART1 RX中断处理程序的原因?

    我有用于 i.MX RT1062 处理器的 MIMXRT1060-EVKB。 我已经下载了关于第二引导加载程序的软件 。我使用的是 gnu 工具链,所以我必须使用 makefil
    发表于 03-16 06:59

    FRDM-K32L2A4S LPUART0如何配置?

    ,115200 8N1,启用了 tx 和 rx。 使用 pinmux 工具,我选择 GPIO A14 作为 TX,GPIO A15 作为 RX。我生成了代码并尝试发送一个
    发表于 03-21 07:32

    不能同时使用lpuart_adapter和uart_adapter吗?

    我将 MKL17Z32 与 MCUExpresso 和 SDK v2.8.0 起使用。这个微控制器有2LPUARTLPUART0和LPUart
    发表于 03-24 07:36

    以STM32L431为例,解析LPUART唤醒STOP模式

    使用HSI16作为LPUART的时钟,波特率就可以较高。不过使用LPUART来唤醒还是有问题要注意,即高速的波特率与LPUART的唤醒时间差的问题。
    发表于 10-31 14:27 2.4w次阅读
    以STM32L431为例,解析<b class='flag-5'>LPUART</b>唤醒STOP模式

    遇到开关电源电压输出异常时的诊断和维修措施

    民熔小课堂在之前的分享中提到了开关电源电压输出异常的几种情况,而它们的异常原因也大致探讨了部分。那么在遇到开关电源电压输出异常时又怎样处理呢
    发表于 08-31 09:41 5376次阅读

    基于MM32L0130的LPUART应用(1)

    LPUART(Low power universal asynchronous receiver transmitter,低功耗通用异步收发器),相比标准的UART,其功耗极低,支持在低功耗模式下运行,并且可以将MCU从低功耗模式唤醒。
    的头像 发表于 06-02 17:27 1077次阅读
    基于MM32L0130的<b class='flag-5'>LPUART</b>应用(1)

    【S32K 进阶之旅】LPUART 模块介绍与应用

    S32K144 LPUART 模块特性等详解
    的头像 发表于 03-29 14:27 4103次阅读
    【S32K 进阶之旅】<b class='flag-5'>LPUART</b> 模块介绍与应用

    【S32K 进阶之旅】 LPUART 模块的例程解读

    为了帮助新手快速的入门 LPUART 模块,本文将逐句解析例程 LPUART_s32k144,例程的导入方式及演示效果请参考我的上篇博文
    的头像 发表于 04-06 16:43 2454次阅读
    【S32K 进阶之旅】 <b class='flag-5'>LPUART</b> 模块的例程解读

    地址未对齐引起的HardFault异常

    地址未对齐引起的 HardFault 异常
    的头像 发表于 09-18 10:57 677次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>地址未对齐引起的HardFault<b class='flag-5'>异常</b>

    晶振输出频率异常怎么办?

    晶振输出频率异常怎么办? 晶振输出频率异常是指晶振输出信号的频率与预期不符。晶振作为种常见的时
    的头像 发表于 01-24 16:11 801次阅读