CAN基础概念

news2024/11/28 5:30:47

文章目录

  • 目的
  • 控制器、收发器、总线
  • 帧格式
  • CAN2.0和CAN-FD
  • 波特率与采样点
  • 工作模式
  • 总结

目的

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 来调整波特率。常用的波特率设置如下:

波特率BS1BS2
125kbps23980
250kbps11940
500kbps5920
1000kbps2910
2000kbps145
4000kbps72
5000kbps52
8000kbps31

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

工作模式

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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经历网数据库共享

经历网,为留住您的经历而生 点击 经历网 进入网站查看当前数据 经历网网址:https://www.jili20.com/ 以下 数据库 数据 截止至 2023年9月13日 1)百度网盘 提取 链接:https://pan.baidu.com/s/1WwR4cI9lbSAYTuffo8qmVQ 或点击 此…

微信小程序的在线课外阅读打卡记录系统uniapp

本文从管理员、学生和教师的功能要求出发,中学课外阅读记录系统中的功能模块主要是实现学生、教师、阅读任务、阅读打卡、提醒信息、阅读排行、任务计划、阅读类型、在线考试等。经过认真细致的研究,精心准备和规划,最后测试成功,…

zemax畸变与消畸变

物体不同位置的放大率不同,产生图形变形 这里选择zemax自带的案例: 畸变效果: 明显的负畸变(桶形畸变) 从场曲畸变图中可以看出: 该系统的最大畸变大约为38% 放入图片观察成像效果: 优化操作数…

GpsAndMap模块开源,欢迎测评

背景 之前的文章有提到,最近在使用folium的过程中,深感对于一个非专业人员来说,GPS坐标以及其所隐含的GPS坐标系,以及不同GPS坐标系之间的相互转换关系,不是一个十分清晰的概念,往往造成在使用GPS坐标在fo…

基本的SELECT语句——“MySQL数据库”

各位CSDN的uu们好呀,好久没有更新小雅兰的MySQL数据库专栏啦,接下来一段时间,小雅兰都会更新MySQL数据库的知识,下面,让我们进入今天的主题吧——基本的SELECT语句!!! SQL概述 SQL语…

Linux - 性能可观察性工具

文章目录 常用的Linux性能可观察性工具图解小结 常用的Linux性能可观察性工具 以下是一些常用的Linux性能可观察性工具: top: 显示实时的系统性能数据,包括CPU使用率、内存使用情况、进程信息等。 htop: 类似于top,但提供了更多的交互式功能…

谷粒商城----rabbitmq

一、 为什么要用 MQ? 三大好处,削峰,解耦,异步。 削峰 比如秒杀,或者高铁抢票,请求在某些时间点实在是太多了,服务器处理不过来,可以把请求放到 MQ 里面缓冲一下,把一秒内收到的…

Arcgis栅格转点时ERROR 999999: 执行函数时出错。 无法创建要素数据集。 执行(RasterToPoint)失败

Arcgis栅格转点时ERROR 999999: 执行函数时出错。 无法创建要素数据集。 执行(RasterToPoint)失败。 问题描述 原因 输出点要素的位置不对 解决方案 点击新建文件地理数据库 然后在该文件地理数据库下输出

RocketMQ 消息传递模型

文章目录 0. 前言1. RocketMQ的消息传递模型1.1. 同步发送1.2. 异步发送1.3. 单向发送 2. RocketMQ的批量发送和消费2.1 批量发送2.2 批量消费2.3 Spring Boot集成RocketMQ官方starter 示例 3. 总结4. 参考文档5. 源码地址 0. 前言 RocketMQ 支持6种消息传递方式,我…

【Java 基础篇】Java 泛型:类型安全的编程指南

在 Java 编程中,泛型是一项强大的特性,它允许您编写更通用、更安全和更灵活的代码。无论您是初学者还是有经验的 Java 开发人员,了解和掌握泛型都是非常重要的。本篇博客将从基础概念一直深入到高级应用,详细介绍 Java 泛型。 什…

nrf52832蓝牙GAP 通用访问规范

nrf52832蓝牙GAP 通用访问规范 文章目录 nrf52832蓝牙GAP 通用访问规范前言一、蓝牙GAP(通用访问配置文件)可以设置什么参数?二、使用步骤广播名称修改广播名字长度;全显示和自定义显示中文显示广播名称 蓝牙图标没有图标加入图标…

ArmSom-W3开发板之PCIE的开发指南(一)

1. 简介 RK3588从入门到精通本⽂介绍RK平台配置pcie的方法开发板:ArmSoM-W3 2、PCIE接口概述 PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机内部组件的高速接口标准。以下是关于PCIe接口的简要介绍: …

【计算机网络】 TCP流量控制——滑动窗口和累积应答

文章目录 累积应答TCP流量控制——滑动窗口 累积应答 我们前面所说的是我们每发送一个包对端就要回一个ack,那么这样效率太慢了,我们这里就有一个累积应答的机制,就是说我们客户端累积发送多个包,然后服务端再统一进行回复。 TCP…

被“多元平等共融”种草——2023谷歌开发者大会参会体验

谷歌开发者大会又称Google I/O Connect,是谷歌公司每年一次举办的开发者年会,谷歌中国的开发者大会按照惯例是在每年9月份的上海世博中心举办,为期两天。这两天中,通过主旨大会和多场连续专题演讲以及现场演示向参会人员展示谷歌产…

【Teams】Teams的组织名称变更

最近在使用Teams的过程中,发现有些企业创建组织的过程中创建了默认的组织:MSFT。如果创建组织的过程中没有修改组织名称,我们就会发现默认的组织名称就是MSFT。如果多个企业没有更改MSFT则可能在切换Teams账户的时候可能不知道目前Teams切换的…

Jetpack Compose基础组件之 — Text

Text的源码参数预览 Composable fun Text(text: String,modifier: Modifier Modifier,color: Color Color.Unspecified,fontSize: TextUnit TextUnit.Unspecified,fontStyle: FontStyle? null,fontWeight: FontWeight? null,fontFamily: FontFamily? null,letterSpac…

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)

🎈🎈🎈YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV1提出论文:You Only Look Once: Unified, Real-Time Object Detection 1、物体检测经典方法 two-stage(两阶段):Faster-rc…

PMP-项目启动过程组的重要性

一、什么是项目启动过程组 启动过程组包括定义一个新项目或现有项目的一个新阶段,授权开始该项目或阶段的一组过程。启动过程组的目的是:协调相关方期望与项目目的,告知相关方项目范围和目标,并商讨他们对项目及相关阶段的参与将如…

flask查询工具

fist_index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>电话查询工具</title> </head> <body><table><form action"/search_phone" method"get&…

《PostgreSQL备份与恢复:步骤与最佳实践》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…