尊敬的先生:
我们使用 TM4C1294NCPDT 微控制器和 CAN1通信、我们使用两个 PCB 与 CAN 通信。 我们随机收到 CAN 通信故障错误。 我们无法运行、请告诉我是否为 CAN 配置添加了任何初始化。
这用于第1个 PCB CAN1初始化(发送)
SysCtlPeripheralEnable (SYSCTL_Periph_CAN1);
CANInit (CAN1_base);
CANBitRateSet (CAN1_base、SysClkFreq、500000);
CANIntEnable (CAN1_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
IntEnable (INT_CAN1);
CANEnable (CAN1_base);
CAN1MsgRx.ui32MsgID = CAN1RXID;
CAN1MsgRx.ui32MsgIDMask = 0;
CAN1MsgRx.ui32Flags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;
CAN1MsgRx.ui32MsgLen = sizeof (g_ui8CAN1RxData);
CANMessageSet (CAN1_base、CAN1RXOBJECT、&g_CAN1MsgRx、MSG_OBJ_TYPE_RX);
这用于第二个 PCB CAN1初始化(接收)
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、false);
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);
CAN1MsgRx.ui32MsgID = CAN1RXID;
CAN1MsgRx.ui32MsgIDMask = 0;
CAN1MsgRx.ui32Flags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;
CAN1MsgRx.ui32MsgLen = sizeof (g_ui8CAN1RxData);
CANMessageSet (CAN1_base、CAN1RXOBJECT、&g_CAN1MsgRx、MSG_OBJ_TYPE_RX);
如果您需要任何信息、请告诉我。
提前感谢。
