[技术问答] 华大HC32L110C6UA系统时钟频率和串口波特率问题请教

[复制链接]
6295|22
 楼主| JacksonChen 发表于 2024-10-30 17:18 | 显示全部楼层 |阅读模式
本帖最后由 JacksonChen 于 2024-11-12 11:14 编辑

各位大佬好,刚接触华大芯片,小白一枚,请教一下如何在HC32L110C6UA的低功耗串口下使用外部低速32.768kHz系统时钟下,配置串口波特率是9600,虽然从网上搜过资料了解到9600波特率下使用外部低速时钟的误差率是44%,但是产品需要用到的蓝牙模块最低的波特率设置是9600,所以请教一下大佬们这个应该如何解决呢?
-----------------------------后续---------------------------
根据华大例程修改为使用38400hz系统时钟后,能够进行输出打印了,但是在9600波特率下仍会有数据中断接收乱码情况,得降到2400波特率下数据接收才正常。但是后续使用的蓝牙模块最低的波特率配置是9600,请教下大家应该如何解决在9600波特率下正常接收中断数据。

//9600波特率接收乱码情况
133416732c75d10977.png

//2400波特率接收正常情况
154346732c7c2e4355.png
wubangmi 发表于 2024-10-30 17:28 | 显示全部楼层
上来先批评你,不要死脑筋,大家都告诉你不能用了你就不要继续掉坑里去,要听劝。

L110不能用外部32768作为低功耗串口的时钟源,不然误码率大根本收不到正确的数据,如果你用的外部低频晶振是38400HZ的,那你可以用。

当然低功耗串口最大的波特率也不能超过9600,波特率再往上,就用不了啦,至于为什么用不了是有关串口时钟源和采样1bit用几个clock的问题,这里不讨论。

给你的建议就是外部挂一个32768的晶振,内部38400的晶振也使能,低功耗串口用内部38400作为时钟源。把L110的时钟校准模块(clktrim)用起来,在你需要的时间节点校准一次内部的38400,保你平安无事。

评论

@wubangmi 好吧,谢谢你  发表于 2024-10-31 09:22
@JacksonChen :LPUART的低功耗模式和普通模式配置不一样,你要仔细看用户手册  发表于 2024-10-31 09:05
哦哦好的,我原本是有打印输出调试语句的,可是为什么将系统时钟频率改到38400之后就没有输出打印了,timer = LPUart_SetBaudRate(sclk , stcLpuart_clk.enSclk_Prs , &stcBaud);这里面的sclk是38400,还有其他什么地方需要修改的吗  发表于 2024-10-30 17:47
tax2r6c 发表于 2024-11-11 23:46 | 显示全部楼层
你好!在HC32L110C6UA芯片上使用外部低速32.768kHz系统时钟配置串口波特率为9600时,确实会遇到较大的误差问题。

lix1yr 发表于 2024-11-12 07:37 | 显示全部楼层
由于32.768kHz时钟频率较低,直接用于配置9600波特率会导致较大的误差率(约44%),这通常会导致通信不稳定。

p0gon9y 发表于 2024-11-12 08:23 | 显示全部楼层
HC32L110C6UA芯片内部有一个高频时钟(如HRC或LRC),可以用来配置串口波特率。虽然这会增加功耗,但可以确保波特率的准确性。

q1d0mnx 发表于 2024-11-12 09:33 | 显示全部楼层
如果外部条件允许,可以使用一个外部高频时钟(如32MHz)来配置串口波特率。这样可以确保波特率的准确性,同时降低误差。

q1ngt12 发表于 2024-11-12 11:41 | 显示全部楼层
如果必须使用32.768kHz时钟,可以考虑使用分频器来调整时钟频率,使其更接近9600波特率所需的频率。例如,可以将32.768kHz分频为16.384kHz,然后再进行进一步的分频。

liu96jp 发表于 2024-11-12 12:48 | 显示全部楼层
如果蓝牙模块支持其他波特率,可以尝试调整波特率,使其更接近32.768kHz时钟的倍数。例如,尝试使用4800或19200波特率,看看是否能满足需求。

cen9ce 发表于 2024-11-12 13:55 | 显示全部楼层
在HC32L110C6UA芯片上使用外部低速32.768kHz时钟配置串口波特率为9600时,误差较大,通常会导致通信不稳定。建议使用内部高频时钟(如HRC)或外部高频时钟来配置串口波特率,以确保波特率的准确性。如果必须使用32.768kHz时钟,可以考虑使用分频器或调整波特率,使其更接近32.768kHz时钟的倍数。

ex7s4 发表于 2024-11-12 14:11 | 显示全部楼层
我觉得不行吧,你还是换成内部的高速时钟吧

lamanius 发表于 2024-11-12 16:16 | 显示全部楼层
我觉得用个外部的高精度晶振应该也是可以的啊

su1yirg 发表于 2024-11-12 19:11 | 显示全部楼层
其实就是误码率比较大,你要是能接受,其实我也不建议,因为根本不稳定
慢动作 发表于 2025-1-31 11:51 | 显示全部楼层
据华大例程修改为使用38400hz系统时钟后,能够进行输出打印了
突然下起雨 发表于 2025-2-25 15:30 | 显示全部楼层
你提到在2400波特率下能够正常接收数据,这是因为误差相对较小,数据接收更加稳定。
suncat0504 发表于 2025-2-26 22:53 | 显示全部楼层
蓝牙模块可以调整波特率吧?误差大,还要用9600,你就不担心数据收发不稳定带来的问题?
地瓜patch 发表于 2025-2-28 12:25 来自手机 | 显示全部楼层
波特率一般由主时钟经过一系列分频得到
gejigeji521 发表于 2025-2-28 15:06 | 显示全部楼层
要看选择的时钟下的波特率误差有多大。
gejigeji521 发表于 2025-2-28 15:06 | 显示全部楼层
选择一个误差小的时钟频率比较合适。
12345QWERASDF 发表于 2025-6-12 16:09 | 显示全部楼层
可以发下修改的代码吗,我就是使用外部32.768K的时钟,不不知道配置是否正确,因为使用串口的时候没有打印出数据,邮箱2328744952@qq.pom  ,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

26

帖子

0

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