工具/软件:Code Composer Studio
您好!
我正在尝试从 TMS320F28069向 Linux 计算机发送 CAN 消息。 MCU 上的代码如下所示、基本上先设置 GPIO 和 CAN 时序、然后在发送之前设置 CAN 消息。
我遇到的问题是 Linux 计算机可以获取消息内容、在下面的情况下是4字节数据计数器递增、但看不到消息 ID。 是否有一个工作示例来展示如何设置
控制器和消息对象、可以随 CAN ID 一起发送消息?
谢谢。
Linux 计算机输出:
接口= CAN0、系列= 29、类型= 3、PROTO= 1
0x000>[4] 78 56 34 12.
0x000>[4] 00 00 00 00
0x000>[4] 01 00 00 00
0x000>[4] 02 00 00 00
0x000>[4] 03 00 00 00 00
0x000>[4] 04 00 00 00
0x000>[4] 05 00 00 00
0x000>[4] 06 00 00 00
0x000>[4] 07 00 00 00
0x000>[4] 08 00 00 00
0x000>[4] 09 00 00 00
TMS320F28069代码:
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO30 = 0;//启用 GPIO30的上拉电阻(CANRXA)
GpioCtrlRegs.GPAPUD.bit.GPIO31 = 0;//启用 GPIO31的上拉电阻(CANTXA)
GpioCtrlRegs.GPAQSEL2.bit.GPIO30 = 3;//针对 GPIO30的异步 qual (CANRXA)
GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1;//为 CANRXA 操作配置 GPIO30
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1;//为 CANTXA 操作配置 GPIO31
EDIS;
ECANaMboxs.MBOX0.MSGCTRL.ALL = 0x00000000;//清除控制;
ECANaRegs.CANME.ALL = 0;
ECANaMboxs.MBOX0.MSGID.ALL = 0x000000A1;//消息 ID
ECANaRegs.CANMD.ALL = 0x00000000;//为 Tx 配置邮箱0、为 Rx 配置邮箱1
ECanaRegs.CANME.ALL = 0x00000001;//启用邮箱
ECANaMboxs.MBOX0.MSGCTRL.ALL = 0x00000004;//要发送4位
ECANaMboxs.MBOX0.MDL.ALL = 0x12345678;//实际数据
EALLOW;
ECANaRegs.CANMIM.ALL = 0x0000000;//中断使能1、禁用0
ECANaRegs.CANMC.ALL = 0x00001400;//配置 CAN 进行配置
ECANaRegs.CANMC.ALL = 0x00001400;//配置 CAN 进行配置
ECANaRegs.CANMC.ALL = 0x00001400;//配置 CAN 进行配置
ECANaRegs.CANBTC.ALL = 0x0004011A;// BRPreg 4、TSEG1reg 3、TSEGreg 2、Sam 0、 SJW 1.
ECANaRegs.CANMC.ALL = 0x00000400;//可以完成配置
ECANaRegs.CANMC.ALL = 0x00000400;//可以完成配置
ECANaRegs.CANMC.ALL = 0x00000400;//可以完成配置
ECANaRegs.CANTIOC.ALL = 0x00000008;//正在使用 Tx 引脚
ECANaRegs.CANRIOC.ALL = 0x00000008;//正在使用 Tx 引脚
EDIS;
int i = 0;
对于(i =0;i < 100;i ++)
{
ECANaMboxs.MBOX0.MDL.ALL = I;
ECANaRegs.CANTRS.ALL = 0x00000001;//为发送邮箱设置 TRS
while (ECanaRegs.Canta.all!= 0x0000001){}//等待所有 Tan 位被置位。
ECanaRegs.Canta.all = 0x00000001;//清除所有 Tan
DELAY_US (100000);
}
