不论CAN模块何时接收到一个远程帧请求,将置位远程帧悬挂寄存器相应的CANR-FP.n位。如果存放远程帧到一个接收邮箱(AAM=0,CANMD=1),将不置位CANRFP.n位。
要防止自动应答邮箱应答远程帧请求,CPU必须通过将相应的发送请求复位位CANTRR.n置位来清除CANRFP.n标志位和CANTRS.n位。也可以通过CPU将AAM位清零来阻止模块发送信息。
如果CPU要对这些位复位而CAN模块同时要对它们置位,则将置位这些位。CPU不能中断一个正在进行的发送过程。
位31~0,RFP[31:0]:远程帧悬挂位。对于接收邮箱,如果接收了一个远程帧,将置位CANRFP.n位,而CANTRS.n位将不受影响。
对于发送邮箱,如果接收一个远程帧,将置位CANRFP.n位,并且如果邮箱的AAM为1,则将置位CANTRS.n位。邮箱的ID必须与远程帧ID相匹配。
●1:接收到远程帧请求。
●0:没有接收到远程帧请求。CPU清零寄存器。
关于远程帧的处理:
如果接收到远程帧(进入信息的RTR位(MSGCTRL.4)为1),则CAN模块将用对应的屏蔽寄存器将它的标识符与所有邮箱的标识符进行比较,比较的顺序是从最高的邮箱序号向下递减。
在标识符匹配的情况下(信息对象配置为发送邮箱且信息对象的AAM即MSGID.29位置位),标记该信息对象为准备发送(置位CANTRS.n位)。
在接收信息标识符与配置为发送邮箱的标识符相匹配但该发送邮箱的AAM位未置位的情况下,该邮箱将不会接收信息。
当在一个发送邮箱中找到匹配的标识符后将不再进行下一步的比较。(www.daowen.com)
在标识符匹配且信息对象配置为接收邮箱的情况下,信息将像数据帧一样处理,并且接受信息悬挂寄存器(CANRMP)的对应位将置位。届时,CPU将决定如何处理这种情况。
为了使CPU能改变配置为远程帧邮箱(AAM置位)中的数据,必须首先设置邮箱序号和寄存器CANMC中的改变数据请求位CDR(CANMC.8)。然后CPU可以进行访问并清除CDR位来告诉eCAN模块访问已经完成。在清除CDR位以前,禁止该邮箱发送。要改变该邮箱的标识符,首先必须将邮箱禁止(CANME.n=0)。
要使CPU能从CAN总线网络上的其他节点请求获得数据,需要将邮箱配置为接收邮箱并且将寄存器CANTRS相应位置位。在这种情况下,模块发出一个远程帧请求并且使用发送该请求的那个邮箱来接收数据帧。因此,进行远程请求仅需一个邮箱。注意,要使能远程帧发送,CPU必须将RTR(MSGCTRL.4)置位。一旦发送远程帧,CAN将清零邮箱的CANTRS位。在这种情况下,不会置位该邮箱的CANTA.n位。
信息对象n的行为由CANMD.n(CANMD.31~0)、AAM(MSGID.29)和RTR(MSGC⁃TRL.4)的配置设定。它们说明了要如何根据所期望的行为来配置信息对象。
可以配置信息对象为4种不同的情况:
1)发送信息对象仅能发送信息。
2)接收信息对象仅能接收信息。
3)请求信息对象可以发送远程帧并且等待相应数据帧。
4)回复信息对象可以在接收到相同标识符的远程帧时发送数据帧。
注:当一个配置为请求模式的信息对象成功发送了一个远程帧发送请求时,CANTA寄存器不会置位,并且不产生中断。当接收到远程回复信息时,信息对象的行为与配置为接收模式的信息对象相同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。