主题中讨论的其他器件:TMS320F28335
工具/软件:Code Composer Studio
大家好
我有2个设备、两个都是从设备(因此我从显示器发送0x80心跳信号)
两个器件都发送了 Candata:Device1:0x181、0x281、0x381、0x481... Device2:0x182、0x281、 0x382 0x482
我有16个邮箱作为 RX
这是屏蔽的示例代码
/*为 Rx 邮箱定义本地接受屏蔽*/
for (i=0;<CAN_RX_MAILBOXES;i++))
{
P_LAM_reg =&ECanaLAMRegs.LAM0 + I;//指向每个本地接受屏蔽的指针*
(* p_lam_reg).bit.Lami = 0;//仅标准标识符(作为 MBOX 自有标识符)*/// Lami = 1;标准和11位扩展时
(* p_lam_reg).bit.LAM_L = 0x0000;
if (i > 12)/*邮箱13-15 */
(* p_lam_reg).bit.LAM_H = 0x0604;//忽略11位标识符中的位0、7和8
/*对于 ID = 0x000 (NMT)、0x080 (SYNC)和0x100 (时间戳)以及0x81状态变化*有效
否则(I > 9)/*邮箱10-12 */
(* p_lam_reg).bit.LAM_H = 0x0600;//节点99中的 TPDO1 */
否则,如果(i < 6)/*邮箱0-5 */
(* p_lam_reg).bit.LAM_H = 0x1E04;//仅此节点 ID 的消息(忽略位0)*/
else /*邮箱6-9 */
(* p_lam_reg).bit.LAM_H = 0x0C00;//仅此节点 ID 的 PDO1和2消息*/
}
我不明白
为什么 /*邮箱0-5 */
* p_lam_reg).bit.LAM_H = 0x1E04;…… 0x1E04;0-5邮箱中的这个值意味着什么
邮箱6-9 */
(* p_lam_reg).bit.LAM_H = 0x0C00;…… 0x0C00;6-9邮箱中的这个值意味着什么
邮箱10-12 */
(* p_lam_reg).bit.LAM_H = 0x0600;... 0x0600在10-12个邮箱中此值的含义是什么
邮箱13-15 */
(* p_lam_reg).bit.LAM_H = 0x0604;... 0x0604这个来自13-15个邮箱的值是什么意思
此屏蔽正在将 CANbus 数据发送到 Display
但现在我想进行新的屏蔽以在2个器件之间进行通信、我的意思是、当 Device1发送 Candata 时、应该在器件2中接收 cantus 帧 PDOS
就像我可以从 device1读取0x181到 device2、从 device2读取0x182到 device1一样、因此我不需要进行新的屏蔽、但我想了解如何读取