车载开发学习——CAN总线
CAN总线又称为汽车总线,全程为“控制器局域网(Controller Area Network)”,即区域网络控制器,它将区域内的单一控制单元以某种形式连接在一起,形成一个系统。在这个系统内,大家以一种大家都认可的“语言”来交流沟通,这种“语言”便是数据传输协议。CAN总线最早是由德国Bosch公司和Inter公司合作开发,目的就是为了解决汽车上众多电子控制单元之间数据的传输问题,它是数据交换的一种串行通讯协议。
为什么使用CAN?
汽车工业蓬勃发展,汽车的电子控制单元逐渐增多。各电控单元之间的信号交换导致汽车线束的级数增加,复杂粗大的线束与汽车有限的布线空间之间矛盾越来越突出,繁多的线束导致电气系统可靠性下降,同时增加了重量。
CAN总线将汽车内部各电控单元之间连接成一个局域网络,实现了信息的共享,大大减少了汽车的线束,如下面的示意图:


比如上图中,每个部分的多个器件都挂载在CAN总线上(一个CAN总线上的所有器件通讯速率必须相同),各个部分再汇集到网关,由网关分配实现各个不同速率的部分之间通讯,这样就很方便轻松实现了对汽车整体电控部分的检测与控制。
子控制单元之间数据的传输问题,它是数据交换的一种串行通讯协议。

CAN总线应用实例
既然这是一个系统,那么这个系统是如何构成的呢?CAN总线主要由导线、控制器、收发器和终端电阻四部分组成。其中导线为由两根普通铜导线绞在一起的双绞线;收发器负责接受和发送网络上共享的信息;控制器的作用是对收到和发送的信号进行翻译;电阻是阻止CAN总线信号产生对变化电压的反射,当电阻出现故障,控制单元的信号将会是无效。

CAN协议及组成
CAN协议经过ISO标准化后有两个标准ISO11898标准和IS011519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准(闭环),而IS011519-2是针对通信速率为125Kbps以下的低速通信标准(开环)。
Kbps:总线的通信速率,指的是位速率。或称为比特率(和波特率不是一回事),表示的是:单位时间内,通信线路上传输的二进制位的数量,其基本单位是 bps 或者 b/s (bit per second)。
CAN的组成一般有两种方式:
- 1:CPU与CAN控制器集成到一起、再外接CAN收发器;
- 2:另一种是CPU与CAN控制器分开的,使用的时候需要配置CAN接口电路,比较麻烦。
STM32中就是采用第一种方式,将CAN接口集成在芯片内,使用的时候再外接CAN收发器(顾名思义,可发送,可接收),常用的有TJA1050或者82C250。

CAN收发器是用于TTL电平与差分电压信号相互转换的,
- TTL电平即单片机引脚直接提供的电平,逻辑0代表低电平,逻辑1代表高电平;
- 而差分电压信号则为固定的电压值。
2. CAN通信过程
以ISO11898 标准的高速、短距离闭环网络为例,总线最大长度为 40m,通信速度最高为 1Mbps。在 CAN 总线的起止端有一个 120Ω的终端电阻,是用来来做阻抗匹配,以减少回波反射。

CAN总线技术原理
汽车上能采用CAN总线技术,那么CAN总线技术有哪些特点呢?
- 整体结构特点
CAN为多主工作方式,即每个节点均可以主动发送信息,没有主从之分。这个网络上的任意节点都可以在任意时刻主动的向网络上的其它节点发送信息,完全的自主独立。
- 信息内容分等级
CAN网络上的信息分为不同的优先级,可以满足汽车上不同操作的实时要求。高优先级的信息最快可以在134微秒内送达。
- 非破坏性仲裁技术
当多个节点向总线发送信息时,优先级低的节点会主动退出发送,优先级高的节点的信息可以不受影响的继续传输。
- 报文滤波实现信息传递
通过报文滤波就可以实现点对点、一点对多点及全局广播等几种方式实现数据的传输和接受,不需要专门的协调调度。
- 传输介质
CAN的通信介质为双绞线、同轴电缆或光纤,可选择性多。
本文主要是简单介绍了车载开发技术中的CAN总线板块,有关车载开发技术还有许多需要深入学习的。这里文章写得比较笼统,更多详细内容可以参考《车载开发手册》点击可以查看详细内容。

