STM32 Nucleo F303开发板CAN总线无法发送消息问题求助
STM32 Nucleo F303开发板CAN总线无法发送消息问题求助
各位大佬,我现在彻底卡壳了!想用我的Nucleo F303开发板通过CAN总线发消息,结果死活没反应。我把示波器接在CAN_Tx引脚上,不管怎么调试,探头那边连点信号波动都测不到。我觉得硬件接线应该没毛病,但现在连配置对不对都没法验证——最气人的是,调用HAL_CAN_AddTxMessage()返回的居然是HAL_OK,可板子就是啥也不发!
我是把CAN_Tx接PA11、CAN_Rx接PA12的,这两个引脚现在完全没动静。以下是我写的CAN发送相关代码片段:
CAN_TxHeaderTypeDef TxHeader; uint8_t TxData[8]; uint32_t TxMailbox; // 配置CAN消息头 TxHeader.StdId = 0x123; TxHeader.RTR = CAN_RTR_DATA; TxHeader.IDE = CAN_ID_STD; TxHeader.DLC = 4; TxHeader.TransmitGlobalTime = DISABLE; // 准备要发送的数据 TxData[0] = 0xAA; TxData[1] = 0xBB; TxData[2] = 0xCC; TxData[3] = 0xDD; // 尝试发送CAN消息 if (HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox) != HAL_OK) { Error_Handler(); }
我自己已经排查了这些点:
- 反复检查PA11/PA12的接线,确认没接反、没松动,示波器探头也保证接触良好
- 代码里已经调用
HAL_CAN_Start(&hcan)启动了CAN外设 - 波特率按照总线要求配的500kbps,应该是对的
有没有过来人能给我指个方向?比如是不是引脚复用功能没开对?CAN的时钟配置有没有坑?或者HAL库初始化的时候漏了什么关键步骤?
备注:内容来源于stack exchange,提问作者Scout Megyesi
相关产品推荐
相关产品推荐

