理论教育 邮箱设置寄存器详解

邮箱设置寄存器详解

时间:2023-06-15 理论教育 版权反馈
【摘要】:每个邮箱都包含下述4个32位寄存器:●MSGID:信息标识符寄存器,存储信息ID。如果IDE位为0,将存放信息标识符到ID寄存器的28~18位。此时,ID寄存器的位17~0无意义。DBO位的设置决定被存储数据的顺序。仅在配置邮箱n为发送或邮箱禁止时,可以写寄存器CABMDLn和CANMDHn。

邮箱设置寄存器详解

每个邮箱都包含下述4个32位寄存器:

●MSGID:信息标识符寄存器,存储信息ID。

●MSGCTRL:定义字节数,发送优先级和数据帧。

●CANMDL:数据的低4B。

●CANMDH:数据的高4B。

(1)信息标识符寄存器MSGID(Message Identifier Register)

信息标识符寄存器(MSGID)包含了邮箱的信息ID(标识符)和其他控制位。

位31,IDE:标识符扩展位。字符的IDE位的功能将根据AMI位的值而变化:

●当AMI=1时:接收邮箱的IDE位不起作用,并且将覆盖发送信息的IDE位。为了接收信息,必须满足滤波标准。用于比较的位的数量由发送信息IDE位的值决定。

IDE=1:接收的信息有扩展标识符。

IDE=0:接收的信息有标准标识符。

●当AMI=0时:接收邮箱的IDE位设定了要进行比较的位数。为了接收信息,MSGID必须逐位匹配。用于比较的位的数量由发送信息IDE位的值决定。

IDE=1:接收的信息必须有扩展标识符。

IDE=0:接收的信息必须有标准标识符。

位30,AME:接收屏蔽使能位。AME位仅用于接收邮箱。对于自动回复邮箱(AAM=1,CANMD.n=0),不能置位该位,否则,邮箱的行为将是不确定的。信息接收不会改变该位。

●1:使用相应的接收屏蔽。即接收邮箱可以接收与它的标识符不符的信息。

●0:不使用接收屏蔽,要接收信息,所有的标识符位都必须匹配。

位29,AAM:自动应答模式位。仅在信息邮箱配置为发送时该位有效。对于接收邮箱,该位无效,邮箱总是配置为接收。信息接收不会改变该位。

●1:自动应答模式。如果接收到一个匹配的远程请求,CAN模块通过发送该邮箱的内容来应答远程请求。

●0:正常发送模式。邮箱不应答远程请求。远程帧的接收不影响信息邮箱。

位28~0,ID寄存器的位28~0:信息标识符。

●1:在标准标识符模式。如果IDE位(MSGID.31)为0,将存放信息标识符到ID寄存器的28~18位。此时,ID寄存器的位17~0无意义。

●0:在扩展标识符模式。如果IDE位(MSGID.31)为1,将存放信息标识符到ID寄

存器的28~0位。(www.daowen.com)

CPU访问邮箱:

只有在邮箱禁止时(CANME.n=0),CPU才能对标识符进行写入操作。在CPU访问数据域的时候,在CAN模块读取数据域时要求数据绝对不改变是不容易的。因此,禁止对接收邮箱数据域的写入操作。

对于发送邮箱,如果置位CANTRS.n或CANTRR.n标志位,通常拒绝访问。在这种情况下,可能产生中断。访问这些邮箱的方法之一是在访问邮箱数据之前将CDR(CANMC.8)位置位。

CPU访问完成后,CPU必须向CDR标志位写入0来清除它。CAN模块在读邮箱以前或以后检查该标志位。如果CDR标志位在检查过程中被置位,CAN模块将不发送信息,而是继续寻找其他发送请求。将CDR标志位置位也可以阻止拒绝写中断(WDI)的申请。

(2)信息控制寄存器MSGCTRLn(Message Control Register)

对于发送邮箱,信息控制寄存器指定了要发送的字节数和发送优先级,而且也确定了远程帧的操作。作为CAN模块初始化过程的一部分,在初始化各个位域的值之前应该先将MSGCTRLn寄存器的所有位初始化为0。

该寄存器仅在邮箱n配置为发送(CANMD.n=0)或禁止(CANME.n=0)时可写入。

位31~13、位7~5,保留位。

位12~8,TPL:发送优先级(Transmit-priority level)。这5位定义该邮箱与其他31个邮箱相比较的优先级。最大邮箱序号具有最高优先级。当两个邮箱具有相同优先级时,具有更大邮箱序号的将发送。TPL仅用于发送邮箱。在标准模式,不使用TPL。

位4,RTR:远程发送请求位。

●1:对于接收邮箱,如果置位CANTRS位,将发送远程帧,并且对应的数据帧将被同一个邮箱接收。一旦发送远程帧,CAN将清零邮箱的CANTRS位。对于发送邮箱,如果置位CANTRS位,将发送远程帧,但对应的数据帧将被另一个邮箱接收。

●0:没有远程帧请求。

位3~0,DLC:数据长度代码。该4位的二进制数字设定了发送或接收几个字节的数据。有效值范围是0~8。值9~15是不允许的。

(3)信息数据寄存器CANMDL,CANMDH(Message Data Registers)

邮箱有8个字节用来存储CAN信息的数据域。DBO位(CANMC.10)的设置决定被存储数据的顺序。数据从字节0开始通过CAN总线发送或接收。

●当DBO=1时,数据的存储和读取都从CANMDL寄存器的最低有效字节开始,到CANMDH寄存器的最高有效字节结束。

●当DBO=0时,数据的存储和读取都从CANMDL寄存器的最高有效字节开始,到

CANMDH寄存器的最低有效字节结束(默认)。

仅在配置邮箱n为发送(CANMD.n=0)或邮箱禁止(CANME.n=0)时,可以写寄存器CABMDLn和CANMDHn。如果CANTRS.n=1,则不能写CANMDLn和CANMDHn,除非CDR=1(CANMC.8)并且MBNR(CANMC.4~0)设为n。这种设置也用于应答模式的信息对象配置(AAM=1)。

当DBO=0时,CANMDL的字节分布如下:

当DBO=0时,CANMDH的字节分布如下:

当DBO=1时,CANMDL的字节分布如下:

当DBO=1时,CANMDH的字节分布如下:

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

我要反馈