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.
我开始使用 DSP TMS320F28335进行 CAN 工作。 我在 controlSUITE 中看到了 CAN 的示例程序。
我已经根据我的电路更改了 GPIO 引脚、除了它之外、我还没有更改程序中的任何内容。
当我运行这个程序时、我不会在 CAN 引脚(CANH、CANL)上获得任何数据或信号。 我正在使用收发器。
下面的示例程序是"eCAN_A_TO_ECANB"、我不理解程序中的几个方面。
1) 1)根据我的理解、如果没有其他节点、则可以进入循环并持续发送数据。 然后、我们在 CANH 和 CANL 引脚上观察到一些波形(信号)、我对吗?
2) 2)通过连接 DSP 的 CANA (CANH、CANL)和 CANB (CANA、CANL)引脚、我们可以测试该程序吗? 如果可以、我们需要修改程序、即我们需要启用 CANB 并在 GID、MD、ME 中写入值。 我是对还是不对?
3) 3)程序的名称是"ECANA to ECANB"、那么为什么我们不为 ECANB 的 MD、ME、GID 等指定值? 是否不需要它们?
/*写入 MSGID 字段*/
ECANaMboxs.MBOX25.MSGID.ALL = 0x95555555;//扩展标识符
/*将被测邮箱配置为发送邮箱*/
ECanaShady.CANMD.all = ECanaRegs.CANMD.all;
ECanaShady.CANMD.bit.MD25 = 0;
ECANaRegs.CANMD.ALL = ECANaShady.CANMD.ALL;
/*启用受测邮箱*/
ECanaShady.CANME.ALL = ECanaRegs.CANME.ALL;
ECanaShading.CANME.bit.ME25 = 1;
ECanaRegs.CANME.ALL = ECanaShadure.CANME.ALL;
/*写入主控寄存器中的 DLC 字段*/
ECANaMboxs.MBOX25.MSGCTRL.bit.DLC = 8;
/*写入邮箱 RAM 字段*/
ECANaMboxs.MBOX25.MDL.ALL = 0x55555555;
ECANaMboxs.MBOX25.MDH.ALL = 0x55555555;
/*开始传输*/
对于(i=0;i < TXCOUNT;i++)
{
ECanaShady.CANTRS.ALL = 0;
ECanaShady.CANTRS.bit.TRS25 = 1;//为待测试的邮箱设置 TRS
ECANaRegs.CANTRS.ALL = ECANaShady.CANTRS.ALL;
操作
{
ECanaShady.Canta.all = ECanaRegs.Canta.all;
} while (ECanaShading.Canta.bit.TA25 =0);//等待 TA5位被置位。
ECanaShading.Canta.all = 0;
ECanaShady.Canta.bit.TA25 = 1;//清除 TA5
ECanaRegs.Canta.all = ECanaShady.Canta.all;
循环计数++;
}
_asm (" ESTOP0");//在此处停止
}