CAN学习笔记(一)CAN入门

参考链接:https://blog.csdn.net/2301_77952570/article/details/131114941

CAN收发器的作用

  • 发:将TTL电平转换为CAN专用电压的差分信号
  • 收:将CAN的差分信号转换为TTL电平

高低电平的定义

  • CAN_High - CAN_Low < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1",即高电平。
  • CAN_High - CAN_Low > 0.9V 时候为显性的,逻辑信号表现为"逻辑0",即低电平。

​ 显隐之间存在优先级的关系,显性的优先级高于隐性(常用于仲裁机制)

通信过程概述

CAN中并无地址的概念。少了像IIC中的SCL地址线、SPI中的片选信号线,简洁的物理层决定了 CAN 必然要配上一套更复杂的协议。

空闲状态

在CAN协议中,当总线上的上出现连续的11位隐性电平(两根线电压差小于0.5V),表示总线就处于空闲状态。

开始数据传输

报文:报文 = 帧 = 帧起始(开始位 + 地址 + 控制) + 原始数据 + 帧结束(CRC + 结束位)

每次发送数据前,节点都会监听总线的状态,如果总线状态为空闲时,它就会立即向总线上发送自己的帧。

帧分为5种

  1. 数据帧:用于节点向外传送数据
  2. 遥控帧:用于向远端节点请求数据
  3. 错误帧:用于向远端节点通知校验错误,请求重新发送上一个数据
  4. 过载帧:用于通知远端节点;本节点尚未做好接受准备
  5. 帧间隔:用于将数据帧及遥控帧与前面的帧分离开来

下面是CAN数据帧的标准格式

