如今,CAN总线在汽车和船舰电子设备通信中被广泛运用,并且随着国家越来越重视海防,对CAN的需求也会越来越大。
所以同学们,你们知道什么是嵌入式CAN总线吗?不如今天就和华妹一起来学习吧!
控制器局域网络CAN(controller area network)是用于无主机情况下,多个设备通信的总线协议。
协议参考OSI。OSI分成了应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。CAN总线根据需求,只采用了物理层,数据链路层,以及应用层。
一、CAN物理层
物理层:主要功能是为数据端设备提供传送数据的通路。
CAN总线,物理层是由双绞线实现数据的传输,其中一条命名位CAN_H,另外一条是CAN_L,有两种结构设计。
闭环结构
闭环结构,双绞线两端用120Ω电阻相连。这种结构,传输速度在125kbps-1Mbps之间。优点是传输速度快;缺点是通信距离短,最远也只能实现40m的准确传输。
开环结构
开环结构,双绞线不连接,两条线的一端都并联一个2.2KΩ的电阻。开环结构,传输速度在125kbps以下。但是,传输距离可以达到1km。
无论哪种结构,通信设备只需要用两条线路对应连接到CAN_H和CAN_L线上。
CAN总线网络拓扑图
差模信号传输
物理层还规定,数据以差模信号传输。在闭环结构中,小于0.05v的差值,表示隐形位(1),差值大于1.5v,表示显性位(0);开环结构中,差值大于-0.3v,表示隐形位(1),差值大于(0.3v),表示显性位(0)。
CAN控制器或者芯片,多数采用ttl信号。因此每个CAN节点内部结构中,CAN控制器都是通过收发器来连接到总线上的。收发器,实现ttl信号和差模信号的转换。
二、数据链路层
数据链路层:主要功能是如何在不可靠的物理线路上进行数据的可靠传递。
CAN总线协议为了做到可靠传递,把数据链路层分位两层,媒体访问控制层(MAC)层和逻辑链路控制子层(LLC)。
MAC子层
MAC子层是实现CAN协议的核心,它的功能主要是规定传送规则。参总线协议,对帧结构、执行仲裁、错误检测、出错标定和故障界定都做了规定。
例如,CAN总线规定了数据帧、遥控帧、错误帧、过载帧、帧间隔等不同类型的帧。其中,数据帧又分为标准帧和扩展帧。CAN总线协议规定数据帧的结构为:帧起始,仲裁段、控制段、数据段、CRC段、ACK段、帧结束,且对各段,都做了规定。
CAN总线实现的执行仲裁,采用了线与原理,结合仲裁段来完成。
这些规定,目的都是通过简单的双绞线,达到可靠的信息传递。不过,这样的信息传递,是广播性质的。如果,所有数据都接收,无疑会给cpu带来巨大的负荷。所以,还需要对数据进行处理,也就是LLC层的目的。
LCC子层
LLC子层的功能主要是报文滤波、超载通知和恢复管理。
CAN控制器中,通过报文滤波器,筛选出CAN总线传输,符号要求的信息,供微处理器使用。
物理层和数据链路层的功能可由CAN接口器件来完成。
三、应用层
应用层,由微处理器完成。根据使用场景的不同,在CAN的基础上,还有CANOpen,DeviceNet等升级协议,使用了CAN总线的物理层和数据链路层,只是对应用层加以修改。
CAN总线协议,是一个发展的总线协议,我们可以对其进行优化,例如现在的CANFD,对数据帧的数据段做修改,CAN总线的传输速度可以达到5Mbps。
所以同学们要想理解什么是CAN,就要从协议和物理层次学习哦~大家如果还有疑问,欢迎评论区留言!