CAN总线相关概述
1 写在前面
说到CAN,相信大家都有所了解,但单纯的了解,其意义不大,要知道它能做什么,知道它的用途才重要。
可能初学的朋友不太了解CAN的应用领域,对于汽车电子、轨道交通、工业自动化等诸多的运动控制系统中,运用CAN总线通信的地方很多很多。所以,我建议:嵌入式开发的朋友,有必要学习CAN,以及CAN常用的通信协议。
2 CAN总线
什么是总线?
相信大家都知道,谷歌百度一下,非常详细的解释:总线(Bus)是计算机各种功能部件之间传送信息的公共通信主干线。就好比一条输电线,它有多条分支,但主干线是重要的一条线路。
什么是CAN?
CAN:ControllerAreaNetwork即控制器局域网络。
理解了总线及CAN的含义,对CAN总线的理解就不难了,只是我们这种控制通信的方式这样命名而已。同理,我们也能理解什么是485总线,什么是I2C总线······
3 CAN网络结构
想要实现CAN总线的通信,必须要有CAN相关的硬件支持,也可以说是OSI(开放系统互联)中的物理层。
(图片来自STM32 CAN网络结构图)
可以结合485总线理解,CAN控制器就是UART控制器,CAN收发器就是485转换器。
CAN控制器是CAN通信中的核心部位,收和发的数据都经由它来处理;
CAN收发器可以理解成一个转换器,就是将TTL电平信号转换为CAN总线中的差分信号。
4 CAN通信原理
CAN通信原理其实是一个很大的话题,这里从基础来讲述实现CAN通信的原理。
can在英文单词中有"罐头"的意思,可能很多人小时候都玩过有种叫“传声筒”的东西,就是对着绳子一端的罐头说话,声音就可以传输的另一头。
罐头一端的人说【你好】,另外一端的人就能理解到对方说的话(你好)的意思。
我们可以把【你好】理解成通信中的数据,至于它是通过什么方式传输过去我们是不必关心的,只需要知道【你好】的意思即可。
也就是说,数据经过电平转换的过程我们不用关心,还有就是添加的一些协议(如CANopen,可以理解成额外添加的数据)我们也不用关心,关心的是我们想要得到的数据。
5 CAN应用协议
CAN也可以理解成UART,我们可以不使用CAN收发器,像单片机UART中直接将两块单片机的TX和RX引脚连接,通过TTL电平信号传输数据。
一般来说,我们使用UART通信,都会添加相关的协议,如ModBus。添加协议的作用是就是方便解析数据,防止信号受干扰而检测错误数据帧等。
相关的协议目前有多种:
CANopen协议 (制定组织:CiA)
DeviceNet协议 (制定组织ODVA)
CAL协议 (制定组织:CiA)
CANKingdom (制定组织:Kvaser)
J1939协议 (制定组织:SAE)
SDS协议(制定组织:Honeywell)
CAN总线应用协议相对CAN驱动来说要复杂的多,目前CANopen协议算是市面上用的比较多的一种,后期会更新CANopen协议中一项开源协议canfestival。
6 最后
CAN总线以及CAN相关协议的内容相对来说较多,本文算是带领大家对CAN有一个基础的认识。
微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,在我的底部菜单查看更多精彩内容!
长按识别二维码 关注
原文标题:一种值得嵌入式开发人员学习的总线 --- CAN-Bus
文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。
-
嵌入式
+关注
关注
5096文章
19199浏览量
308272 -
CAN总线
+关注
关注
145文章
1958浏览量
131186 -
485总线
+关注
关注
1文章
29浏览量
16822
发布评论请先 登录
相关推荐
快速上手!CAN-Bus转以太网(ECAN-E02)使用教程
![快速上手!<b class='flag-5'>CAN-Bus</b>转以太网(ECAN-E02)使用教程](https://file.elecfans.com/web2/M00/3E/6A/pYYBAGJhBGGAGyDYAACBPQuBZQI711.png)
哪些专业适合学习嵌入式开发?
CAN-Bus总线电缆行业技术发展趋势及市场空间预测报告
嵌入式开发必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品
![<b class='flag-5'>嵌入式开发</b>必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品](https://file1.elecfans.com/web3/M00/04/69/wKgZO2dzXBuAOiSTAABx71EW8WA193.png)
如何使用 RISC-V 进行嵌入式开发
零基础嵌入式开发学习路线
嵌入式开发常见问题排查
![<b class='flag-5'>嵌入式开发</b>常见问题排查](https://file1.elecfans.com/web2/M00/02/F1/wKgaoma5syyAYzztAAA5LSZZo34694.png)
嵌入式常用总线有哪些
嵌入式开发常用软件有哪些?
嵌入式开发就业前景怎么样?
CAN-bus应用笔记:节点篇
![<b class='flag-5'>CAN-bus</b>应用笔记:节点篇](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
评论