上图的都是支持的,只不过低于125Kbps的比较少见用到,但也是有人有这个需求的,毕竟速率底就会使得抗干扰更强,传输距离更远。
为什么TSMaster的仲裁段和数据段设置同样的波特率,他们的相位seg1 seg2要设置不一样呢?
这个是 CAN 控制器 IP 核寄存器决定的,你会发现数据段 FD 模式下,seg1 seg2 可设置的范围是不一样的;如下图
仲裁段PSC 1~512
仲裁段SJW 1~128
仲裁段seg1可以设置到1~256
仲裁段seg2可以设置到1~128
数据段PSC 1~32
数据段SJW1~16
数据段seg1只能设置到1~32
数据段seg2只能设置到1~16
#defineIS_FDCAN_NOMINAL_PRESCALER(PRESCALER)(((PRESCALER)>=1U)&&((PRESCALER)<=512U))#defineIS_FDCAN_NOMINAL_SJW(SJW)(((SJW)>=1U)&&((SJW)<=128U))#defineIS_FDCAN_NOMINAL_TSEG1(TSEG1)(((TSEG1)>=1U)&&((TSEG1)<=256U))#defineIS_FDCAN_NOMINAL_TSEG2(TSEG2)(((TSEG2)>=1U)&&((TSEG2)<=128U))#defineIS_FDCAN_DATA_PRESCALER(PRESCALER)(((PRESCALER)>=1U)&&((PRESCALER)<=32U))#defineIS_FDCAN_DATA_SJW(SJW)(((SJW)>=1U)&&((SJW)<=16U))#defineIS_FDCAN_DATA_TSEG1(TSEG1)(((TSEG1)>=1U)&&((TSEG1)<=32U))#defineIS_FDCAN_DATA_TSEG2(TSEG2)(((TSEG2)>=1U)&&((TSEG2)<=16U))波特率由三个决定:seg1 seg2 和分频系数。只要这三个下发给下位机就可以。
注意这里的can的波特率125Kbps = 0.125M,不用进行1024这样的换算。