首页 > 其他分享 >CAN学习笔记(一)CAN入门

CAN学习笔记(一)CAN入门

时间:2024-08-21 16:37:23浏览次数:9  
标签:发送 入门 ACK 笔记 学习 CRC 隐性 节点 显性

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

标签:发送,入门,ACK,笔记,学习,CRC,隐性,节点,显性
From: https://www.cnblogs.com/xddisme/p/18371976

相关文章

  • (4-7-01)文生图大模型实操:基于深度学习的图文匹配系统(1)工具类
    4.7 跨模态配对实战:基于深度学习的图文匹配系统本项目旨在构建一个多模态学习系统,专注于处理图像和文本数据的配对任务,主要基于CUHK-PEDES数据集。本项目实现了多种深度学习模型,包括LSTM、MobileNetV1和ResNet,以分别处理文本和图像特征的提取与融合。通过这些模型的结合,系......
  • 【C语言入门】如何使用动态内存分配来模拟“大小未知”的数组
    如何使用动态内存分配来模拟“大小未知”的数组引子举例应用结语引子在C语言中,定义一个“大小未知”的数组直接是不可行的,因为数组在声明时必须有确定的大小,要么是在编译时确定的常量表达式,要么是在C99或更高标准下,允许运行时确定大小的变长数组(VLA)。变长数组(Varia......
  • Docker快速入门 01 安装、部署环境
    1.简介和安装1.1简介Docker是一个应用打包、分发、部署的工具。打包:需要的环境变成一个“安装包”。分发:将“安装包”上传到云端,供他人获取。部署:将“安装包”下载下来后直接快速搭建运行环境。通俗讲就是轻量级的虚拟机,只虚拟需要的运行环境。1.2安装这里以Docker......
  • Docker快速入门 02 构建镜像
    本文以PythonWeb(Flask)小项目构建Docker镜像1.准备项目确保PythonWeb项目已准备好项目目录结构my-python-app/│├──app.py├──requirements.txt└──Dockerfileapp.py:Flask应用的主文件。fromflaskimportFlaskapp=Flask(__name__)@app.ro......
  • 机器学习线性回归算法——原理+python详细代码解析(sklearn)
    线性回归算法作为经典的机器学习算法之一,拥有极为广泛的应用范围,深受业界人士的青睐。该算法主要用于研究分析响应变量如何受到特征变量的线性影响。其通过构建回归方程,借助各特征变量对响应变量进行拟合,并且能够利用回归方程进行预测。鉴于线性回归算法较为基础、简单,所以比较......
  • 对抗训练综述学习笔记
    本文基于这篇综述进行讨论学习:《BaiT,LuoJ,ZhaoJ,etal.Recentadvancesinadversarialtrainingforadversarialrobustness[J].arXivpreprintarXiv:2102.01356,2021.》对抗训练主要目的是让模型能够对于对抗样本做出正确的判断。常见的对抗样本的生成方式(或者说......
  • 从零开始学习C++(1-1)
    本篇帖子学习C++输入输出。C++目前最常用的两种输入输出方法,cin/cout和scanf/printf。cin/cout这是C++入门必学且最最最基础的输入输出方式,在<iostream>头文件,std命名空间下。基本格式如下:cin>>x;cout<<x<<"\n";//"\n"为换行符注:很多教材会教你换行输出......
  • VUEX基础入门Store使用详解
    【1】vuex是什么github站点:https://github.com/vuejs/vuex,在线文档:https://vuex.vuejs.org/zh-cn/Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。每一个Vuex应用的......
  • DevOps入门(上)
    1:DevOps概念DevOps:Development和Operations的组合DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。DevOps希望做到的是软件产品交付过程中......
  • 豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
    在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完......