基于以上特点,CAN总线有系统数据稳定可靠、线间干扰小、抗干扰能力强等特点,同时CAN总线专为汽车量身定做,可以承受住汽车上恶劣的工作环境,比如点火线圈点火时产生的强大的反充电压、汽车发动机机仓内100℃左右的高温等恶劣工况。
相关文章:
车载开发学习——CAN总线
CAN总线又称为汽车总线,全程为“控制器局域网(Controller Area Network)”,即区域网络控制器,它将区域内的单一控制单元以某种形式连接在一起,形成一个系统。在这个系统内,大家以一种大家都认可…...
2023年知名国产数据库厂家汇总
随着信创国产化的崛起,大家纷纷在寻找可替代的国产数据库厂家。这里小编就给大家汇总了一些国内知名数据库厂家,仅供参考哦! 2023年知名国产数据库厂家汇总 1、人大金仓 2、瀚高 3、高斯 4、阿里云 5、华为云 6、浪潮 7、达梦 8、南大…...
【ARM Coresight SoC-400/SoC-600 专栏导读】
文章目录 1. ARM Coresight SoC-400/SoC-600 专栏导读目录1.1 Coresight 专题1.1.1 Performance Profiling1.1.2 ARM Coresight DS-5 系列 1. ARM Coresight SoC-400/SoC-600 专栏导读目录 本专栏全面介绍 ARM Coresight 系统 及SoC-400, SoC-600 中的各个组件。 1.1 Coresigh…...
在Go中创建自定义错误
引言 Go提供了两种在标准库中创建错误的方法,[errors.New和fmt.Errorf],当与用户交流更复杂的错误信息时,或在调试时与未来的自己交流时,有时这两种机制不足以充分捕获和报告所发生的情况。为了传达更复杂的错误信息并实现更多的…...
Vue.js2+Cesium1.103.0 十三、通过经纬度查询 GeoServer 发布的 wms 服务下的 feature 对象的相关信息
Vue.js2Cesium1.103.0 十三、通过经纬度查询 GeoServer 发布的 wms 服务下的 feature 对象的相关信息 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><div style"position: absolute;z-index: 999;bott…...
使用STM32怎么喂狗 (IWDG)
STM32F1 的独立看门狗(以下简称 IWDG)。 STM32F1内部自带了两个看门狗,一个是独立看门狗 IWDG,另一个是窗口看门狗 WWDG, 本章只介绍独立看门狗 IWDG,窗口看门狗 WWDG 会在后面章节介绍。 本章要实现的功能…...
GEE:计算和打印GEE程序的执行时间
作者:CSDN @ _养乐多_ 本文记录了计算和打印程序的执行时间的Google Earth Engine (GEE)代码,并举例说明。 大家在执行GEE代码的时候,有时候为了对比两个不同的脚本,不知道代码执行花费了多少时间。本文记录了打印代码执行时间的函数,并举了一个应用案例说明。可以知道…...
GDPU 数据结构 天码行空5
一、实验目的 1.掌握队列的顺序存储结构 2.掌握队列先进先出运算原则在解决实际问题中的应用 二、实验内容 仿照教材顺序循环队列的例子,设计一个只使用队头指针和计数器的顺序循环队列抽象数据类型。其中操作包括:初始化、入队…...
SQLAlchemy学习-12.查询之 order_by 按desc 降序排序
前言 sqlalchemy的query默认是按id升序进行排序的,当我们需要按某个字段降序排序,就需要用到 order_by。 order_by 排序 默认情况下 sqlalchemy 的 query 默认是按 id 升序进行排序的 res session.query(Project).all() print(res) # [<Project…...
如何轻松打造数字人克隆系统+直播系统?OEM教你快速部署数字人SaaS系统源码
数字人做为国内目前最热门的人工智能创业赛道,连BAT都在跑步入局,中小企业更是渴望不渴及。但随着我国数字人头部品牌企业温州专帮信息科技有限公司旗下灰豚AI数字人平台的开源。使得中小企业零门槛可以轻松打造灰豚AI数字人一模一样的平台。灰豚数字人A…...
药物滥用第四篇介绍
OXY: 羟考酮(Oxycodone,OXY),分子式为C18H21NO4,是一种半合成的蒂巴因衍生物。羟考酮为半合成的纯阿片受体激动药,其作用机制与吗啡相似,主要通过激动中枢神经系统内的阿片受体而起镇…...
Apache Doris (四十三): Doris数据更新与删除 - Update数据更新
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Update数据更新原理...
面试算法29:排序的循环链表
问题 在一个循环链表中节点的值递增排序,请设计一个算法在该循环链表中插入节点,并保证插入节点之后的循环链表仍然是排序的。 分析 首先分析在排序的循环链表中插入节点的规律。当在图4.15(a)的链表中插入值为4的节点时&…...
python中不可变类型和可变类型
不可变类型:修改之后内存存储地址不会发生改变 可变类型:修改之后内存存储地址发生改变 set...
vue3封装Axios库的 API 请求并使用拦截器来处理请求和响应
目录 为什么添加封装该部分? 具体代码: 对代码的解释: 如何使用? 为什么添加封装该部分? 简化发送 HTTP 请求的流程提供统一的错误处理机制支持用户状态管理和鉴权具备良好的扩展性和灵活性提高开发效率并使得代码…...
RK3588开发笔记(二):基于方案商提供sdk搭建引入mpp和sdk的宿主机交叉编译Qt5.12.10环境
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/133915614 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…...
rust学习——函数返回值
概念 Rust 中的函数定义以 fn 开始,后跟着函数名和一对圆括号。大括号告诉编译器函数体在哪里开始和结束。 特殊的地方——函数返回值 错误的写法 正解1 去掉分号 fn main() {let x plus_one(5);println!("The value of x is: {}", x); }fn plus_…...
【Cadence】配置文件cdsinit和cdsenv的使用
文件功能 .cdsinit文件:主要负责一些加载项的设置,一些脚本工具及一些快捷键 .cdsenv文件:主要负责一些环境变量或者参数的设置 文件位置: (参照以下文件使用) Virtuoso配置文件“.cdsenv”文件介绍和使…...
软考 系统架构设计师系列知识点之基于架构的软件开发方法ABSD(6)
接前一篇文章:软考 系统架构设计师系列知识点之基于架构的软件开发方法ABSD(5) 所属章节: 第7章. 系统架构设计基础知识 第5节. 特定领域软件体系结构 相关试题 1. 基于架构的软件设计(ABSD)强调由商业、…...
MATLAB常用命令大全,非常详细(持续更新中)
** MATLAB命令大全 ** 管理命令和函数 help 在线帮助文件 doc 装入超文本说明 what M、MAT、MEX文件的目录列表 type 列出M文件 lookfor 通过help条目搜索关键字 which 定位函数和文件 Demo 运行演示程序 Path 控制MATLAB的搜索路径…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
