CAN基础概念

2023-11-02

目的

CAN是非常常用的一种数据总线,被广泛用在各种车辆系统中。大多数时候CAN的控制器和收发器干了比较多的工作,从而对于写代码使用来说比较简单。这篇文章将对CAN使用上相关的基础内容做个说明。

控制器、收发器、总线

CAN的电气连接主要分 控制器、收发器、总线 。控制器目前很多单片机都内置有;收发器通常是外置的(常见的比如TJA1050);总线由 H、L 两条差分信号线构成,通常总线的两端需要有两个120Ω的终端电阻,使 H、L 间呈60Ω。
在这里插入图片描述

CAN的总线上可以挂载多个节点,节点并不分主从,想发数据发就行,CAN控制器会依据数据头部带的ID信息进行仲裁,优先级高的数据继续发送。大多数CAN控制器包含先进先出的发送和接收邮箱,可以设置发送失败后自动重发。CAN控制器可以设置接收消息ID过滤器,只有符合条件的ID并且CRC校验通过的数据(CAN的一条完整的数据是自带CRC校验的)才会存放到接收邮箱中。
在这里插入图片描述

CAN控制器硬件自带收发邮箱、接收带过滤器以及自带校验等,对于应用层写代码使用来说是比较方便的。

帧格式

CAN的数据是一帧一帧传输的,可以分为 数据帧、遥控帧、错误帧、过载帧、间隔帧 ,大多数时候我们只要关系数据帧即可。

一帧数据中头部是包含ID的,ID分为标准ID和扩展ID,区别只是位数不同。
在这里插入图片描述

CAN2.0和CAN-FD

目前来说在用的CAN主要分为 CAN2.0CAN-FDCAN2.0 数据帧一帧最大可以传输8字节,最高波特率为1000kbps。 CAN-FD 可以向下兼容 CAN2.0 ,最大的变化在于数据段,一帧最大可以传输64字节,并且数据段波特率可以和其他部分不一样,最大可以到8000kbps。
在这里插入图片描述

很多情况下称 CAN2.0bxCAN

波特率与采样点

CAN的波特率设置有点特别。经过分频后到达CAN控制器的的时钟信号以一个个 tq 来表示,CAN通讯中每个 bit 由多个时间段组成,每个时间段包含若干个 tq
在这里插入图片描述

SYNC_SEG 段固定占 1tqBS1BS2 可以配置多个 tq 。通过调整时钟频率和 BS1BS2tq 数量可以调整CAN通讯波特率。另外需要注意的是 BS1BS2 之间的时刻是真正采集数据值的时刻,通常需要控制 (SS + BS1) / (SS + BS1 + BS2)75%~85% 之间。
在这里插入图片描述

上图的 SJW 用于控制动态调节 BS1BS2 长短(总长度不变),从而提供一定的采样点冗余。

通常来有一种做法是固定CAN的时钟为40MHz,不进行分频,然后调节 BS1BS2 来调整波特率。常用的波特率设置如下:

波特率 BS1 BS2
125kbps 239 80
250kbps 119 40
500kbps 59 20
1000kbps 29 10
2000kbps 14 5
4000kbps 7 2
5000kbps 5 2
8000kbps 3 1

需要注意的是这里的 BS1 段只是STM32中的分段方式,很多时候该段其实可以细分为 PTSBS1 两部段。

工作模式

CAN控制器通常可以工作在下面几种模式下(不同芯片对于各模式的叫法可能不同)。各个模式的区别只是输入输出信号连接不同。
在这里插入图片描述

总结

CAN本身东西是不少的,但如果只是需要使用CAN来进行数据收发的话需要了解的内容并不算多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN基础概念 的相关文章

