求问,STM32CubeMX的CAN用法。

2019-12-15 11:00发布

目前一直卡在如下的初始化过程中,始终是失败的,没有接其他的CAN总线电路。

  1.   /* Check Sleep mode leave acknowledge */
  2.   while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U)
  3.   {
  4.     if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
  5.     {
  6.       /* Update error code */
  7.       hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;

  8.       /* Change CAN state */
  9.       hcan->State = HAL_CAN_STATE_ERROR;

  10.       return HAL_ERROR;
  11.     }
  12.   }
复制代码

因为是用于简单测试,所以终端电容电阻共模电感都没有加,还是CANH和CANL之间必须加电阻和电容?
电路图如下所示:
阿里旺旺图片20181130182554.jpg (220.73 KB, 下载次数: 0) 下载附件 2018-11-30 18:26 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
gsq19920418
1楼-- · 2019-12-16 11:42
appleboy 发表于 2018-11-30 19:38
CAN单机调试得用回环模式

不会吧!那STM32CUbe的代码不能单机调试?
gsq19920418
2楼-- · 2019-12-16 15:55
 精彩回答 2  元偷偷看……
knight_avr
3楼-- · 2019-12-16 17:58
smaret 发表于 2018-12-1 11:16
CAN 需要回路,没有外部回路时。就是环回模式。不然就会卡在初始化的地方。 ...


那这样的STM32就有点搞了,
如果总线上两个 STM32 的CAN 通讯   总有一个先初始化,先初始化的那个很可能初始化不成功,因为CAN总线上没有正常的CAN接口设备
然后第二个也初始化不成功

理想的CAN设备的初始化应该与 外部是否有连接,是否有终端电阻无关,

就像RS485一样,没见过uart初始化不成功过的(硬件正常、程序正常)

一周热门 更多>