你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F105 CAN初始化问题

[复制链接]
leiyijing 提问时间:2017-8-11 19:35 /
最近困扰很久,CAN2初始化不成功,把断点设置在if那里,必定进入错误状态,但是把断点设在status那里,每次都能进去,能初始化成功,不知道为何?MCU初始化CAN控制器的时候,外面的收发器需要上电吗?


    /* Check acknowledged */
    if (HAL_IS_BIT_SET(hcan->Instance->MSR, CAN_MSR_INAK))
    {
      status = CAN_INITSTATUS_SUCCESS;
    }



发生问题是在高温80度时,设置了INRQ位,但是等不到INAK的置位应答,导致初始化错误,常温没有问题,高温有问题,不知道哪位大侠见过?

/* Request initialisation */
  SET_BIT(hcan->Instance->MCR, CAN_MCR_INRQ);

  /* Get timeout */
  tickstart = HAL_GetTick();   

  /* Wait the acknowledge */
  while(HAL_IS_BIT_CLR(hcan->Instance->MSR, CAN_MSR_INAK))
  {
    if((HAL_GetTick()-tickstart) > CAN_TIMEOUT_VALUE)
    {
      hcan->State= HAL_CAN_STATE_TIMEOUT;

      /* Process unlocked */
      __HAL_UNLOCK(hcan);

      return HAL_TIMEOUT;
    }
  }


收藏 评论5 发布时间:2017-8-11 19:35

举报

5个回答
赵工123 回答时间:2017-8-14 10:24:38
本帖最后由 赵工123 于 2017-8-22 10:15 编辑

您 这 CAN 是用于 那些 场合?
》80度有问题,应该不是 软件的问题,有空 可参考下我们的程序
冗余双CAN现场总线STM32F105开发板KeilC++源程序
https://www.stmcu.org.cn/module/ ... amp;fromuid=3399024
(出处: 意法半导体STM32/STM8技术社区)


评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

leiyijing 回答时间:2017-8-16 11:15:58
xmshao 回答时间:2017-8-21 11:40:16
怎么感觉 你开头黑体字跟中间红体字似乎不一致。

黑体字分明只是说断点位置不同影响运行结果,整体上是可以进入初始化模式的。

红体字描述的是温度高了进不了初始化模式。不过温度80度以上的话,可能有点玄了,

毕竟STM32F105XXT6的保证温度范围是-40到85°C.


评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zhoupxa 回答时间:2017-8-22 15:02:25
MCU初始化CAN控制器时收发器应该不需要上电
楼主意思是高温初始化超时,按规格书不应该是这种情况,建议参照规格书参数调整超时时间设置(或许时钟频率发生一些变化,处于临界状态)

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

AI++ 回答时间:2020-9-10 14:28:51
我今天也遇到了同样的问题 我是F2芯片 低温-25度 时遇到此问题,高温还没试,咋解决的呢?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版