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.

[参考译文] TMS320F28388D:TMS320F28388D:关于 28388D 中 CAN 的问题

Guru**** 2513185 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1561627/tms320f28388d-tms320f28388d-questions-about-can-in-the-28388d

器件型号:TMS320F28388D


工具/软件:

工程师(您好)。

我对 CAN 有疑问。  

我写道 my_can.c my_can.h 然后调用函数 my_can_init my_can_receive 、和 my_can_transmit 中导出 main_cpu1.c
我还在中正确地声明了 MEMORY 和 SECTIONS 命令 文件、但如附件中所示、它仍然显示未分配内存。

如何解决此问题?

我正在连接 my_can.c 工程。

/*
* my_can.c
*
*创建日期:2025 年。 8.23.
*作者: 82102.
*/
#include “my_can.h"</s>“
//#包含“can.h"</s>“

#define TXCOUNT 100000

#define MSG_DATA_LENGTH 8.
#define TX_MSG_OBJ_ID 1
#define RX_MSG_OBJ_ID 1
#define TX_MSG_ID 0x100
#define RX_MSG_ID 0x100

取消 my_can_init();
vid my_can_transmit ();
vid my_can_receive ();


Volatile 无符号长整型 i;

Uint16_t txMsgData[8];
uint16_t rxMsgData[8];

// CAN 设置


取消 my_can_init ()

// GPIO_setPadConfig (70、GPIO_PIN_TYPE_PULLUP);//在 GPIO30 上启用上拉
// GPIO_setPinConfig (GPIO_70_CANA_RX);// GPIO30 = CANRXA
// GPIO_setPadConfig (71、GPIO_PIN_TYPE_PULLUP);//在 GPIO31 上启用上拉
// GPIO_setQualificationMode (71、GPIO_QUAL_ASYNC);//异步输入
// GPIO_setPinConfig (GPIO_71_CANA_TX);// GPIO31 = CANTXA


//-->初始化 CAN 控制器
can_initModule (cana_base);

//<--初始化 CAN 控制器


//<-将每个模块的 CAN 总线比特率设置为 500kbps
//有关如何设置的信息、请参阅驱动程序库用户指南
//更严格的时序控制。 此外、请查阅器件数据表
//有关 CAN 模块时钟的更多信息。
//
CAN_setBitRate (Cana_base、DEVICE_SYSCLK_FREQ、500000、16);

//-->初始化用于接收 CAN 消息的接收消息对象。
//可能的标志:can_msg_obj_no_flags、can_msg_obj_use_EXT_filter,
// can_msg_obj_use_DIR_FILTER
//初始化用于发送 CAN 消息的发送消息对象。
//消息对象参数:
// CAN 模块:a.
//消息对象标识号:1.
//消息标识符:55
//消息帧:标准
//消息类型:传输
//消息 ID 掩码:0x0
//消息对象标志:无
//消息数据长度:4 个字节

can_setupMessageObject (cana_base、TX_MSG_OBJ_ID、TX_MSG_ID、
CAN_MSG_FRAME_STD、CAN_MSG_OBJ_TYPE_TX、0、
CAN_MSG_OBJ_NO_FLAGS、MSG_DATA_LENGTH);


//-->初始化用于接收 CAN 消息的接收消息对象。
//消息对象参数:
// CAN 模块:b.
//消息对象标识号:1.
//消息标识符:33
//消息帧:标准
//消息类型:接收
//消息 ID 掩码:0x0
//消息对象标志:接收中断
//消息数据长度:4 个字节
//
can_setupMessageObject (cana_base、RX_MSG_OBJ_ID、RX_MSG_ID、
CAN_MSG_FRAME_STD、CAN_MSG_OBJ_TYPE_RX、0、
CAN_MSG_OBJ_NO_FLAGS、MSG_DATA_LENGTH);

//<--初始化要发送的发送消息对象数据缓冲区
txMsgData[0]= 0x12;
txMsgData[1]= 0x34;
txMsgData[2]= 0x56;
txMsgData[3]= 0x78;
//-->初始化要发送的发送消息对象数据缓冲区


//<--启动 CAN 模块 B 操作
can_startModule (cana_base);
//can_enableTestMode (cana_base、can_test_LBACK);
//-->启动 CAN 模块 B 操作

}

foid my_can_transmit ()

//-->用户代码
//使传输的消息数据中的值递增。
//

can_sendMessage (Cana_base、TX_MSG_OBJ_ID、MSG_DATA_LENGTH、txMsgData);
txMsgData[0]+= 0x01;
// txMsgData[1]+= 0x01;
// txMsgData[2]+= 0x01;
// txMsgData[3]+= 0x01;

//如果超过一个字节、则重置数据
//
if (txMsgData[0]> 0xFF)

txMsgData[0]= 0;
}
if (txMsgData[1]> 0xFF)

txMsgData[1]= 0;
}
if (txMsgData[2]> 0xFF)

txMsgData[2]= 0;
}
if (txMsgData[3]> 0xFF)

txMsgData[3]= 0;
}
//<--用户代码
}

foid my_can_receive ()

//获取收到的消息
//
can_readMessage (cana_base、RX_MSG_OBJ_ID、rxMsgData);
rxMsgCount ++;

}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yerim:

    CCS 中的“Memory Allocation“视图仅反映链接器命令中使用的系统存储器。  在设置 CAN 模块时、它不能反映消息 RAM 存储器。

    此致、

    Joseph