This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28032:邮箱启用情况

Guru**** 2393725 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/637686/tms320f28032-mailbox-enable-situation

器件型号:TMS320F28032

您好,

CANME 寄存器 由位启用、结果影响其它邮箱的使用、代码被附加。

void vYLCanIDInit (void) //

ECANaRegs.CANME.ALL = 0x00000000;

ECANaMboxs.MBOX1.MSGCTRL.ALL = 0x00000008;  
ECANaMboxs.MBOX4.MSGCTRL.ALL = 0x00000008;  
ECANaMboxs.MBOX5.MSGCTRL.ALL = 0x00000108;

ECANaMboxs.MBOX1.MSGID.ALL = 0xc6900003;

ECanaRegs.CANME.ALL = 0x00000032;  
ECANaRegs.CANMD.ALL = 0x00000002;  


ECANaLAMRegs.LAM1.ALL = 0x81DFFFFF;  
ECanaLAMRegs.LAM4.ALL = 0x800FFFFC;
ECanaLAMRegs.LAM5.ALL = 0x800FFFFC;

 在选择此协议时初始化和通讯故障时初始化 InfyCanIDInit (void)//μ s

ECANaRegs.CANME.bit.ME2 = 0;  
ECANaRegs.CANME.bit.ME8 = 0;

ECANaMboxs.MBOX2.MSGCTRL.ALL = 0x00000008;
ECANaMboxs.MBOX8.MSGCTRL.ALL = 0x00000008;  

ECANaMboxs.MBOX2.MSGID.ALL = 0xC29A00F0;  

ECANaRegs.CANME.bit.ME2 = 1;  
ECANaRegs.CANME.bit.ME8 = 1;

ECANaRegs.CANMD.bit.MD2 = 1;  
ECANaRegs.CANMD.bit.MD8 = 0;  

ECANaLAMRegs.LAM2.ALL = 0x807FFFFF;

仿真如下。

您的建议很有用。谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    阅读您的帖子、我无法理解您的问题是什么。 查看代码片段的第一部分、我看到邮箱4和5是传输邮箱、但我看到您也在写入各自的 LAM 寄存器。 接受屏蔽过滤仅适用于接收邮箱。
     
    在第二个代码片段中、我看到您没有使用32位 R/W 例如、不允许使用以下语句:
     
    ECANaRegs.CANME.bit.ME2 = 1;
    ECANaRegs.CANME.bit.ME8 = 1;
     
    ECANaRegs.CANMD.bit.MD2 = 1;
    ECANaRegs.CANMD.bit.MD8 = 0;
     
    您需要使用影子寄存器来确保所有 R/W 为32位。 请从下载我的 app.note   并查看这些示例。 它们向您展示了如何实现32位 R/W、还有一个示例展示了接受屏蔽滤波的工作原理。