stm32 CAN无法通信

2019-07-14 18:28发布

本帖最后由 alan7lanshui 于 2018-3-16 18:02 编辑

STM32板子,断电重启之后,无法进行CAN通信,只有在第一次写入程序时,可以进行CAN通信,这是为什么?

试验方法:
1、板子2烧进去程序,不断电,拔掉跳线帽,使boot0=0,可以与板1CAN通信;
2、板子2烧进去程序,断电,拔掉跳线帽,使boot0=0,不可以与板1CAN通信;
3、板子2烧进去程序,断电,拔掉跳线帽,使boot=0,重新上电,不可以与板1CAN通信,板子复位一次,可以与板1通信。(有的时候可能要复位好几次CAN才能通信)。4、通信过程中拔掉CAN总线,重新连接之后,可以通信。


CAN试验通信流程:
PC串口向板1发送指令->板1接收到指令后,通过CAN总线发送给板2->板2接收到板1通过CAN发送的数据后,做出相应控制,并将数据通过CAN再发送给板1。

提出的问题:
会不会是板2突然掉电,使CAN离线,做出错误管理,再次上电后无法通信,重新复位后,将错误管理置位的标志清空,可以再次通信?(提出的小疑问)

使用过的方法:将ABOM=ENABLE,没有效果。

硬件环境:
MCU:stm32F103R8T6  CAN收发器:MCP2551

软件环境:
Keil5.16+stm32固件库V3.5版本。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
TOPCB
1楼-- · 2019-07-15 05:05
如果第一次可以,复位以后不行,考虑一下接收器的处理,接收器是否也报错?
zhhx1985
2楼-- · 2019-07-15 07:09
具体点是不能发送还是不能接受,还是都不能?

都不能,先检查硬件,再检查CAN的配置....
droidhw
3楼-- · 2019-07-15 11:46
zhhx1985 发表于 2018-8-19 07:00
具体点是不能发送还是不能接受,还是都不能?

都不能,先检查硬件,再检查CAN的配置....

昨天晚上试验方法:
1、板子烧进去程序,不断电,拔掉跳线帽,使boot0=0,CAN可以通信;
2、板子烧进去程序,断电,拔掉跳线帽,使boot0=0,CAN不可以通信;
3、板子烧进去程序,断电,拔掉跳线帽,使boot=0,重新上电,CAN不可以通信,板子复位一次,CAN可以通信。(有的时候可能要复位好几次CAN才能通信)。
droidhw
4楼-- · 2019-07-15 17:23
 精彩回答 2  元偷偷看……
droidhw
5楼-- · 2019-07-15 21:50
zhhx1985 发表于 2018-8-19 07:00
具体点是不能发送还是不能接受,还是都不能?

都不能,先检查硬件,再检查CAN的配置....

使用CAN接收中断接收,进入中断后,将数据再返回。
实验现象:无法进入CAN接收中断
vyewrewr
6楼-- · 2019-07-16 02:17
CAN总线两端的120欧终端电阻安装了吗?如果没安装总线通讯会有很大干扰,造成通讯不成功。

一周热门 更多>