Thread 中讨论的其他器件: controlSUITE
我开始使用 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");//在此处停止
}