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

STM32F476NG使用CAN2通信无法接收数据

[复制链接]
xiaoxiao0932 提问时间:2016-9-20 09:23 /
本帖最后由 xiaoxiao0932 于 2016-9-20 21:23 编辑

最近要在STM32F476NG上启用CAN通信功能,板子上有两路CAN ;在使用CAN1的时候跑CAN_Loopback例程收发测试正常通过,但是CAN2在跑CAN_Loopback例程时,发送可以通过,无法接收;同样在跑CAN_Networking例程CAN2同样也是无法接收到数据,个人感觉是CAN2的设置有什么特别的要求,查看了数据手册也没有发现特别的地方,有没有跟我一样遇到相同问题的啊?大神求帮助啊!!!!!!!!!!!!!!!!!!!!!!

void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef *CanHandle)
{
  if ((CanHandle->pRxMsg->StdId == 0x321) && (CanHandle->pRxMsg->IDE == CAN_ID_STD) && (CanHandle->pRxMsg->DLC == 2))
  {
    LED_Display(CanHandle->pRxMsg->Data[0]);
    ubKeyNumber = CanHandle->pRxMsg->Data[0];
}
/* Receive */
  if (HAL_CAN_Receive_IT(CanHandle, CAN_FIFO0) != HAL_OK)
  {
    /* Reception Error */
    Error_Handler();
  }
}

可以进接收中断,可是只能进一次。。。。。。。
这个接收中断不需要清除标志位什么的吗》》?


使用CAN2时
1、__HAL_RCC_CAN1_CLK_ENABLE();
使能CAN1的时钟
2、将 sFilterConfig.FilterNumber = 14;


收藏 1 评论9 发布时间:2016-9-20 09:23

举报

9个回答
xiaoxiao0932 回答时间:2016-9-20 10:13:35
xiaoxiao0932 回答时间:2016-9-20 11:33:45
难道大家都不使用CAN了吗》》???
xiaoxiao0932 回答时间:2016-9-20 15:14:35
自己尝试了一下,使用CAN2时
1、__HAL_RCC_CAN1_CLK_ENABLE();
使能CAN1的时钟
2、将 sFilterConfig.FilterNumber = 14;
经过这两步使用CAN2跑CAN_Loopback例程可以通过了,但是跑CAN_Networking例程CAN2还是无法接收到数据
回答时间:2016-9-20 15:42:46
楼主看一下CAN2的初始化配置是否正确,既然loopback模式下可以收发,应该还是配置的问题。可以看一下总线上是否有波形。
xiaoxiao0932 回答时间:2016-9-20 16:13:56
安 发表于 2016-9-20 15:42
楼主看一下CAN2的初始化配置是否正确,既然loopback模式下可以收发,应该还是配置的问题。可以看一下总线上 ...

可以进接收中断,可是只能进一次。。。。。。。
这个接收中断不需要清除标志位什么的吗》》?
回答时间:2016-9-20 16:50:44
进入以后,楼主看一下中断标志位,应该是关闭了。需要重新开一下。
xiaoxiao0932 回答时间:2016-9-20 21:21:46
安 发表于 2016-9-20 16:50
进入以后,楼主看一下中断标志位,应该是关闭了。需要重新开一下。

问题解决了,在中断中调试时,误将延时函数拷贝进去了,删除就没问题了

评分

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

查看全部评分

leiyijing2003 回答时间:2016-9-30 17:29:00
初始化一下CAN1就可以用CAN2
qfggg 回答时间:2017-3-14 19:18:46
顶-------------
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版