问题现象
MCU上电,发送0x13帧数据固定进入
Error_Handler

硬件介绍
MCU :STM32G0B1
can:NSI1042


tx 接TX
RX 接RX
折腾了一下午,无解,问题依旧;
对比测试
STM32G431
手头有块G431 官方评估版+CAN 模块;
同样的代码


/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
FDCAN_TxHeaderTypeDef TxHeader;
uint8_t TxData[8] = {0};
/* USER CODE END 0 */
/* USER CODE BEGIN 2 */
if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
TxHeader.Identifier = 0x0fffffff;
TxHeader.IdType = FDCAN_EXTENDED_ID;
TxHeader.TxFrameType = FDCAN_DATA_FRAME;
TxHeader.DataLength = FDCAN_DLC_BYTES_8;
TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
TxHeader.BitRateSwitch = FDCAN_BRS_OFF;
TxHeader.FDFormat = FDCAN_CLASSIC_CAN;
TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
TxHeader.MessageMarker = 0;
++TxData[7];
if(HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)
{
Error_Handler();
}
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
测试数据

将TX(PA12)拔掉
故障出现了,发送0x13帧的时候,进入Error_Handler;
测试结论
通过对比发现,TX物理断开,与STM32G0B1 平台现象一致,接下来重点排查STM32G0B1 的TX与RX引脚配置。
亲们破案了,加上120R电阻就好了!!!!
亲们破案了,加上120R电阻就好了!!!!
亲们破案了,加上120R电阻就好了!!!!