打印

我来班门弄斧写一个CAN通信的新手入门教程吧

[复制链接]
2377|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yesiqiu|  楼主 | 2018-10-15 22:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yesiqiu 于 2018-10-15 22:19 编辑

手把手教你学STM32的CAN通信(一)
写在前面

CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519进行了标准化。现在在欧洲已是汽车网络的标准协议。
CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。
本次实验

本次实验的效果
本次实验我们将实现的功能是通过STM32的CAN通信自发自收8个字节的数据,在将收到的数据在串口调试助手上打印出来。
硬件连接
首先我们看一下硬件连接

CAN收发器
上图中U4是一个CAN收发器就是一个转换芯片,它的主要功能是将CAN控制器的TTL信号转换成CAN总线的差分信号
CAN控制器TTL信号
现在的CAN控制器一般都与MCU集成在一起,其发送和接收TTL信号就是MCU引脚(高或低)信号。
CAN收发器的差分信号

如上图所示,CAN 接收器根据CAN_L和CAN_H上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
显性电平对应逻辑:0
CAN_H和CAN_L之差为2V左右。
隐性电平对应逻辑:1
CAN_H和CAN_L之差为0V。
显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。
上图中CAN总线上传输的是差分信号,CAN收发器实现差分信号和TTL信号的转换。单片机的CAN控制器接收和发送的是TTL信号。
CAN总线上挂有多个节点,所有节点的框图和节点1类似。
本次的实验中我们用的是STM32单片机CAN控制器的测试模式中的环回模式。

如图所示,就是CAN控制器可以发送信号到CAN总线,但是不接收CAN总线上的信号,但是可以从控制器内部接收发出的信号。这种模式下只需要一个单片机即可实现CAN通信,同时可以从TX引脚上看到信号的波形。

先发实验的代码吧,内容慢慢更新

CAN收发实验 环回模式 自发自收.rar

285.15 KB

代码

相关帖子

沙发
二九结狐六体| | 2019-1-4 10:33 | 只看该作者
嗯,可以的,很好啊!

使用特权

评论回复
板凳
鹰眼大数据| | 2019-1-5 13:48 | 只看该作者
可以的   ,很有帮助

使用特权

评论回复
地板
十德盛科技| | 2019-1-8 11:04 | 只看该作者
好东西,谢谢分享

使用特权

评论回复
5
hobbye501| | 2019-1-18 08:41 | 只看该作者
描述的比较清晰

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

56

帖子

3

粉丝