大家好,现在遇到一个问题想和大家交流:
问题如下,我想通过周立功can往28335中写数据,首先,第一步,我想确定一下在上位机界面上点击发送数据时,can芯片的高低引脚上面有没有电平跳变,我看到有波形、电平跳变,第二步配置接收信箱,具体配置如下
EALLOW;
ECanbShadow.CANME.all = ECanbRegs.CANME.all; //1、disable the mailbox clear CANNME.5=0;
ECanbShadow.CANME.bit.ME5 = 0;
ECanbRegs.CANME.all = ECanbShadow.CANME.all;
ECanbMboxes.MBOX5.MSGID.all = 0x9555AAA5; / 2、Load the message identifier (MSGID) register of the mailbox.
ECanbShadow.CANMD.all = ECanbRegs.CANMD.all;
ECanbRegs.CANMD.bit.MD5 = 1; //3、writing 1 configure mailbox5 for receiving
ECanbRegs.CANMD.all = ECanbShadow.CANMD.all;
ECanbMboxes.MBOX5.MSGCTRL.bit.DLC = 8; // 4、 data length
ECanbMboxes.MBOX5.MSGCTRL.bit.RTR = 0;
ECanbShadow.CANMIL.all = ECanbRegs.CANMIL.all;
ECanbShadow.CANMIL.bit.MIL5 = 0; //5、 Line 0
ECanbRegs.CANMIL.all = ECanbShadow.CANMIL.all;
EALLOW;
ECanbShadow.CANGIM.all = ECanbRegs.CANGIM.all;
ECanbShadow.CANGIM.bit.I0EN = 1; //6、enable Line 0
ECanbRegs.CANGIM.all = ECanbShadow.CANGIM.all;
ECanbShadow.CANMIM.all = ECanbRegs.CANMIM.all;
ECanbShadow.CANMIM.bit.MIM5 = 1;
ECanbRegs.CANMIM.all = ECanbShadow.CANMIM.all;
ECanbShadow.CANME.all = ECanbRegs.CANME.all;
ECanbShadow.CANME.bit.ME5 = 1; // 7、set the mailbox5 enable
ECanbRegs.CANME.all = ECanbShadow.CANME.all;
EDIS;
现在的问题是,我不运行程序时,在上位机上点击发送数据,在canH和canL的上可以看到有电平在跳变,所以我感觉这两个引脚上面有电平调变了,我就开始运行程序,结果程序一直停留在while(ECanbRegs.CANRMP.bit.RMP5!=1);我看了一下寄存器RMP也没有置为,dsp没有接到数据,我又将表笔夹在canH和canL上面,奇怪的问题出现了,再点击发送数据,两个引脚上面没有了电平跳变,只要停止运行程序,点击发送数据,就会看到有电平跳变。
我很是不理解,我自己推测我现在是JTAG烧写程序,因为can也可以烧写程序,在程序运行时,dsp拒接接收来自外部的信息,所以无论怎么发送数据,canH和canL上面的信号就像被屏蔽了一样,根本看不到有跳变,只要不运行程序就能看到。
不知道上面的问题描述清楚了没有,希望大家帮忙看一看,十分感谢。
下面是上位机的附图: