两块板子做can通讯测试,两个代码都是一样的,发送的CAN数据也是一样的,并且都同时接受,也同时发送,运行一段时间后,发现两个板子不通讯了,复位一个板子能同时通讯上。
我修改一个板子上 CAN_TxMessage.ExtId数据,就是两个板子上的29码不同,运行一夜,通讯一直能成功。
进一步分析问题,如果两个板子都发送同样的ID码( 29位码),CAN通讯会出错,我仿真过了,程序是正常的,在发送数据的时候temp = CAN_Transmit(&CAN_TxMessage);返回数据是temp = CAN_NO_MB,也就是说发送邮箱满了,不能发送了。
我的问题是,CAN节点都发送同样的ID码,CAN总线会阻塞吗?是什么原因造成阻塞的? |