随机推荐

  • 学生管理系统主要界面

    目录 1 登录界面 login 2 信息管理界面 main 3 页面展示 本篇文章主要介绍学生管理系统主要界面 至于各界面中所含代码均基于Servlet 创建 使用 生命周期 http协议 http请求 http响应 过滤器 Ajax 异步
  • gtest编译和使用

    最近想总结一下gtest的使用 方便后面查阅 1 编译安装googletest 2 编写测试用例 3 编译测试和调试代码 1 编译安装googletest github上下载googletest release 1 10 0 这里需要注意该
  • 关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解

    关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解 以正点原子按键输入实验为例 1 按键KEY0 lt gt PE4 按键另一端接GND 2 按键KEY1 lt gt PE3 按键另一端接GND 3 按键WK
  • 【力扣】最接近的三数之和

    给你一个长度为 n 的整数数组 nums 和 一个目标值 target 请你从 nums 中选出三个整数 使它们的和与 target 最接近 返回这三个数的和 假定每组输入只存在恰好一个解 示例 1 输入 nums 1 2 1 4 targ
  • 生命的进程

    比我们活着时间长的人自然能呼吸到更多的空气 也必将有我们所不了解的生活阅历和技能 尊重他人 就是成就自己
  • VulnHub-Sick0s1.2

    目录 简介 信息收集 漏洞发现 漏洞利用 权限提升 总结 简介 该靶机是Sick0s系列的第二个靶机 总体来说不难 提权那里需要花点时间 毕竟linpeas脚本没有将计划任务标红 总之我个人尝试了很久内核提权 浪费了大量时间 而且不知道是w
  • C++函数参数的默认值

    一 函数参数的默认值 1 函数参数的默认值就是说在声明函数或者定义函数的时候直接在参数后给赋值 这样在函数调用的时候调用方可以不用再给传值 它会默认使用它的默认值 错误实例 在给函数参数赋默认值的时候要注意以下几点 1 参数默认值必须从右向
  • GET--POST的同步/异步请求

    同步请求的过程不能进行其他操作 而异步请求相当于开了一个支路 可以进行其他操作 但是请求的结果得返回到主线程 GET同步请求 NSString strURL http api map baidu com place v2 search qu
  • 客户端下载

    include
  • 设计模式的 C++ 实现---中介者模式

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 工厂方法模式 一 工厂方法模式 二 抽象工厂模式 一 抽象工厂模式 二 原型模式 外观模式 前言 中介者模式主要用于多个对象之间的交互 所谓交互就是会互相调用对方的接口方法 中
  • JDK1.8 下载及安装

    JDK 下载 官网下载地址 https www oracle com java technologies javase downloads html 打开网页后找到 Java SE 8u241 点击 JDK Download 选择电脑对应的
  • Grafana插件Plugin中文汉化

    示例Github地址 汉化三方插件 前面说过汉化Grafana的工作 目前在7 2 1上面 大部分已经完成 细节继续完善 今天考虑在第三方插件上做一些汉化 点到插件一看全是英文感觉很突出 领导看到了也不爽啊 找个软的捏 饼图在展示方面比较直
  • C++ OJ习题练习(十)设计管理出版物的类

    Problem Description 某出版社发行图书和光盘 利用继承设计管理出版物的类 要求如下 建立一个基类Publication存储出版物的标题title 出版物名称name 单价price及出版日期date 用Book和CD类分别
  • Horizon Client 配置设置和命令行选项

    Horizon Client 配置设置和命令行选项 Twitter FaceBook LinkedIn Weibo 添加到库 添加到库 RSS 下载 PDF 发送反馈 反馈 编辑 评论 更新时间 2022年10月05日 选择的产品版本 VM
  • Hexo博客优化之Next主题美化

    前言 有了前面几篇博客的介绍 我们就可以很容易的搭建并编辑我们的博客了 不过既然是属于自己的博客网站 自然也就想让其更加美观 更有意思 所以呢我下面介绍一下Hexo博客的主题美化操作 1 Next主题 Hexo博客支持很多主题风格 其中Ne
  • error trying to connect: 远程主机强迫关闭了一个现有的连接。 (os error 10054)

    今天运行自动化测试的代码时 出现了这个问题 检索了一下 发现是chrome版本更新 导致驱动chromedriver不适配导致的 后来找了淘宝镜像 发现只有到114 还是不能使用 最后还是找到了 提供一下链接 不知道需不需要科学上网 我是开
  • C语言 看图说话-指针类型的扩展——数组指针

    1 指针数组是什么 答 指针类型的数组 2 数组指针是什么 答 指向数组的指针 它是扩展的指针类型 3 数组指针与基本类型指针的区别 答 在这个图片中 第一行就为基本类型的指针 不难看出 数组指针所指向的空间更大 再看后两行 前边为指针数组
  • Matlab读取CSV文件,并进行矩阵处理

    我们在进行科研时会碰到仪器生成的数据为 csv的文件 这时候使用matlab进行读取处理 核心思想是对读取到的数据按照矩阵进行处理 处理过程如下 第一步 filename D csv 读入csv数据 截取数值部分 诀窍 把矩阵想象成矩形 左
  • 在Linux(Ubuntu20.04)上编译Chromium,附相关命令学习解释

    以下内容基于Google官方文档 系统要求 8GB 以上内存 建议 16GB 以上 实测 11GB 可以稳定 build 说明见下文 100GB 以上空闲空间 实测 chromium 文件夹最少需要 65GB 已安装 Python3 和 G
  • CAN基础概念

    文章目录 目的 控制器 收发器 总线 帧格式 CAN2 0和CAN FD 波特率与采样点 工作模式 总结 目的 CAN是非常常用的一种数据总线 被广泛用在各种车辆系统中 大多数时候CAN的控制器和收发器干了比较多的工作 从而对于写代码使用来