首页 > 其他分享 >CAN通信协议介绍

CAN通信协议介绍

时间:2024-06-14 21:33:05浏览次数:23  
标签:通信协议 总线 电平 发送 介绍 波特率 数据 节点

一、CAN简介

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。can的发明最初是为了减少汽车上的线束,随着汽车上通讯节点的增多,使用总线形式的通讯网络可以大大减少各个节点线束的连接,因此,can技术孕育而生。can总线发展经历了can 2.0、can fd、can xl,分别于1991年发布can2.0标准,2015年发布can FD标准,2020年发布can XL标准

CAN通信有如下特点

1、它的电气特性和rs485一样采用差分信号,差分信号保证了can总线通讯的可靠性和远距离通讯。

2、can总线采用多主通讯模式,每个can节点都能自主收发数据,不像rs485和i2c采用主从模式。

3、can总线采用短报文形式,can2.0数据段最多8字节,can fd 数据段最大64字节。

4、有id仲裁机制,id小的优先级高,保证优先级高的数据实时传输。

5、can的通讯方式是异步半双工,通讯前双方要约定波特率。

6、距离在40m一下通信速度能达到1Mb/s,距离10km速度能达到5kb/s。一般汽车中用到的速度是250kb/s和500kb/s居多

CAN结构模型如下图

应用层为软件部分

数据链路层主要是实现CAN协议部分。主要由CAN控制器完成

CAN物理层主要是将数据链路层的TTL信号转换为CAN差分信号。主要有CAN收发器完成

二、CAN 2.0物理层

1.can总线的电气信号 如下图

CAN_H - CAN_L = 2V表示显性,代表逻辑0

CAN_H - CAN_L = 0V表示隐性,代表逻辑1

2、一般can总线两端会各加一个终端电阻以减少can总线上的反射,一般为120欧姆。如下图

三、CAN 2.0数据链路层

1.CAN帧报文种类有如下几种

1.数据帧:用于发送节点向接收节点传送数据。

2.远程帧:用于某个接收节点向某个发送节点请求数据

3.错误帧:用于当某节点检查出错误时向其它节点通知错误的帧

4.过载帧:用于接收节点向发送节点通知自身接收能力的帧

5.帧间隔;将数据帧或远程帧与前面的帧分离的帧

2.数据帧帧格式

数据帧可分为标准数据帧和扩展数据帧

标准帧帧ID长度是11位,帧ID范围是0x000 - 0x7FF

扩展帧帧ID长度是29位,帧ID范围是0x00000000 - 0x1FFFFFFF

can报文数据帧格式如下图

1.帧起始: 由一位显性位组成。can总线在空闲时为隐形

2.仲裁段:仲裁段可设置id过滤(各个细分位如下图)

3.控制段: 主要说明数据段的数据长度,长度可以是1~8个字节(普通CAN)CANFD格式最大64字节

4、数据段:普通can总线的数据段可以是1~8个字节。

5.CRC校验段:CRC段有16bit组成,1-15bit存放从起始到数据段的校验值,第16bit是CRC界定符占1bit为隐性电平(1)。

6.ACK段: ACK段有两个bit组成。第一个bit是应答结果,第二个bit是ACK界定符。

ACK应答位:对于发送节点发送隐性电平(逻辑1)。

ACK界定符:  接收正确的节点发送显性电平(逻辑0)。通过总线线与结果(1&0)为显性电平(逻辑0)。发送节点根据这个来判断发送是否成功。

7、帧结束:帧结束有连续7bit隐性位组成

四、CAN填充位和采样点

1.填充位

为减少波特率误差带来的通讯错误,can协议规定,在信号的跳变沿时刻进行同步,保证波特率的准确性。为解决数据出现连续的隐性位或者显性位,can协议规定当出现连续5个相同电平时就插入一个相反电平的填充位。比如出现了连续5个显性电平,就在5个显性电平后面插入一个隐性电平。接收端也按照这个规则过滤出去填充位。

2.can采样点

当CAN波特率位500kbps时,1bit电平的持续时间为2us。can协议中将1bit的电平分为四段:

1.同步段(sync_seg)

2.传播时间段(prop_seg)

3.相位缓冲段1(phase_Seg1)

4.相位缓冲段2(phase_Seg2)

