HC32L110C6UA如何在9600bps和38400hz时钟频率下实现低功耗串口通信
目前是HC32L110C6UA在38400hz系统频率下,使用2400bps能够进行低功耗串口正常通信,但是使用9600bps会出现乱码情况,请教各位大佬真的不能使用38400hz和9600bps进行串口通信吗?本帖最后由 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的中断函数里接收数据,调用库函数的发送函数,到此代码就完成了
wubangmi 发表于 2024-11-14 13:29
如图所示,配置LPUART有三个步骤:1、把内部RCL=38400的频率加载进来比使能RCL
2、配置好GPIO的TX/RX功能
好的,可以发代码参考一下吗,谢谢你 距离有要求的 启用低功耗串口就行 使用9600bps会出现乱码 真的不能使用38400hz和9600bps进行串口通信吗? 学习一下啊!感觉有点知识慌了 如果在使用38400Hz系统频率下,2400bps能正常工作,而9600bps出现乱码问题,可能涉及到几个潜在的原因和解决方法。 9600bps 意味着每位数据传输时间为 104.17μs,需要精确的时钟分频。 38400Hz 系统时钟(周期 26.04μs)无法整除 104.17μs,导致分频误差累积,最终引发采样时序错误。 UART 接收时通常在每位中间位置采样(如第 7、8、9 个时钟周期),分频误差会导致采样点偏移,最终解包数据错误。
页:
[1]