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.

周立功can上位机往dsp28335中写数据

Other Parts Discussed in Thread: CONTROLSUITE

大家好,现在遇到一个问题想和大家交流:

问题如下,我想通过周立功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上面的信号就像被屏蔽了一样,根本看不到有跳变,只要不运行程序就能看到。

不知道上面的问题描述清楚了没有,希望大家帮忙看一看,十分感谢。

下面是上位机的附图:

  • 我就开始运行程序,结果程序一直停留在while(ECanbRegs.CANRMP.bit.RMP5!=1);我看了一下寄存器RMP也没有置为,dsp没有接到数据,我又将表笔夹在canH和canL上面,奇怪的问题出现了,再点击发送数据,两个引脚上面没有了电平跳变,只要停止运行程序

    ==============

    CANH/ CANL上没有电平跳变。此时CANH/ CANL是显性?还是隐性?你的CAN收发器是否正常?

    另外,您可以直接使用我们ControlSUITE的例程测试一下。设置F28335发送,CAN接口卡接收看看是否可以成功接收到。