工作模式:
eCAN模块由两种工作模式,SCC模式和eCAN模式。SCC模式是eCAN模式的简化功能模式,该模式只有16个邮箱(邮箱号0-15)可用;没有时间标记功能,可用的接收屏蔽寄存器数目也少。该模式为默认状态。工作模式通过寄存器CANMC的第13位(SBC)来选择。
2、eCAN模块的复用GPIO口设置
两个eCAN模块A、B对应的IO口设置有多种选择。模块A对应的IO口有GPIO30和GPIO31、GPIO18和GPIO19两种选择。模块B对应的IO口有GPIO8和GPIO10、GPIO12和GPIO13、GPIO16和GPIO17、GPIO20和GPIO21四种选择。在IO口初始化时要注意一定要和实际的接口定义对应。在TI的CAN例程中已经完整的给出了这些IO口的初始化语句,选择要使用的语句保留,不使用的语句注释掉即可。
3、CAN通讯波特率设置
通过位时序配置寄存器CANBTC对通讯波特率进行设置。
设置步骤:
System clock: f_sys = 150 MHz
CAN clock:f_can = f_sys / 2 = 75 MHz
CAN clock period:t_can = 1 / f_can = 13.3333333 ns
Actual bit rate = 1 Mbit/s
Actual bit time = 1000 ns
CAN bus length = 10 m, with 5 ns/m signal delay time.
Propagation delay time : 2 * ( transceiver loop delay + bus line delay ) = 400 ns
BRP reg = 4
BRP = BRP reg + 1 = 5(5分频)
CAN time quantum: tq = 5 * t_can = 66.6666667 ns
Actual bit time = 15 tq = 1000 ns
Prop_Seg = 8 tq > 400ns.
Sync_Seg = 1 tq .
Phase_seg1 + Phase_Seg2 = (15 – 8 – 1 ) tq = 6 tq
Phase_seg1 = 3 tq; Phase_Seg2 = 3 tq
1. If Phase_Seg1 + Phase_Seg2 is even, then Phase_Seg2 = Phase_Seg1. If the sum is odd, Phase_Seg2 = Phase_Seg1 + 1.
2. Phase_Seg2 should be at least 2 tq.
Bit_time = Prop_Seg + Sync_Seg + Phase_seg1 + Phase_seg2 = 15 tq
TSEG1 = Prop_Seg + Phase_seg1 = 11 tq
TSEG1 reg = TSEG1 – 1 =10
TSEG2 = Phase_seg2 = 3 tq
TSEG2 reg = TSEG2 – 1 = 2
具体参考TI的手册或者程序。
4、CAN通讯例子使用USBCAN卡和开发板进行CAN通讯。
设置3个邮箱,两个发送邮箱(邮箱号24,25),一个接收邮箱(邮箱号26);
发送邮箱24:用于发送两路ADC转换的结果值;
发送邮箱25:用于持续发送固定帧;
接收邮箱26:接收指定消息帧。
工作模式:
eCAN模块由两种工作模式,SCC模式和eCAN模式。SCC模式是eCAN模式的简化功能模式,该模式只有16个邮箱(邮箱号0-15)可用;没有时间标记功能,可用的接收屏蔽寄存器数目也少。该模式为默认状态。工作模式通过寄存器CANMC的第13位(SBC)来选择。
2、eCAN模块的复用GPIO口设置
两个eCAN模块A、B对应的IO口设置有多种选择。模块A对应的IO口有GPIO30和GPIO31、GPIO18和GPIO19两种选择。模块B对应的IO口有GPIO8和GPIO10、GPIO12和GPIO13、GPIO16和GPIO17、GPIO20和GPIO21四种选择。在IO口初始化时要注意一定要和实际的接口定义对应。在TI的CAN例程中已经完整的给出了这些IO口的初始化语句,选择要使用的语句保留,不使用的语句注释掉即可。
3、CAN通讯波特率设置
通过位时序配置寄存器CANBTC对通讯波特率进行设置。
设置步骤:
System clock: f_sys = 150 MHz
CAN clock:f_can = f_sys / 2 = 75 MHz
CAN clock period:t_can = 1 / f_can = 13.3333333 ns
Actual bit rate = 1 Mbit/s
Actual bit time = 1000 ns
CAN bus length = 10 m, with 5 ns/m signal delay time.
Propagation delay time : 2 * ( transceiver loop delay + bus line delay ) = 400 ns
BRP reg = 4
BRP = BRP reg + 1 = 5(5分频)
CAN time quantum: tq = 5 * t_can = 66.6666667 ns
Actual bit time = 15 tq = 1000 ns
Prop_Seg = 8 tq > 400ns.
Sync_Seg = 1 tq .
Phase_seg1 + Phase_Seg2 = (15 – 8 – 1 ) tq = 6 tq
Phase_seg1 = 3 tq; Phase_Seg2 = 3 tq
1. If Phase_Seg1 + Phase_Seg2 is even, then Phase_Seg2 = Phase_Seg1. If the sum is odd, Phase_Seg2 = Phase_Seg1 + 1.
2. Phase_Seg2 should be at least 2 tq.
Bit_time = Prop_Seg + Sync_Seg + Phase_seg1 + Phase_seg2 = 15 tq
TSEG1 = Prop_Seg + Phase_seg1 = 11 tq
TSEG1 reg = TSEG1 – 1 =10
TSEG2 = Phase_seg2 = 3 tq
TSEG2 reg = TSEG2 – 1 = 2
具体参考TI的手册或者程序。
4、CAN通讯例子使用USBCAN卡和开发板进行CAN通讯。
设置3个邮箱,两个发送邮箱(邮箱号24,25),一个接收邮箱(邮箱号26);
发送邮箱24:用于发送两路ADC转换的结果值;
发送邮箱25:用于持续发送固定帧;
接收邮箱26:接收指定消息帧。
本例只是一个简单的CAN总线收发程序,实现了CAN总线的消息收发。
|