[技术问答] 请教NUVOTON的CANFD遵循帧率的计算公式是什么?

[复制链接]
 楼主| 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%
温室雏菊 发表于 2024-8-23 15:11 | 显示全部楼层
NUVOTON的CANFD控制器遵循CAN FD(Flexible Data-rate)协议,其帧率计算公式如下:帧率 = 1 / (传输时间 + 传播时间)
月亮一键变蓝 发表于 2024-8-23 18:00 | 显示全部楼层
传输时间一般指的是数据帧在总线上传输的时间,取决于数据帧的长度和总线速率。
她已醉 发表于 2024-8-23 20:00 | 显示全部楼层
传播时间,指的是数据帧在总线上传播的时间,取决于总线的物理特性和拓扑结构。
将爱藏于深海 发表于 2024-8-23 22:00 | 显示全部楼层
帧率表示了CAN FD总线上数据帧的发送频率。在设计CAN FD网络时,需要考虑帧率以及总线的带宽,以确保数据帧能够及时传输并不会造成总线拥堵。
在曼谷的春 发表于 2024-8-24 02:00 | 显示全部楼层
具体的帧率计算公式可以根据具体的CAN FD总线参数和网络拓扑结构来确定,您可以参考NUVOTON提供的CAN FD控制器技术手册或相关文档,了解更详细的帧率计算方法和参数设置。
未说出口的像你 发表于 2024-8-24 04:00 | 显示全部楼层
在CAN FD协议中,计算波特率的公式是根据以下参数来确定的:同步段(Sync_Seg)传播段(Prop_Seg)相位段1(Phase_Seg1)相位段2(Phase_Seg2)根据这些参数,可以计算出仲裁阶段和数据阶段的波特率。
一只眠羊 发表于 2024-8-24 06:00 | 显示全部楼层
通常情况下,仲裁阶段和数据阶段的波特率可以分别计算,而不需要将它们合并在一起计算。对于仲裁阶段的波特率,通常使用以下公式计算:[ \text{仲裁阶段波特率} = \frac{\text{CAN FD Freq}}{\text{Sync_Seg} + \text{Prop_Seg} + \text{Phase_Seg1} + \text{Phase_Seg2}} ]
温室雏菊 发表于 2024-8-24 12:00 | 显示全部楼层
对于数据阶段的波特率,通常使用以下公式计算:[ \text{数据阶段波特率} = \frac{\text{CAN FD Freq}}{\text{Sync_Seg} + \text{Prop_Seg} + \text{Phase_Seg1} + \text{Phase_Seg2}} ]
春日负喧 发表于 2024-8-24 15:00 | 显示全部楼层
如果您在配置M467时使用了以上公式,但是计算结果不正确,可能是参数设置错误,确保Sync_Seg、Prop_Seg、Phase_Seg1和Phase_Seg2的数值设置正确,符合CAN FD协议的要求。
失物招領 发表于 2024-8-24 17:00 | 显示全部楼层
时钟频率设置,确保CAN FD Freq参数设置正确,与实际的时钟频率一致。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

676

主题

3894

帖子

4

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

676

主题

3894

帖子

4

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