DSP的CAN通信中邮箱消息发送和接收

2025-11-05 05:41:32

1、消息发送

   

//往发送邮箱中写数据,分别写低32位4字节和高32位4字节

    ECanaMboxes.MBOX0.MDL.all = MDL;

    ECanaMboxes.MBOX0.MDH.all = MDH;

    //置位准备发送,将发送请求位置位,使能邮箱发送功能

    ECanaShadow.CANTRS.all = 0;

    ECanaShadow.CANTRS.bit.TRS0 = 1;           

    ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

    do

    {

    ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;

    } while(ECanaShadow.CANTA.bit.TA0 == 0 ); //当邮箱的消息被成功发送时,发送应答位TA将置1

    ECanaShadow.CANTA.bit.TA0 == 1;  //写1清零,准备判别下一次发送与否

   

2、消息的接收

    struct ECAN_REGS ECanaShadow;

    ECanaShadow.CANRMP.all = ECanaRegs.CANRMP.all;

   

do{}

    while(ECanaShadow.CANRMP.bit.RMP1 != 1 );//当接收消息成功时,接收待决位RMP0置位为1

    ECanaShadow.CANRMP.bit.RMP1 = 1;//接收消息待决位通过写1清零

    ECanaRegs.CANRMP.all=ECanaShadow.CANRMP.all;

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