理论教育 深入了解主控制寄存器CANMC

深入了解主控制寄存器CANMC

时间:2023-06-15 理论教育 版权反馈
【摘要】:主控制寄存器用于CAN模块的设置。CANMC寄存器的一些位受EALLOW保护。该位置位后,CPU必须等待直到CANES寄存器的CCE标志为1,才能对寄存器CANBTC操作。当CAN控制器处于脱离CAN总线状态,ABO位为0时,将把该位置位。只有配置寄存器CANBTC被设置到允许值时才执行。在发送该帧之后CANTEC将被相应修改。在进入悬挂状态前,寄存器CANREC将被相应地修改。在悬挂状态期间,不修改寄存器CANTEC和CANREC。

深入了解主控制寄存器CANMC

主控制寄存器用于CAN模块的设置。CANMC寄存器的一些位受EALLOW保护。对于读/写操作,仅支持32位访问。

位31~17,保留位。

位16,SUSP:仿真悬挂操作位。该位决定了CAN模块在悬挂模式(仿真停止如断点或单步执行)下的操作。

●1:FREE模式,即CAN外设继续运行不受仿真悬挂影响。CAN节点正常通信(发送应答、生成错误帧、发送/接收数据)。

●0:SOFT模式,即一旦仿真悬挂,把当前的信息完全发送完毕才关闭CAN外设。

位15,MBCC:邮箱时间标志定时器清零位。该位在标准模式下保留,受EALLOW保护。

●1:邮箱16成功发送和接收信息后,时间标志定时器复位为0。

●0:时间标志定时器不复位。

位14,TCC:时间标志定时器的MSB清零位。该位在标准模式下保留,受EALLOW保护。

●1:时间标志定时器的MSB复位为0。内部逻辑的一个时钟周期后TCC位复位。

●0:时间标志定时器不变。

位13,SCB:标准模式兼容位。该位在标准模式下保留,受EALLOW保护。

●1:选择eCAN模式。

●0:eCAN工作在标准模式(Standard CAN Controller,SCC)。

位12,CCR:改变配置请求位。受EALLOW保护。

●1:CPU要求对标准模式下配置寄存器CANBTC和接收屏蔽寄存器(CANGAM,LAM(0)和LAM(3))写操作。该位置位后,CPU必须等待直到CANES寄存器的CCE标志为1,才能对寄存器CANBTC操作。当CAN控制器处于脱离CAN总线状态,ABO位为0时,将把该位置位。清除该位可退出脱离总线状态。

●0:CAN控制器请求正常工作。只有配置寄存器CANBTC被设置到允许值时才执行。

位11,PDR:掉电模式请求位。该位受EALLOW保护。从低功耗模式唤醒后,由eCAN模块自动清除。

●1:请求局部掉电模式。

●0:未请求局部掉电模式(正常工作)。

位10,DBO:数据字节顺序位。该位选择信息数据域的字节顺序。受EALLOW保护。

●1:首先接收或发送数据的最低有效字节。

●0:首先接收或发送数据的最高有效字节(默认)。

位9,WUBA:总线活动唤醒位。受EALLOW保护。

●1:探测到任何总线活动之后,模块将脱离掉电模式。 (www.daowen.com)

●0:仅在向PDR位写入0后,模块脱离掉电模式。

位8,CDR:改变数据域请求位。该位允许快速更新数据信息。

●1:CPU请求对邮箱通过MBNR寄存器的位4~0(CANMC.4~0)指定的数据域进行写操作。在访问邮箱后,CPU必须将CDR位清零。当CDR位置位时,模块不发送该邮箱内容。在从邮箱读取数据并存放到发送缓存器之前或之后,状态机构检查CDR位。

注:如果置位邮箱的CANTRS位,然后通过CDR位改变邮箱中数据,则CAN模块发送新数据将失败,而用旧的数据来代替。要避免这种情况,使用该邮箱的CANTRR.n位来重新发送,并且将CANTRS.n位重新置位。届时,将发送新的数据。

●0:CPU请求正常操作。

位7,ABO:总线自动开启位。受EALLOW保护。

●1:总线关闭后,当接收到128×11个隐性位时,模块自动回到总线开启状态。

●0:不动作。

位6,STM:自测试模式位。受EALLOW保护。

●1:模块在自测试模式。在该模式下,CAN模块产生自己的应答信号(ACK),从而在总线不连接到模块的情况下使能操作。信息没发送,但是可以读回并存放在对应的邮箱。

●0:模块在正常模式。

位5,SRES:软件复位位。该位仅可以写,读出为0。

●1:对该寄存器的写操作将使模块被软件复位(所有参数,除了被保护的寄存器将复位为它们的默认值)。不修改邮箱内容和错误计数器。为了不使通信混乱,将取消悬挂的和正在进行的发送。

●0:无效。

位4~0,MBNR:邮箱序号。MBNR的位4仅用于eCAN模式,在标准模式下保留。CPU要求对其数据域进行写操作的邮箱序号。该数据区域用于连接CDR位。

CAN模块悬挂(SUSPEND)模式下的动作:

1)如果CAN总线没有通信且要求悬挂模式,节点将进入悬挂模式。

2)如果CAN总线正在通信且要求悬挂模式,节点将在正在发送的帧完成后进入悬挂模式。

3)如果节点正在发送,当悬挂模式被要求时,在获得应答后,它将进入悬挂状态。如果它没有获得应答或有一些其他的错误,它将发送一个错误帧然后进入悬挂状态。寄存器CANTEC也因此被改变。在第二种情况下(也就是在发送一个错误帧之后暂停),节点将在脱离暂停状态后重新发送原始帧。在发送该帧之后CANTEC将被相应修改。

4)如果节点正在接收,当悬挂模式被要求时,节点将在发送了应答位之后进入悬挂状态。如果有任何错误,节点将发送一个错误帧并且进入悬挂状态。在进入悬挂状态前,寄存器CANREC将被相应地修改。

5)如果CAN总线没有通信且悬挂模式被要求取消,节点将退出悬挂状态。

6)如果CAN总线正在通信且悬挂模式被要求取消,节点将在总线空闲后退出悬挂状态。因此,节点不接收任何“部分”帧,它可能导致出错帧。

7)当节点处于悬挂状态时,它将不参与发送或接收任何数据。因此没有发送任何错误帧或应答位。在悬挂状态期间,不修改寄存器CANTEC和CANREC。

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

我要反馈