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.
//////////////RX 配置////////////////////////////////
void Init_CAN_RX0(void)
{
/* Write to the MSGID field *///ID(0x0C0A88EF)
EALLOW;
ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all;
ECanaShadow.CANRIOC.bit.RXFUNC = 1; //RXI/O控制
ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all;
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
ECanaShadow.CANMC.bit.SCB = 1; //选择eCAN模式,将32个邮箱寄存器全部使用起来
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
ECanaMboxes.MBOX1.MSGCTRL.all = 0x00000000;//此语句含邮箱号,可以修改
//以下状态或标志寄存器通过写1清零//
ECanaRegs.CANTA.all= 0xFFFFFFFF;
ECanaRegs.CANRMP.all= 0xFFFFFFFF;
// ECanaRegs.CANGIF0.all= 0xFFFFFFFF;
// ECanaRegs.CANGIF1.all= 0xFFFFFFFF;
ECanaShadow.CANME.all = ECanaRegs.CANME.all; //配置标识符ID,写标识符前必须关闭使能位
ECanaRegs.CANME.bit.ME1= 0;
//ECanaShadow.CANGAM.all = 0x0;
ECanaMboxes.MBOX1.MSGID.all = 0x0C0A88EF; // Extended Identifier:标准或扩展 地址
ECanaMboxes.MBOX1.MSGID.bit.IDE= 1; //1:扩展帧
ECanaMboxes.MBOX1.MSGID.bit.AME= 1; //1:使用相应的接收屏蔽位
ECanaMboxes.MBOX1.MSGID.bit.AAM= 0; //0:正常发送模式
ECanaLAMRegs.LAM1.all = 0x0C0A88EF; //接收屏蔽寄存器
/* Configure Mailbox under test as a Transmit mailbox邮箱方向寄存器即配置邮箱为发送0或接受1 */
ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
ECanaShadow.CANMD.bit.MD1 = 1;
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
/* Enable Mailbox under test 邮箱使能寄存器 1使能 0禁止 */
ECanaShadow.CANME.all = ECanaRegs.CANME.all;
ECanaShadow.CANME.bit.ME1 = 1;
ECanaRegs.CANME.all = ECanaShadow.CANME.all;
/* Write to DLC field in Master Control reg 配置发送字节数*/
ECanaMboxes.MBOX1.MSGCTRL.bit.DLC = 8;
ECanaMboxes.MBOX1.MSGCTRL.bit.RTR = 0;
EDIS;
}
void CAN_RX0(void)
{
struct ECAN_REGS ECanaShadow;
ECanaShadow.CANRMP.all = ECanaRegs.CANRMP.all;
do{
CAN_RX0L = ECanaMboxes.MBOX1.MDL.all;
CAN_RX0H = ECanaMboxes.MBOX1.MDH.all;
}while(ECanaShadow.CANRMP.bit.RMP1 != 1 );//当接收消息成功时,接收待决位RMP0置位为1
ECanaShadow.CANRMP.bit.RMP1 = 1;//接收消息待决位通过写1清零
ECanaRegs.CANRMP.all=ECanaShadow.CANRMP.all;
}
怎么接收到数据不稳定,帮看下有什么问题?谢谢!此项目后期公司会批量上,紧急求助 说明:发送程序正常工作