工具与软件:
你(们)好。
我使用 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 帧。
谢谢你。