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 帧增加问题

Guru**** 2608615 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1279975/can-frame-adding-issue

主题中讨论的其他器件:TM4C1294NCPDT

你(们)好。

我使用的是 TM4C1294NCPDT 微控制器。 我将数据从一个 PCB 传输到另一个 PCB。 并使用 CAN 通信协议接收数据。

我的问题是、我从使用的 CAN 传输数据、这个 CAN 帧包含8个字节。 我决定添加更多帧。 例如:

CAN 初始化:

空 CAN1_Initialize (空)
{
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
GPIOPinConfigure (GPIO_PB0_CAN1RX);
GPIOPinConfigure (GPIO_PB1_CAN1TX);
GPIOPinTypeCAN (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);

SysCtlPeripheralEnable (SYSCTL_Periph_CAN1);
CANInit (CAN1_base);
CANRetrySet (CAN1_base、true);
CANBitRateSet (CAN1_base、g_ui32SysClkFreq、500000);
CANIntRegister (CAN1_base、CAN1IntHandler);
CANIntEnable (CAN1_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
IntEnable (INT_CAN1);
CANEnable (CAN1_base);

G_CAN1MsgRx.ui32MsgID = CAN1RXID;
G_CAN1MsgRx.ui32MsgIDMask = 0;
G_CAN1MsgRx.ui32Flags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;
G_CAN1MsgRx.ui32MsgLen = sizeof (g_ui8CAN1RxData);
CANMessageSet (CAN1_base、CAN1RXOBJECT、&g_CAN1MsgRx、MSG_OBJ_TYPE_RX);

CAN 传输:

void CAN1_Tx_function (void)
{
if (((g_CAN1MsgRx.ui32MsgID >= 51)&(g_CAN1MsgRx.ui32MsgID <= 60))
{
uint8_t ui8Count=0;
uint8_t * CAN1_Tx_msgDataPtr;

CAN1_Tx_msgDataPtr =(uint8_t *)&g_ui8CAN1TxData;
for (ui8Count=0;ui8Count<sizeof (g_ui8CAN1TxData);ui8Count++)
{
G_ui8CAN1TxData[0]= Configuration_No;
G_ui8CAN1TxData[1]= Request_Reply;
G_ui8CAN1TxData[2]=状态;
G_ui8CAN1TxData[3]= Attempt_Count Return;
G_ui8CAN1TxData[4]= Clearer_Yarn_Status;
G_ui8CAN1TxData[5]= Clearer_Status_Ready;
G_ui8CAN1TxData[6]= Fault_Event;
G_ui8CAN1TxData[7]= Fault_Length;

我必须添加更多数据来传输另一个 PCB。 如何添加另一个 CAN 帧、请引导我或搜索我以获取有关添加 CAN 帧的任何示例。

如果我必须继续   g_ui8CAN1TxData[8]=保留;或者添加 新的帧,如何添加。 请告诉我解决方案  

提前感谢。

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

    您好!

     [编辑2023年10月12日]

     可支持高达 64位 有效载荷、即每帧8字节。 请参考 C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\can 中的 multi_tX.c 和 multi_rx.c。 这两个示例说明了如何设置用于发送和接收的多个消息对象。   

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

    您好!

     我没有听到你的回应。 正如我提到过的、CAN 有效载荷只有8个字节。 如果您需要使用相同的仲裁 ID 传输更多数据、那么只需加载具有不同数据的负载即可。 如果您想发送不同的仲裁 ID、那么您可以使用不同的消息对象。