仲裁阶段的波特率 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
|