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.

[参考译文] TM4C1294NCPDT:添加更多 CAN 帧

Guru**** 2391415 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/1428056/tm4c1294ncpdt-add-more-can-frames

器件型号:TM4C1294NCPDT

工具与软件:

你(们)好。

我使用 TM4C1294NCPDT 微控制器。 使用 CAN 控制器将数据从一个 PCB 传输到另一个 PCB。 这里、我添加了我的 CAN 初始化 CAN 帧供您参考。 目前、我将针对仅占用的8个字节添加单个 CAN 帧。 需要添加更多 CAN 帧、如单独的三个8字节 CAN 帧。

CAN 初始化:

void CAN1_Initialize (void)

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);//8470 @17-04-2023
CANBitRateSet (CAN1_BASE、g_ui32SysClkFreq、500000);
CANIntRegister (CAN1_base、CAN1IntHandler);//@ 15-03-2023
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 TX 功能

void CAN1_Tx_function (void)

if ((g_CAN1MsgRx.ui32MsgID >= 51)&&(g_CAN1MsgRx.ui32MsgID <= 60))//可以从其他 PCB 接收

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_ui8CAN1RxData[ui8Count]= 0;
}


G_ui8CAN1TxData[0]=配置。 Configuration_No;
G_ui8CAN1TxData[1]=配置。 Request_Reply;
G_ui8CAN1TxData[2]=配置。 状态;
G_ui8CAN1TxData[3]= Suck_Back_Length;
G_ui8CAN1TxData[4]= Suction_Off_Timer;

G_ui8CAN1TxData[5]= g_pcbc_sw_Version;
G_ui8CAN1TxData[6]= Fault_Event;
G_ui8CAN1TxData[7]= Fault_Length;

这是单帧。 我需要为我的应用添加更多8字节帧。 我需要一个示例来创建更多 CAN 帧、例如(创建 CAN ID 等)。 请帮助我使该 CAN 帧。

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="542829" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1428056/tm4c1294ncpdt-add-more-can-frames "]目前我正在为仅占用8个字节添加单个 CAN 帧。 我需要添加更多 CAN 帧、如单独的3个8字节 CAN 帧。

    您好!

     您当前正在使用一个消息对象(用于接收一个特定的消息 ID ( 如您定义的 CAN1RXID)。 用户可以使用另外三个消息对象来接收3个带有其自身消息 ID 的额外 CAN 帧。 请参考示例 C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\can\multi_rx.c、其中使用了四个消息对象。