问答

汇集网友智慧,解决技术难题

21ic问答首页 - 华大 mcu ,串口数据无法准确收发,求助:?

华大 mcu ,串口数据无法准确收发,求助:?

noparkinghere2020-12-25


mcu 型号 HC32L176JATA-LQ48,使用单片机内部晶振,串口无法正确输出数据?


反复发送 0x68 ,无法正确接收到值,示波器上看,时钟差的也比较大。



回答 +关注 0
4654人浏览 10人回答问题 分享 举报
10 个回答
  • 看一下串口初始化函数对波特率的初始化,一般都有公式计算的,检查一下值对不对,有些是会有问题。但是内部时钟应该不会偏差太大
  • 应该是你的波特率误差
  • 看看波形是否毛刺,在其他国产MCU出现过毛刺引起UART挂了,需要复位,不知这个是否一个情况。
  • 如果实在无法解决就找华大技术支持吧
  • 本帖最后由 martinhu 于 2020-12-26 23:40 编辑

    之前有过一个中间版本的驱动库,system init函数里面没有这段代码
    913595fe7595e43ab5.png
    debug状态如果你要跑默认的时钟,main开头添加这句
    Sysctrl_SetRCHTrim(SysctrlRchFreq4MHz);
    如果断开debug的话,应该是没问题的。

    或者去官网更新一下驱动库
  • 你初始化时钟了吗?
  • 本帖最后由 forrest11 于 2020-12-26 18:40 编辑

    像这样的情况,明显和MCU时钟相关,你可以:
    1.  将MCU工作时钟,比如说,用timer分频方式输出到pin;
    2.  用示波器测量时钟,看和芯片标称频率差多少;
    3.  如果差小于5%,应该不会出现问题,要看你的串口代码
    4.  如果差大于5%,而且datasheet标明可能大于5%,那只能你自己想办法解决了,比如调整分频数。
    5.  如果差大于5%,而且datasheet标明小于5%,找华大支持解决。


  • 这应该是频率偏移太大了,应该是 双方的频率误差正好相反,另外分频值也有截取误差,看样子已经超过 10% 误差
       可以将一侧的分频值调整一下
       也可以搞 频率自适应来校正 -- 发送一个或一组波特率9600或者1200的 0xF0,测量Rxd Pin 高电平宽度,调整分频值。

12下一页

您需要登录后才可以回复 登录 | 注册