引言:
出来工作以后,关于底层的通信调试的最多的便是CAN驱动了,现在来总结一下调试过程出现的各种各样的问题点,方便后续查阅!
1.外部条件
1.1接线不稳定
在调试CAN通信不了的原因,非常有必要检查的就是接线,很多时候都是接线松动导致无法通信,有时候杜邦线会出现接口不稳定,容易脱离的情况,在线束很多的时候,往往就容易检查不到的情况。有条件的话,尽量使用接插件,这样子会比较稳定;
1.2接线断了
这种情况出现的概率极低,也比较难检查了,出现这种情况的往往是线经常拉扯,出现了接线损坏,这个情况下,使用万用表去检查接线是否正常就可以了,或者换跟线;
1.3没有终端电阻
这种情况我也遇到过,这种方式很好验证,就是如果接入了CAN工具盒能正常工作,不接就工作不了,那往往可能就是硬件上面没有接终端电阻;
1.4CANH 和CANL接反
这个往往是粗心导致,这个需要自己去检查
在这里建议,在遇到CAN通信的问题,真的首先要检查这四个,避免一些外部条件引起的通信不正常
2.硬件原因
由于本人未从事硬件工作,所以硬件方面的只是写下了我遇到过的情况,后续遇到了会接着补充;
2.1 硬件短路
遇到过一次这个情况,我在拉低CAN StandBy引脚时,使用万用表去测量引脚的电压,发现一颗电阻左右两端的电压不一致,MCU端为0V,收发器端为3.3V。这种情况下一般就是硬件短路造成的,可以检查一下硬件;
2.2电压不够
有些情况下,调试器并不能够提供足够的电压,这个这种情况不能算做硬件的问题,这个一般都是有其他的电源接口,可以量量收发器的电压是否达到,如果没有达到,需要外接电源;
3.软件原因
3.1 引脚使用错误
这种情况,也是粗心导致,我的情况是这样子的,一般MCU上CAN的通信管脚会有很多,但是由于更换了硬件,管脚也更换了,但是我的代码还没有变,所以软件方面,这个管脚要配置好,不然容易出现这个问题;
3.2 STY状态
有些情况下,CAN StandBy会由硬件上拉低或者拉高(这个具体看硬件的设置),有些情况需要通过软件来设置,这种情况下,也是要配置好管脚,可以通过测量管脚的电压判断是否有拉高或者拉低;
3.3 初始化的CAN通道与使用的不一致
MCU上一般会有很多的CNA通道,这个时候可能会出现初始化的CAN通道没有使用,但是使用其他的CNA通道;
目前先整理这么多,后续再慢慢的完善;