理论教育 eCAN模块的初始化方法优化

eCAN模块的初始化方法优化

时间:2023-06-15 理论教育 版权反馈
【摘要】:eCAN模块使用前必须先进行初始化。图12-5的流程图给出了初始化的过程。图12-5 初始化流程图通过编程使CCR=1即设置为初始化模式。仅在CCE=1时可执行初始化。所以可得下式:位时间=TSEG1+TSEG2+13.当SYSCLK为60MHz时的时间参数选择当CPU时钟频率SYSCLKOUT=60MHz时,2803x的eCAN模块的时钟频率为30MHz。

eCAN模块的初始化方法优化

eCAN模块使用前必须先进行初始化。初始化只能在模块初始化模式下完成。图12-5的流程图给出了初始化的过程。

978-7-111-57271-8-Chapter12-42.jpg

图12-5 初始化流程图

通过编程使CCR=1(CANMC.12)即设置为初始化模式。仅在CCE=1(CANES.4)时可执行初始化。然后才可以写配置寄存器。

注意初始化模式、正常模式及异常模式间的转换与CAN网络同步,即CAN控制器在改变模式前一直等待,直到它探测到总线空闲(11个隐性位)为止。如果总线固定在显性这种错误时,CAN控制器不能探测到总线空闲,因此不能完成模式的转换。

对于标准模式而言,为了修改全局接收屏蔽寄存器(CANGAM)和标准模式的两个局部接收屏蔽寄存器(LAM(0)和LAM(3)),也必须在初始化模式设置CAN模块。

通过编程使CCR=0后,将再次激活模块。硬件复位后,激活初始化模式。

如果CANTBC寄存器编程为0值或初始值,CAN将再也离不开初始化模式。也就是说,当清除CCR位时,CCE位(CANES.4)将保持为1。

1.CAN的位时间配置

CAN协议规范把名义上的位时间区分为4个不同的时间段。

SYNC_SEG:这一位时间段用来使总线上的不同节点同步。该时间段期望有一个边沿,且该时间段总有一个时间量化长度(TQ)。

PROP_SEG:这一位时间段用来补偿网络中的物理延时时间。它为信号在总线上传播时间、输入比较器延时时间及输出驱动延时时间总和的两倍。该时间段可以编程为1~8个TQ。

PHASE_SEG1:这一位时间段用来补偿正边沿相位误差。该时间段可以编程为1~8个TQ,并且可以通过重同步来延长该时间段。

PHASE_SEG2:这一位时间段用来补偿负边沿相位误差。该时间段可以编程为2~8个TQ,并且可以通过重同步来缩短该时间段。

在eCAN模块中,CAN总线一个位的长度由参数TSEG1(CANBTC.6~3),TSEG2(CANBTC.2~0)和BRP(CANBTC.23~16)设定。CAN的位时间分配如图12-6所示。

978-7-111-57271-8-Chapter12-43.jpg

图12-6 CAN的位时间分配

按照CAN协议的定义,TSEG1是PROP_SEG和PHASE_SEG1两个时间段的总和。TSEG2定义时间段PHASE_SEG2的长度。

信息处理时间(IPT)对应着读取位操作所必需的时间,IPT对应于2个TQ。

当决定位域值的时候必须满足以下位时间规则:

●TSEG1min≥TSEG2。

●IPT≤TSEG1≤16TQ。

●IPT≤TSEG2≤8TQ。

●IPT=3/BRP(所得的IPT结果需要四舍五入)。(www.daowen.com)

●1TQ≤SJW≤min[4TQ,TSEG2](SJW=同步跳转宽度)。

●要采用3点采样模式,必须选择BRP≥5。

2.CAN波特率的计算

CAN控制器位速率即波特率用每秒传送的位数来计算,方法如下:

位速率=(SYSCLKOUT/2)/(BRP×位时间)

式中,位时间(BitTime)是每一位的时间量化长度(TQ)的值;SYSCLKOUT/2是eCAN模块的时钟频率,CPU时钟频率为SYSCLKOUT;BRP=BRPreg+1,BRPreg是CANBTC寄存器的位23~16的二进制值。

位时间定义如下:

位时间=(TSEG1reg+1)+(TSEG2reg+1)+1

式中,TSEG1reg和TSEG2reg代表CANBTC寄存器中对应位写入的值。当CAN模块访问参数TSEG1reg、TSEG2reg、SJWreg和BRPreg时,它们都将自动加1。所以可得下式:

位时间=TSEG1+TSEG2+1

3.当SYSCLK为60MHz时的时间参数选择

当CPU时钟频率SYSCLKOUT=60MHz时,2803x的eCAN模块的时钟频率为30MHz。

若选择TSEG1reg=10,TSEG2reg=2,则位时间=(TSEG1reg+1)+(TSEG2reg+1)+1=15,若分别取BRPreg+1=2,4,40,则可以得到位速率分别为1Mbit/s、500Kbit/s、100Kbit/s。

若选择TSEG1reg=6,TSEG2reg=1,则位时间=(TSEG1reg+1)+(TSEG2reg+1)+1=10,若分别取BRPreg+1=3,6,30,则可以得到位速率分别为1Mbit/s、500Kbit/s、100Kbit/s。

4.EALLOW保护

为了避免无意中修改操作,eCAN模块中一些重要的寄存器和某些位受EALLOW保护。这些寄存器和位只有在解除EALLOW保护后才能修改。以下是eCAN模块中受EALLOW保护的寄存器和位:

●CANMC.15~9和CANMC.7~6。

●CANBTC。

●CANGIM。

●CANMIM.31~0。

●CANTSC.31~0。

●CANTIOC.3。

●CANRIOC.3。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