| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> CAN总线 -> 正文阅读 |
|
[嵌入式]CAN总线 |
目录 CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。“汽车上CAN总线隐性状态CAN-H和CAN-l都是2.5V,显性时CAN-H为2.5~3.5V,CAN-l为1.5~2.5V” CAN的特点:(1) 多主控制:多主控制在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权(CSMA/CA 方式*1)。多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权。 CAN协议????????通信是通过5 种类型的帧进行的:数据帧、遥控帧、错误帧、过载帧、帧间隔。另外, 数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下称 ID),扩展格式有 29 个位的 ID。
数据帧????????数据帧由 7 个段(帧起始、冲裁段、控制段、数据段、CRC段、ACK段、帧结束)构成,如下图 1 帧起始:表示帧开始的段,1个位的显性位。注:总线上的电平有显性电平和隐性电平两种。总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平。并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强。) 2 冲裁段:表示数据优先级的段。ID标准格式的 ID 有 11 个位。从 ID28 到 ID18 被依次发送。禁止高 7 位都为隐性。(禁止设定: ID=1111111XXXX)扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性。(禁止设定:基本 ID=1111111XXXX) 3 控制段:控制段由 6 个位构成,表示数据段的字节数。 *1 保留位(r0、 r1)保留位必须全部以显性电平发送。但接收方可以接收显性、隐性及其任意组合的电平。*2 数据长度码(DLC)数据长度码与数据的字节数的对应关系如下表所示。数据的字节数必须为 0~8 字节。但接收方对 DLC = 9~15 的情况并不视为错误。 4 数据段:数据段可包含 0~8 个字节的数据。从 MSB(最高位)开始输出。 6 ACK段:ACK 段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。 ????????*1 发送单元的 ACK 段发送单元在 ACK 段发送 2 个位的隐性位。*2 接收单元的 ACK 段接收到正确消息的单元在 ACK 槽(ACK Slot)发送显性位, 通知发送单元正常接收结束。这称作“发送 ACK”或者“返回 ACK”。 7 帧结束:帧结束是表示该该帧的结束的段。由 7 个位的隐性位构成。 遥控帧????????接收单元向发送单元请求发送数据所用的帧。遥控帧由 6 个段(?帧起始:表示帧开始、仲裁段:表示帧的优先级的段,可请求具有相同ID的数据帧、控制段:表示数据的字节数及保留位的段、CRC段:检查帧的传输错误的段、ACK段:表示确认正常接收的段、帧结束:表示遥控帧结束的段。)组成。遥控帧没有数据帧的数据段。 ?1 数据帧和遥控帧的不同 错误帧????????用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。 (1) 错误标志:错误标志包括主动错误标志和被动错误标志两种。主动错误标志: 6 个位的显性位。被动错误标志: 6 个位的隐性位。 注:主动错误标志:处于主动错误状态的单元检测出错误时输出的错误标志。?被动错误标志:处于被动错误状态的单元检测出错误时输出的错误标志。 过载帧????????过载帧是用于接收单元通知其尚未完成接收准备的帧。过载帧由过载标志和过载界定符构成。(1) 过载标志:6 个位的显性位。过载标志的构成与主动错误标志的构成相同。(2) 过载界定符:8 个位的隐性位。过载界定符的构成与错误界定符的构成相同。 帧间隔????????帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间隔。 ?(1) 间隔:3 个位的隐性位。(2) 总线空闲:隐性电平,无长度限制(0 亦可)。本状态下,可视为总线空闲,要发送的单元可开始访问总线。(3) 延迟传送(发送暂时停止):8 个位的隐性位。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:33:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |