本文整理一下用EB配置S32K144单片机的CAN MCAL的时候遇到的问题及解决方案。
1. Can Counter ref
Can Counter ref是定义CAN模块引用OS的哪个counter,当工程中没有OS的时候,可以置为空,并勾选:
Can define loop as cycle
即可解决该问题。
2. Can Object ID (MB Handle)
在配置CAN HardwareObject的时候,需要先配置HRH(Receive Object),再配置HTH(TransmitObject),且所有Object的ID号(Can Object ID)需要连续,HRH的ID号从0开始排,HTH排在HRH的后面。
3. 波特率配置
在配置CAN节点波特率的时候,有这样几个计算关系需要注意:
Can Controller Prescaller 是CAN 控制器分频器,会把输入给CAN的外设频率再进行分频。
即CAN频率 = 输入外设频率 / Can Controller Prescaller
Tq(CanTimeQuantas)指一个CAN时钟周期,Tq = 1 / CAN频率
位时间 = 1 / 波特率
一个位时间中包含的Tq数量 = 位时间 / Tq = CAN频率 / 波特率
标准定义一个位时间中包含的Tq数量要在 [8, 25] 范围内,我们要通过调整外设输入频率、CAN 控制器分频器来实现特定的波特率和Tq数量要求。
下图中红框中的4个Segment值,就是指每个阶段各包含多少个Tq,所以这四个值相加应该等于上面算出来的一个位时间中所包含的Tq数量。
|