信息邮箱是一块RAM区域,在接收后或在发送前的CAN信息都存放在该区域。CPU可以像访问通用数据存储器那样,来使用未存储信息邮箱的RAM区域。
每一个邮箱包括:
1)信息标识符。
●扩展标识符为29位。
●标准标识符为11位。
2)标识符扩展位,IDE(MSGID.31)。
3)接收屏蔽使能位,AME(MSGID.30)。
4)自动应答模式位,AAM(MSGID.29)。
5)远程发送请求位,RTR(MSGCTRL.4)。
6)数据长度代码,DLC(MSGCTRL.3~0)。
7)高达8B的数据域。
8)发送优先级,TPL(MSGCTRL寄存器的位12~8)。
每一个邮箱都可以配置为4种信息对象类型之一,见表12-2。发送和接收的信息对象用于一个发送者和多个接收者间的数据交换(1~n个通信链接),而请求和回复信息对象用于一对一的通信链接方式。
表12-2 信息对象配置
表12-3列出了邮箱RAM的分布。每个邮箱由信息标识寄存器(MSGID)、信息控制寄存器(MSGCTRL)及4×16位的存储空间组成。这些空间用于存储发送的数据帧或接收到的数据帧,每个邮箱最大可存储8B数据(两个32位寄存器CANMDL、CANMDH分别存储低4B和高4B)。(www.daowen.com)
表12-3 邮箱RAM的分布
(续)
(1)发送邮箱
CPU将要发送的数据存储在配置为发送邮箱的邮箱中。如果已经通过设置相应的CANME寄存器的位n而将该邮箱使能,且相应的CANTRS.n位已置1,那么在向邮箱RAM写入数据和标识符后就会发送信息。
如果多个邮箱配置为发送邮箱,并且相应的CANTRS.n位都置1,则信息按邮箱优先级的顺序从高到低逐个发送。
在标准模式下,邮箱发送的优先级按邮箱的序号排列。最高邮箱序号(=15)代表最高发送优先级。
在eCAN模式中,邮箱发送的优先级取决于信息控制寄存器(MSGCTRL)中TPL位域的设置,最先发送TPL为最大值的邮箱。当两个邮箱的TPL寄存器中的值相同时,邮箱序号大的先发送。
如果由于失去仲裁或出错而导致发送失败,将重新发送信息。在重新发送前,CAN模块要检测是否有其他发送要求,然后发送最高优先级的邮箱的内容。
(2)接收邮箱
接收到的每一条信息的标识符都要通过屏蔽验证,将其与保存在接收邮箱中的标识符相比较。当两个标识符相同时,接收的标识符、控制位及数据字节都写入匹配的邮箱的RAM中。同时,相应的接收信息悬挂位CANRMP.n(CANRMP.31~0)置位,并且如果中断已使能就将产生一个接收中断。如果标识符没有匹配,信息则不存储。
当接收到一条信息时,信息控制器开始寻找一个匹配的邮箱序号最大的邮箱。在标准模式下eCAN的邮箱15有最高接收优先级;在eCAN模式下,eCAN的邮箱31有最高接收优先级。
在读数据后,必须通过CPU复位CANRMP.n(CANRMP.31~0)。如果该信箱接收到第二条信息,并且接收信息悬挂位已经置位,则相应的信息丢失位CANRML.n(CANRML.31~0)会置位。在这种情况下,如果过写保护位CANOPC.n(CANOPC.31~0)清零,则新的数据将覆盖已经存储的信息。否则,将寻找下一个邮箱。
如果一个邮箱配置为接收邮箱并且已置位RTR位,则该邮箱可以发送一个远程帧。一旦发送远程帧,CAN模块将清零该邮箱的CANTRS位。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。