打印
[技术问答]

请教NUVOTON的CANFD遵循帧率的计算公式是什么?

[复制链接]
362|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
powerantone|  楼主 | 2024-7-10 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
仲裁阶段的波特率 CAN FD Freq / (Sync_Seg + Pro_Seg + Phase_Seg1 + Phase_Seg2)数据阶段的波特率 CAN FD Freq / (Sync_Seg + Pro_Seg + Phase_Seg1 + Phase_Seg2)

这样计算有什么问题吗?为何这样配置M467的公式不对呢?

CLK_SetModuleClock(CANFD0_MODULE, CLK_CLKSEL0_CANFD0SEL_HCLK, CLK_CLKDIV5_CANFD0(10));
20MHz时钟,那么单位Tq就是50ns。

下面的计算是:1M/10M?
    psCanfd->NBTP = (3 << 25) +                 // NSJW  = 3+1 =4 CLK
                    (10 << 16) +                // NBRP  = 0+10 =10       // prescaler = 10
                    (13 << 8) +                 // NTSG1 = 13+1 =14 CLK
                    (5 - 1) ;                   // NTSG2 = 5 CLK        // One bit = 1+14+5 = 20 CLK

    // Date rate is configured as following.   If CAN frame, following code is void

    psCanfd->DBTP = ((4 - 1) << 16) +           // DBRP  = 4 prescaler
                    ((17 - 1) << 8) +           // DTSG1 = 17 CLK
                    ((3 - 1) << 4) +            // DTSG2 = 3 CLK      // One bit = 17+3 = 20 CLK
                    (3 - 1) ;                   // DSJW  = 3 CLK

使用特权

评论回复
沙发
stormwind123| | 2024-7-10 10:49 | 只看该作者
数据阶段的波特率 = CAN FD Freq / (Sync_Seg + Pro_Seg + Phase_Seg1 + Phase_Seg2)

这个公式用于计算在数据阶段CANFD总线上的数据传输速率。

使用特权

评论回复
板凳
laocuo1142| | 2024-7-10 10:50 | 只看该作者
总线负载率则反映了CANFD总线上数据传输的繁忙程度,其计算公式为:

总线负载率 = 总线每秒上传输的实际bit的总时间 / 1s * 100%

或者,对于CAN2.0来说,由于波特率是固定的,总线负载率也可以简化为:

总线负载率 = 总线每秒上传输的实际bit数量 / 总线波特率 * 100%

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

486

主题

1838

帖子

4

粉丝