在使用STM32的CAN时,按以下方式使用,发现问题(可能不算是问题) 有(且仅有)两块板子A和B,都是STM32,硬件上焊接了收发器和终端电阻。 A一上电就通过CAN发送一帧数据,B仅仅是接收。
如果B先上电,A再上电,CAN灯闪一下,数据发送成功。 如果A先上电,由于B没有上电,因此A发送不成功,CAN灯一直亮,用示波器检测数据,发现在不停地重发;如果此时B再上电,B无法接收数据,CAN灯不灭。
检查原因,B板子在CAN初始化过程中返回失败。检查用户手册(中文版),有如下的说明“......在跟CAN总线取得同步,即在CANRX引脚上监测到11个连续的隐性位(等效于总线空闲)后,bxCAN才能正常接收和发送报文......”。看来由于A在不停地发送数据,B的CAN模块无法与CAN总线取得同步,导致初始化失败。
有没有什么办法让B能够初始化成功?把A的数据读取,让总线恢复正常?
|