我现在测试的是Ti官方的ecan_a_to_b例程,,用的是28346和28335两块开发板,但是程序一直卡在}while(ECanaShadow.CANRMP.bit.RMP25 != 1 );这一句,之前看论坛的时候发现好多前辈也遇到了这个问题但是都没有给出解决办法;我给CAN_RX0L和CAN_RX0H初始化为0,程序没有跑通,但是值改变了,
下面是接收程序
ECanaMboxes.MBOX25.MDL.all = 0x00;
ECanaMboxes.MBOX25.MDH.all = 0x00;
CAN_RX0L = ECanaMboxes.MBOX25.MDL.all;
CAN_RX0H= ECanaMboxes.MBOX25.MDH.all;
struct ECAN_REGS ECanaShadow;
ECanaShadow.CANRMP.all = ECanaRegs.CANRMP.all;
do{
CAN_RX0L = ECanaMboxes.MBOX25.MDL.all;
CAN_RX0H = ECanaMboxes.MBOX25.MDH.all;
}while(ECanaShadow.CANRMP.bit.RMP25 != 1 );//当接收消息成功时,接收待决位RMP0置位为1
ECanaShadow.CANRMP.bit.RMP25 = 1;//接收消息待决位通过写1清零
ECanaRegs.CANRMP.all=ECanaShadow.CANRMP.all;
Hank Zhao:
你需要确保发送message和接收message的MSGID是相匹配的,还有这两个板子有没有接can transceiver。
我现在测试的是Ti官方的ecan_a_to_b例程,,用的是28346和28335两块开发板,但是程序一直卡在}while(ECanaShadow.CANRMP.bit.RMP25 != 1 );这一句,之前看论坛的时候发现好多前辈也遇到了这个问题但是都没有给出解决办法;我给CAN_RX0L和CAN_RX0H初始化为0,程序没有跑通,但是值改变了,
下面是接收程序
ECanaMboxes.MBOX25.MDL.all = 0x00;
ECanaMboxes.MBOX25.MDH.all = 0x00;
CAN_RX0L = ECanaMboxes.MBOX25.MDL.all;
CAN_RX0H= ECanaMboxes.MBOX25.MDH.all;
struct ECAN_REGS ECanaShadow;
ECanaShadow.CANRMP.all = ECanaRegs.CANRMP.all;
do{
CAN_RX0L = ECanaMboxes.MBOX25.MDL.all;
CAN_RX0H = ECanaMboxes.MBOX25.MDH.all;
}while(ECanaShadow.CANRMP.bit.RMP25 != 1 );//当接收消息成功时,接收待决位RMP0置位为1
ECanaShadow.CANRMP.bit.RMP25 = 1;//接收消息待决位通过写1清零
ECanaRegs.CANRMP.all=ECanaShadow.CANRMP.all;
cuiling qi:
回复 Hank Zhao:
ECanaMboxes.MBOX25.MSGID.all = 0x95555555; // Extended Identifier
我MSGID都是设置的这个,can transceiver也都有,这个做CAN测试的时候需要电源共地吗?