主题:EM3352的CAN接口 共有61955人关注过本帖 |
---|
hzc |
1楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2016-3-24 17:16:00 [显示全部帖子]
你好,这个打印信息是驱动打印的,只是can控制器寄存器的一些信息,启动can接口都会打印这条信息。
can接口不通讯的话,请把具体的情况告知我们,方便找到原因。
|
单帖管理 | 引用 | 回复 |
hzc |
2楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2016-3-25 10:07:00 [显示全部帖子]
你好,这条信息的确是在CAN启动的时候,由驱动信息打印的,如果一直打印,很可能是CAN控制器一直在重启。
这应该是由于在程序中的函数set_can_bittiming( )加了对CAN控制器异常处理的恢复,如下红色的部分:
sprintf( str, "ip link set can0 type can tq %d prop-seg %d phase-seg1 %d phase-seg2 %d sjw %d restart-ms 100",
bt.tq, bt.prop_seg, bt.phase_seg1, bt.phase_seg2, bt.sjw );
system( str );
system( "ifconfig can0 up"); 这是在驱动程序内部对于异常处理的恢复机制,启用之后,在CAN通讯中出现bus_off 、error_warning、error_passive
等错误,驱动程序会自动重新复位CAN控制器。 所以从打印信息来看,应该是板卡在通讯过程中检测到错误,驱动一直在复位CAN控制器,建议检查一下线路的连接是否存在问题,比如短路等情况。
[此贴子已经被作者于2016-3-25 10:09:49编辑过]
|
单帖管理 | 引用 | 回复 |
hzc |
3楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2016-3-25 14:47:00 [显示全部帖子]
你好,那条信息是启动的时候打印的,正常情况启动好之后一直运行就不会打印这条信息了。
加入CAN控制芯片的复位功能就是为了在实际的使用中,就算出现问题,也能自动恢复。 如果像之前的情况一直复位,很可能是硬件连接上存在问题,每次发送都检测到错误,所以一直复位CAN驱动芯片。
|
单帖管理 | 引用 | 回复 |
hzc |
4楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2016-4-10 15:13:00 [显示全部帖子]
你好,出现这个情况,肯定是在通讯中驱动检测到错误,才会对can控制器进行复位,这并不是驱动的BUG,只是为了在运行过程中就算遇到错误,也能够自动回复正常。
造成这个问题的原因可能是硬件连接,也可能是总线上的干扰或是其他原因,比如连接线是否为双绞线,连接的距离以及现场环境等,下次出现反复重启can控制器的情况,可以将连接断开,看看板子是否还是一直重启,这样就可以判定是板子这一边的问题还是连接上或者其他问题。
|
单帖管理 | 引用 | 回复 |