域段 域段名 位宽:bit 描述
帧起始 SOF(Start Of Frame) 1 数据帧起始标志,固定为1bit显性('b0)
仲裁段 Identify(ID) 11 本数据帧的 ID 信息, ID 信息的作用:
① 如果同时有多个节点发送数据时,作为优先级依据(仲裁机制);
② 目标节点通过 ID 信息来接受数据(验收滤波技术)
RTR Remote Transmission Request BIT 1 RTR标识是否是远程帧(0,数据帧;1,远程帧),在数据帧里这一位为显性('b0)
IDE Identifier Extension Bit 1 IDE用于区分标准格式与扩展格式,在标准格式中 IDE 位为显性(‘b0),在扩展格式里 IDE 位为隐性(’b1)
R0 保留位 1 1bit保留位,固定为1'b0
DLC data length 4 由 4 位组成,MSB 先行(高位先行),它的二进制编码用于表示本报文中的数据段含有多少个字节,
DLC 段表示的数字为0到8,若接收方接收到 9~15 的时候并不认为是错误
数据段 data 0~64 据帧的核心内容,它由 0~8 个字节(0 ~ 64位)组成,MSB 先行
CRC段 CRC 15 段用于检查帧传输错误,发送方以一定的方法计算包括:帧起始、仲裁段、控制段、数据段;
接收方以同样的算法计算 CRC 值并进行比较,如果不同则会向发送端反馈出错信息,重新发送;
计算和出错处理一般由 CAN 控制器硬件完成或由软件控制最大重发数。
CRC界定符 1 CRC 界定符(用于分隔的位),为隐性位(1'b1),主要作用是把CRC 校验码与后面的 ACK 段间隔起来
ACK 槽 ACK slot 1 在 ACK 槽位中,发送端发送的为隐性位,而接收端则在这一位中发送显性位以示应答;
发送 ACK/返回 ACK这个过程使用到回读机制,即发送方先在 ACK 槽发送隐性位后,回读到的总线上的电平为显性0,
发送方才知道它发送成功了,不用重发
ACK界定符 1 在 ACK 槽和帧结束之间由 ACK 界定符间隔开,为隐性位
帧结束 EOF 7 由发送端发送 7 个隐性位表示结束
仲裁机制

用到了线与机制和回读机制(显性位的优先级高于隐性位)

位时序

每一位数据分为四段,最小的时间单位是Tq,一个位由8~25个Tq组成。

段名称 用途 时间范围
同步段( SS ) 用于同步边沿,如果跳变边沿不在同步段,则需要通过PBS补偿 1Tq
传播时间段( PTS ) 用于补偿网络的物理延时时间 1~8Tq
相位缓冲段1( PBS1 ) 补偿边沿阶段的误差,在重新同步的时候可以加长 1~8Tq
相位缓冲段2( PBS2 ) 补偿边沿阶段的误差,在重新同步的时候可以缩短 2~8Tq

CAN学习笔记(一)CAN入门的更多相关文章

  1. Hadoop学习笔记(1) ——菜鸟入门

    Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...

  2. iOS学习笔记-地图MapKit入门

    代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...

  3. tensorflow学习笔记二:入门基础 好教程 可用

    http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础   TensorFlow用张量这种数据结构来表示所有的数据.用一 ...

  4. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  5. MyBatis学习笔记(一)入门

    首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001    没事看看 - MyBatis工具:www.mybatis.t ...

  6. 【NodeJS 学习笔记02】入门资源很重要

    前言 在我映像中,异步最早出现与ajax,当时我还在搞.net,然后.net居然出了一个异步的控件...... 虽然我最后知道了他不是异步的......然后,前端异步用得特别多,如果不是异步的程序,你 ...

  7. SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装

          刚开始接触sql,于是准备在Ubuntu下学习sql,就跟着itercast的sql教程开始入门了. 下面只是我个人的记录,高手请绕道: 一. 在安装之前,我们可以用下面这个命令通过开放端 ...

  8. Vue学习笔记-Vue基础入门

    此篇文章是本人在学习Vue是做的部分笔记的一个整理,内容不是很全面,希望能对阅读文章的同学有点帮助. 什么是Vue? Vue.js (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式 ...

  9. 《马哥出品高薪linux运维教程》wingkeung学习笔记-linux基础入门课程

    计算机原理概念: 1.CPU和内存中的存储单元通信线路称为总线(BUS),总线是被指令和数据复用的,所以也称为前端总线. 2.计算机中计算频率的时间标准即晶体振荡器原理,精确计算时间长度,根据相同的时 ...

  10. PYTHON 学习笔记1 PYTHON 入门 搭建环境与基本类型

    简介 Python,当然大家听到这个名词不再是有关于像JAVA 一样的关于后台,我们学习Python 的目的在于对于以后数据分析和机器学习AI 奠定基础,Python 在数据分析这一块,可谓是有较好的 ...

随机推荐

  1. C#中关于 object,dynamic 一点使用心得

    首先说一下使用场景  WebAPI接口入参使用 object和 dynamic 后续解析和处理 1.object和dynamic 区别 在.NET中,object和dynamic也有一些区别: obj ...

  2. 为什么说这款99元国产ARM工业平台,具有“划时代”意义

    随着近年来进口处理器涨价不断,大家会发现市面上已很少见到99元的ARM工业核心板出售. 为满足客户对低成本.高性能的需求,创龙科技推出基于全志T113-i国产ARM工业处理器的"划时代&qu ...

  3. 数据特征采样在 MySQL 同步一致性校验中的实践

    作者:vivo 互联网存储研发团队 - Shang Yongxing 本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享. 一.背景 在 MySQL 的 ...

  4. unity中Shader实现地形中根据实际高度绘制等高线,剖切功能,颜色渐变等功能

    问题背景 在做地形模块时,需要根据实际地形高度画出世界相应的等高线,以及根据高度做颜色渐变,以及剖切功能. 解决方法 通过像素点在世界坐标系下的真实高度值来判断计算绘制等高线,剖切功能以及颜色渐变均有 ...

  5. Python2 SyntaxError: Non-ASCII character '\xc3' in file...

    使用pip安装完需要的python库,运行脚本时报错:Syntax Error: Non-ASCII character '\xc3' in file /usr/local/lib/python2.7 ...

  6. Solo开发者社区-H5-Dooring, 开箱即用的零代码搭建平台

    Dooring-Saas 是一款功能强大,高可扩展的零代码解决方案,致力于提供一套简单方便.专业可靠.无限可能的页面可视化搭建最佳实践.(Solo社区 投稿) 功能特点 可扩展, Dooring 实现 ...

  7. [Unity] Dreamteck Splines实现沿路径移动功能

    Dreamteck Splines实现沿路径移动功能 最近有一个"让物体沿固定路径移动"的需求,因此接触到了Dreamteck Splines插件. Dreamteck Splin ...

  8. 面试题-python 什么是装饰器(decorator )?

    前言 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象.很多python初学者学到面向对象类和方法是一道大坎,那么py ...

  9. java面试一日一题:讲下ThreadLocal

    问题:请讲下ThreadLocal 分析:首先要了解ThreadLocal的基本原理:其次要理解ThreadLocal发生内存泄漏的原因:最后ThreadLocal是如何做到线程隔离的 回答要点: 主 ...

  10. holiday week3

    本周开始进行小学期实验报告B 上周LOL打的rank分又掉了回去 星际争霸打到了铂金段位 JAVA预备在小学期完成之后开始正式学习 现已了解雏形 本周发布了一个视频https://www.bilibi ...