完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 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版本。 |
|
相关推荐
14个回答
|
|
楼主用回环模式试试 还有需要贴代码瞅瞅
|
|
|
|
如果第一次可以,复位以后不行,考虑一下接收器的处理,接收器是否也报错?
|
|
|
|
|
|
|
|
昨天晚上试验方法: 1、板子烧进去程序,不断电,拔掉跳线帽,使boot0=0,CAN可以通信; 2、板子烧进去程序,断电,拔掉跳线帽,使boot0=0,CAN不可以通信; 3、板子烧进去程序,断电,拔掉跳线帽,使boot=0,重新上电,CAN不可以通信,板子复位一次,CAN可以通信。(有的时候可能要复位好几次CAN才能通信)。 |
|
|
|
|
|
|
|
使用CAN接收中断接收,进入中断后,将数据再返回。 实验现象:无法进入CAN接收中断 |
|
|
|
CAN总线两端的120欧终端电阻安装了吗?如果没安装总线通讯会有很大干扰,造成通讯不成功。
|
|
|
|
有120欧终端电阻 |
|
|
|
楼主,你得说明板1和板2分别是什么。CAN使用发生错误,大概有几点:
1、CAN波特率不同 2、CAN网络未加120欧姆电阻 3、CAN网络发生错误,重新初始化CAN总线。我用ST的CAN好多年了。未发生类似的问题。 |
|
|
|
1、板1和板2是两块相同的PCB板,MCU和CAN收发器都一样 2、CAN波特率设置的都是1MBbps 3、有120欧电阻 断电重启之后,将板2重新复位之后,可以通信 |
|
|
|
这也测试,CAN收不到数据或发不出数据收,进行CAN重新初始化,是否可以解决?
|
|
|
|
将stm32f103R8T6复位,程序重新执行,会初始化CAN,可以通信。 问题:板子断电,再重新上电,MCU不也会重新执行程序吗? |
|
|
|
|
|
|
|
学习一下相关知识经验
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1980 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1836 浏览 3 评论
4416 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1985 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2489 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 14:52 , Processed in 0.801941 second(s), Total 99, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号