华大HC32L110C6UA系统时钟频率和串口波特率问题请教
本帖最后由 JacksonChen 于 2024-11-12 11:14 编辑各位大佬好,刚接触华大芯片,小白一枚,请教一下如何在HC32L110C6UA的低功耗串口下使用外部低速32.768kHz系统时钟下,配置串口波特率是9600,虽然从网上搜过资料了解到9600波特率下使用外部低速时钟的误差率是44%,但是产品需要用到的蓝牙模块最低的波特率设置是9600,所以请教一下大佬们这个应该如何解决呢?
-----------------------------后续---------------------------
根据华大例程修改为使用38400hz系统时钟后,能够进行输出打印了,但是在9600波特率下仍会有数据中断接收乱码情况,得降到2400波特率下数据接收才正常。但是后续使用的蓝牙模块最低的波特率配置是9600,请教下大家应该如何解决在9600波特率下正常接收中断数据。
//9600波特率接收乱码情况
//2400波特率接收正常情况
上来先批评你,不要死脑筋,大家都告诉你不能用了你就不要继续掉坑里去,要听劝。
L110不能用外部32768作为低功耗串口的时钟源,不然误码率大根本收不到正确的数据,如果你用的外部低频晶振是38400HZ的,那你可以用。
当然低功耗串口最大的波特率也不能超过9600,波特率再往上,就用不了啦,至于为什么用不了是有关串口时钟源和采样1bit用几个clock的问题,这里不讨论。
给你的建议就是外部挂一个32768的晶振,内部38400的晶振也使能,低功耗串口用内部38400作为时钟源。把L110的时钟校准模块(clktrim)用起来,在你需要的时间节点校准一次内部的38400,保你平安无事。 你好!在HC32L110C6UA芯片上使用外部低速32.768kHz系统时钟配置串口波特率为9600时,确实会遇到较大的误差问题。
由于32.768kHz时钟频率较低,直接用于配置9600波特率会导致较大的误差率(约44%),这通常会导致通信不稳定。
HC32L110C6UA芯片内部有一个高频时钟(如HRC或LRC),可以用来配置串口波特率。虽然这会增加功耗,但可以确保波特率的准确性。
如果外部条件允许,可以使用一个外部高频时钟(如32MHz)来配置串口波特率。这样可以确保波特率的准确性,同时降低误差。
如果必须使用32.768kHz时钟,可以考虑使用分频器来调整时钟频率,使其更接近9600波特率所需的频率。例如,可以将32.768kHz分频为16.384kHz,然后再进行进一步的分频。
如果蓝牙模块支持其他波特率,可以尝试调整波特率,使其更接近32.768kHz时钟的倍数。例如,尝试使用4800或19200波特率,看看是否能满足需求。
在HC32L110C6UA芯片上使用外部低速32.768kHz时钟配置串口波特率为9600时,误差较大,通常会导致通信不稳定。建议使用内部高频时钟(如HRC)或外部高频时钟来配置串口波特率,以确保波特率的准确性。如果必须使用32.768kHz时钟,可以考虑使用分频器或调整波特率,使其更接近32.768kHz时钟的倍数。
我觉得不行吧,你还是换成内部的高速时钟吧
我觉得用个外部的高精度晶振应该也是可以的啊
其实就是误码率比较大,你要是能接受,其实我也不建议,因为根本不稳定 据华大例程修改为使用38400hz系统时钟后,能够进行输出打印了 你提到在2400波特率下能够正常接收数据,这是因为误差相对较小,数据接收更加稳定。 蓝牙模块可以调整波特率吧?误差大,还要用9600,你就不担心数据收发不稳定带来的问题? 波特率一般由主时钟经过一系列分频得到 要看选择的时钟下的波特率误差有多大。 选择一个误差小的时钟频率比较合适。 可以发下修改的代码吗,我就是使用外部32.768K的时钟,不不知道配置是否正确,因为使用串口的时候没有打印出数据,邮箱2328744952@qq.pom,谢谢
页:
[1]