若将1bit电平时间分为10等分,1等分称为1个Time Quantum(1Tq)。为方便编程。大部分厂家将prop_seg和phase_Seg1和一起称为TSEG1,phase_Seg2称为TSEG2。如下图所示

sync_seg通常是固定的1Tq。

设置TSEG1和TSEG2时需要遵循一定的规则:

1、TSEG1 > TSEG2

2、TSEG2 > SJW(同步跳转宽度)

3、一般采样点设置在85%位置左右。

采样点和波特率可以通过一些公式计算:

  采样点=(1+TSEG1)/(1+TSEG1+TSEG2)

        位时间 = (1+TSEG1+TSEG2)*Tq。

       can波特率 = (can时钟频率)/(1+TSEG1+TSEG2)

  例如:can时钟频率为8MHZ,要将波特率设置为500kbps,可以设置TSEG1=12,TSEG2=3.带入公式

 采样点=(1+12)(1+12+3) = 81%

  波特率 = (8*1000)/(1+12+3)  = 500kbps

采样点可以参考链接:http://www.eepw.com.cn/article/202004/411611.htm

五、can协议中的字节解析顺序

can报文的字节顺序格式分为Intel格式和Motolola格式。

例如A向B发送0x12A0,对于Inter格式来说先发送0xA0再发送0x12。

对于Motolola格式则先发送0x12,再发送0xA0.

Inter模式相当于小端模式,Motolola模式相当于大端模式。

标签:通信协议,总线,电平,发送,介绍,波特率,数据,节点
From: https://blog.csdn.net/sinat_37508529/article/details/139673549

相关文章

  • 代码随想录——链表1——基本介绍与3种语言实现
    ......
  • 国产数据库介绍~目前最火的五款国产数据库,看看都知道哪些?
    一、TiDB:分布式NewSQL数据库简介TiDB是一款开源的分布式NewSQL数据库,由PingCAP公司开发。它采用了分布式事务和强一致性的设计理念,结合了传统关系型数据库和NoSQL的优点,能够满足高并发、大规模数据存储和实时分析的需求。优点分布式架构:TiDB采用分布式架构,可以水平扩展,支......
  • GPT 模型原理介绍以及应用
    本文由ChatMoney团队出品引言随着人工智能技术的飞速发展,自然语言处理(NLP)领域也取得了显著的进步。其中,GPT(GenerativePre-trainedTransformer)模型作为OpenAI的杰出成果,以其卓越的文本生成能力和广泛的应用前景,吸引了全球范围内的关注。本文将深入解析GPT模型的原理,帮助读者更......
  • Spring Cloud Gateway 介绍
    SpringCloudGateway介绍功能:接收请求并根据匹配的路由进行转发。术语:Route:是路由规则的描述。它由ID、目标URI、Predicate集合和Filter集合组成。如果Predicate为真,则路由匹配。Predicate:这是一个Java8函数接口。输入类型是ServerWebExchange,所以可以......
  • 【网页设计】期末大作业html+css (个人生活记录介绍网站) (2)
    ......
  • 硬件开发笔记(十八):核心板与底板之间的连接方式介绍说明:板对板连接器
    前言  核心板与底板之间的连接方式至少就有四种以上,包括且不限于:DIP直插、板对板连接器、邮票孔和金手指。 常用连方式介绍DIP直插  DIP就是以前的元器件封装,直接DIP插入焊接,宿便找了个,如下图:    可以定制自己的,一般来说,没有高速电路问题不大,但是这种方......
  • PID算法的离散化和参数调节方式的介绍
    目录概述1背景介绍2 数字式PID控制算法2.1 位置式PID2.2 增量式PID2.3两种算法比较 3 控制器参数整定3.1凑试法3.2临界比例法3.3经验法4 参数调整规则的探索概述本文主要介绍离散化PID算法的实现原理,以方便对其进行数字化的处理,重点介绍位置式PI......
  • Ubuntu的文件权限介绍
    Linux系统是一个多用户系统,每个用户都会创建自己的文件。为了防止其他人擅自改动他人的文件,需要拥有一套完善的文件保护机制。在Linux系统中,这种保护机制就是文件的访问权限。文件的访问权限决定了谁可以访问和如何访问特定的文件。为了便于读者理解后面的内容,下面首先介绍一......
  • 【保姆级介绍下数据挖掘案例分析】
    ......
  • 【draw.io的使用心得介绍】
    ......