下面说明eCAN模块的初始化过程并介绍eCAN模块的配置步骤:
CAN模块使用前必须先进行初始化。初始化只能在模块初始化模式下完成。
通过编程使CCR=1(主控寄存器(CANMC)的位12)即设置为初始化模式。仅在CCE=1(CANES寄存器的位4)时可执行初始化,然后才可以写配置寄存器。
对于SCC模式而言,为了修改全局接收屏蔽寄存器(CANGAM)和SCC模式的两个局部接收屏蔽寄存器(LAM0和LAM3),也必须在初始化模式设置CAN模块。
通过编程使CCR(主控寄存器(CANMC)位12)==0后,将再次激活CAN模块。硬件复位后,激活初始化模式。
注:初始化模式,正常模式,以及异常模式间的转换与CAN网络同步。即CAN控制器在改变模式前一直等待,直到它探测到总线空闲(11个隐形位)为止。如果总线固定在显性位这种错误,CAN控制器不能探测到总线空闲,因此不能完成模式的转换。
1. CAN的位时间配置
CAN协议规范把名义上的位时间分为4段:
SYNC_SEG 该位时间段是用来使总线上的不同节点同步的。它期望有一个边缘,且总有一个时间当量(TQ,TIME QUANTUM)。
PROP_SEG 该位时间是用来补偿网络中的物理延时时间的。它为信号在总线上的传播时间,位输入比较器延时时间及输出驱动延时时间综合的两倍。该位时间可以编程位1-8个时间当量(TQ)。
PHASE_SEG1 该位时间是用来补偿正边缘相位错误的。它可以编程为1-8个时间当量(TQ),并且可以通过重同步来延长。
PHASE_SEG2 该位时间是用来补偿负边缘相位错误的。它可以编程为2-8个时间当量(TQ),并且可以通过同步来缩短。
2.CAN波特率的计算
波特率用每秒传送的位来计算。
3.EALLOW保护
为了避免无意中修改操作,eCAN模块中一些重要的寄存器和某些位受EALLOW保护。这些寄存器和位只有接触EALLOW保护后才能修改。以下是eCAN模块中受保护的寄存器和位:
CANMC[15-9]和[7-6]
CANBTC[23-16]和[10-0]
CANGIM[17-16]、[14-8]和[2-0]
CANMIM[31-0]
CANTSC[31-0]
CANTIOC[3]
CANRIOC[3]