Can总线如何检测BUS-OFF
当CAN
2.
下面以CAN发送数据为例,介绍如何检测BUS-OFF错误状态。
struct can_frame framesend = {
err = write(s_can0, &framesend, sizeof(framesend));
通过检测framesend .can_id是否被BUS-OFF置位。
3.
最好的处理方法是:restart。can0出错了,restart can0。
4.
检测CAN BUS-OFF错误并进行处理,网上已经有开源代码,大家可以参考这个网址:http://www.pengutronix.de/software/libsocketcan/download/
int state; if ((can_get_state(if_name_can0, &state)) < 0) { fprintf(stderr, "cannot get bustate, " "something is seriously wrong"); } else if (state == CAN_STATE_BUS_OFF) { fprintf(stderr, "Device is in BUS_OFF" ); do_restart("can0"); }
do_restart("can0")的作用是restart can0。
评论