CAN通讯学习历程及遇到问题

先说学习背景,有一定的C语言基础,但是陆陆续续学习和实践敲代码,基础不是特别扎实,现在需要用到CAN通讯。以下内容为我实际过程的学习和遇到的问题,有不对地方和可以更完善的地方希望大家能够提出建议,共同进步!

首先,画了一块CAN通讯的电路板,包括STM32F103、CAN收发器等,这个其他都有资料,不再详述。

后面就要开始软件调试CAN通讯,找到的原理资料是“江协科技”的B站和CSDN博客,是我觉着学习CAN通讯原理最通俗易懂的视频,中间穿插看正点原子的CAN通讯代码。

好,到这里要开始调试CAN通讯,首先用keil写好stm32向can分析仪(用的是创芯科技linux板)不断发送的程序,进行烧录后debug测试得出can无法发送,再测试can分析仪向stm32发送的中断断点,发现也不行。下面找问题:

1.因为代码不是特别熟悉,用CubeMx生成can通讯的hal库,然后网上粘贴复制试试看,无果,试了其他能can通讯的电路板,是可以的,所以代码问题去除;

2.仔细看can电路板的原理图和PCB,尤其有没有连错,STM32的RX接CAN收发器的RX, TX同理,can收发器的can_H对应can分析仪的can_H,can_L同理。看看电源是否供电到给stm32和can收发器,都没问题。硬件电路板连线问题可以去除;

3.这时保持供电,stm32保持can向外发送,用万能表看一下can_H和can_L的对地电压(这里可以用示波器,我看网上说可以用万能表看下,就是电压不那么精确),比较能正常通讯的电路板can_H和can_L的对地电压,发现正常的can_H和can_L的对地电压都是2.37V,我这个不正常的是can_H对地电压是2.4V和can_L的对地电压1.79V。

好,发现问题,can_H和can_L的对地电压不是差分等于0或者相差2V,那就是串联电阻有问题,哎?电路板终端电阻是120欧姆呀,此时我把万能表的电阻档打到can_H和can_L的两边,怎么是31K(可能是31M,41K,反正很高),知道了,终端电阻虚焊了,补焊了,收发可以了。

在这个调试期间,can分析仪我并未给can_H和can_L打到终端电阻120欧姆或者60欧姆,一般要给can分析仪旁边拨拉打到120欧姆电阻,这样两边并联电阻是60欧姆,大家最好打一下。

最后总结说一下,can通讯一般stm32通电没问题,收发器通电没问题,就打电阻档看can_H和can_L两边即可,单独看电路板的话一般电阻值就是你串的电阻值,会有一定正常变化,要是和can分析仪连接的话,按照两边串电阻的并联电阻计算。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值