CANFD SSP Offset计算方式
-
MCAL 的代码中默认是使用了 ETDC 的。所以 Offset 主要是由寄存器 ETDC[ETDCOFF] 控制,其单位是 "protocol engine (PE) clock periods", 与 Tq 存在一个分频系数的倍数。
一般需要配置成这样的参数:ETDC[ETDCOFF] = (CAN_EDCBT[DTSEG1] + 2) * (EPRS[EDPRESDIV] + 1)
而在代码中是这样给 CAN_EDCBT[DTSEG1] 寄存器值的:
上图中的
CanFdPropSeg
和CanFdSeg1
都是配置界面中的值。ETDC[ETDCOFF] 寄存器的值是这样给的:所以配置界面中的 Ssp 的计算应该为:
(CanControllerPropSeg + CanControllerSeg1 - 1 + 2) * (CanControllerPreDiv - 1 + 1)
-
jiankang_wang SSP这个理解了,根据这个公式实际算出来就是15,那么关于采样点SP和QuantaNum的关系呢
-
如图:
-
jiankang_wang 那就是QuantaNum = 𝑃𝑅𝑂𝑃𝑆𝐸𝐺+𝑃𝑆𝐸𝐺1+𝑃𝑆𝐸𝐺2+1 = 7+7+5+1=20,符合下图中QuantaNum,但是将𝑃𝑅𝑂𝑃𝑆𝐸𝐺 𝑃𝑆𝐸𝐺1 𝑃𝑆𝐸𝐺2代入到SP公式:
𝑆𝑃 = (𝐶𝑇𝑅𝐿1[𝑃𝑅𝑂𝑃𝑆𝐸𝐺] + 𝐶𝑇𝑅𝐿1[𝑃𝑆𝐸𝐺1] + 3)/(𝐶𝑇𝑅𝐿1[𝑃𝑅𝑂𝑃𝑆𝐸𝐺] + 𝐶𝑇𝑅𝐿1[𝑃𝑆𝐸𝐺1] + 𝐶𝑇𝑅𝐿1[𝑃𝑆𝐸𝐺2] + 4)
是算不出来75%的
-
-
配置界面中的值不是写入到寄存器的值,在用来计算 SP 的时候,是不需要再手动加 1 的。
-
MCAL的代码中,设置波特率用的不是 CTRL1 寄存器,而是 ENCBT 和 EDCBT,这一点从前文我给的代码也可以看出来。
-
根据上一条给的定义,实际上应该是这样的计算:
-
-
jiankang_wang 好的,谢谢支持!
-
jiankang_wang 再请教一下,这个SSP可以关闭吗,若关闭的话,那么SSP是有默认值或者自动适配功能吗。
-
MCAL的代码中,如果开启了BRS,SSP是必须开启的。
需要关闭的话用户自行更改。需要注意的是,MCAL中的SSP是由TDC和Offset两部分组成的。TDC一般由硬件计算,Offset由用户指定。
关闭SSP可以修改 ETDCEN 位为 0。Offset的话,按照手册说明,在复位后置BTE后为1:
-
jiankang_wang 如果开启了BRS,SSP关掉了会有什么影响吗
-
如果开启了BRS,关掉SSP,并且数据段的波特率过高的话,会出现位错误。
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...