查看: 1228|回复: 0

[分享] LPC546xx上CAN波特率的计算及低CAN波特率配置的问题

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32032
    最后登录
    2024-4-26
    发表于 2021-6-3 10:08:13 | 显示全部楼层 |阅读模式
    最近有客户反映LPC546xx上CAN example不太容易看懂,尤其是波特率配置:SDK默认的CAN波特率为500Kbps, 客户想改成比较低的波特率(10Kbps)总是失败,无法修改成功。


    这篇文章就来解决这个小问题。

    SDK中的CAN Example


    SDK中CAN的example主要有两个:目录位于:\SDK_2.6.0_LPCXpresso54608\boards\lpcxpresso54608\driver_examples\mcan

    分别为:
    ·Interrupt transfer
    ·loopback


    loopback为回环测试,只用一个开发环境(一套板子)就可以烧进去看现象调试。但是没有真实的CAN信号发射/接收过程。interrupt_transfer则是两个板子对传CAN帧,需要两个板子并且连接好2根跳线进行测试。具体可以看example目录下的readme说明,这里不再赘述。
    本篇文章基于interrupt_transfer代码,并且只用一个USB转CAN 转换器当作另外一套板子(小编板子也不富裕啊-_-!).硬件环境如下:
    1.png
    CAN PHY是一个CAN物理层转接小板,输入MCU的CAN_TX CAN_RX信号,输出CANH CANL信号。USB转CAN为某宝上购买的USB-CAN转换器,并且自带上了上位机,可以方便的收发CAN帧,调试比较方便。


    其中CAN PHY 连接到LPC54608评估板的J10-2(CAN_RXD)和 J10-4(CAN_TXD)上(与interrupt_transfer example一致)。硬件环境搭建非常古朴。相信接触过CAN的人一看就懂,不再多说。

    波特率配置

    SDK中默认的波特率为500Kbps,建议修改代码前先用500Kbps测试下硬件环境是不是都是OK的。


    SDK实例中并没有一个特别明确的像SetCANBaudRate这样的API,不过稍加研究就能发现,可以通过mcanConfig.baudRate来修改CAN波特率:比如我们修改为10K波特率的话,只要做如下修改即可:
    2.png
    baudRateA指的是非数据域的波特率,baudRateD指的是数据域的波特率(CANFD), 本篇文章不讨论CANFD,所以baudRateA和baudRateD都设置为一样的值,并且要在MCAN_GetDefaultConfig函数之后。


    改成这个样子下载下去后,会发现发送和接收都会失败,小编经过debug后发现,是因为波特率分频系统,无法将MCAN的输入时钟分成很准的10Khz的整倍数。所以我们需要修改MCAN的输入时钟(修改MCAN0function clock)频率
    3.png


    SDK 中对应的API是: CLOCK_SetClkDiv(kCLOCK_DivCan0Clk, 6, true); 就像注释上写的一样,SDK将MCAN0 function clock设置为30Mhz: /* Set MCAN clock 180/6=30MHz.*/


    默认的30Mhz MCAN0 function clock是无法正确产生10Kbps CAN波特率的,需要调整为1Mhz(波特率的10-100倍即可,但是要注意分频系数只能在1-255之间):
    4.png


    这样就可以顺利产生10Khz的CAN波特率了。硬件测试表明interrupt example可以正常收发CAN帧了。
    5.png
    总结


    综上所述,问题的症结在于输入时钟不是所需波特率的整数倍,不能准确分频得到目标波特率,因此需要修改输入的时钟频率。
    另外笔者发现在SDK2.7.0中是可以直接配到10K波特率并正常输出的,但是如果配成20K波特率,还是会出问题,所以必须调整MCAN的输入时钟以适配您需要的波特率。


    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 01:52 , Processed in 0.112088 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表