[技术问答] HC32L110C6UA如何在9600bps和38400hz时钟频率下实现低功耗串口通信

[复制链接]
4799|12
 楼主| JacksonChen 发表于 2024-11-14 11:10 | 显示全部楼层 |阅读模式
目前是HC32L110C6UA在38400hz系统频率下,使用2400bps能够进行低功耗串口正常通信,但是使用9600bps会出现乱码情况,请教各位大佬真的不能使用38400hz和9600bps进行串口通信吗?
wubangmi 发表于 2024-11-14 13:29 | 显示全部楼层
本帖最后由 wubangmi 于 2024-11-14 16:16 编辑

如图所示,配置LPUART有三个步骤:
1、把内部RCL=38400的频率加载进来并使能RCL
2、配置好GPIO的TX/RX功能
3、设置以下跟LPUART相关的寄存器
     M0P_CLOCK->PERI_CLKEN_f.LPUART = 1u;           ///< 开启LPUART外设时钟门控开关
     M0P_LPUART->SCON = 0xFC51;///< 一个停止位,工作模式1,使能发送接收功能:4采样分频,波特率9600,时钟源38400
     EnableNvic(LPUART_IRQn,DDL_IRQ_LEVEL_DEFAULT,TRUE);///< 使能lpuart系统中断

然后在LPUART的中断函数里接收数据,调用库函数的发送函数,到此代码就完成了


123.jpg
 楼主| JacksonChen 发表于 2024-11-14 13:41 | 显示全部楼层
wubangmi 发表于 2024-11-14 13:29
如图所示,配置LPUART有三个步骤:1、把内部RCL=38400的频率加载进来比使能RCL

2、配置好GPIO的TX/RX功能

好的,可以发代码参考一下吗,谢谢你
地瓜patch 发表于 2025-1-21 22:05 | 显示全部楼层
距离有要求的
申小林一号 发表于 2025-1-22 08:47 | 显示全部楼层
启用低功耗串口就行
sj8zw8 发表于 2025-1-31 11:44 | 显示全部楼层
使用9600bps会出现乱码
雨果喝水 发表于 2025-4-23 16:28 | 显示全部楼层
真的不能使用38400hz和9600bps进行串口通信吗?
Amazingxixixi 发表于 2025-4-24 14:48 | 显示全部楼层
学习一下啊!感觉有点知识慌了
有何不可0365 发表于 2025-4-30 15:45 | 显示全部楼层
如果在使用38400Hz系统频率下,2400bps能正常工作,而9600bps出现乱码问题,可能涉及到几个潜在的原因和解决方法。
9dome猫 发表于 2025-6-30 15:59 | 显示全部楼层
9600bps 意味着每位数据传输时间为 104.17μs,需要精确的时钟分频。
9dome猫 发表于 2025-6-30 16:00 | 显示全部楼层
38400Hz 系统时钟(周期 26.04μs)无法整除 104.17μs,导致分频误差累积,最终引发采样时序错误。
远芳侵古道 发表于 2025-6-30 23:42 | 显示全部楼层
UART 接收时通常在每位中间位置采样(如第 7、8、9 个时钟周期),分频误差会导致采样点偏移,最终解包数据错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部