MCU常见通信总线串讲(五)—— CAN总线协议

🙌秋名山码民的主页
😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
获取源码,添加WX

目录

  • 前言
  • 一、CAN总线概述
  • 二、CAN总线物理层
  • 三、CAN总线协议层
  • 最后


前言

首先明确一个概念,关于MCU中通信总线和通信协议,通信总线是一种用于连接各种外设和模块的物理接口,它可以传输数据和控制信息。通信协议则是指在通信总线上传输数据时所遵循的规则和约定,以确保不同设备之间能够正确地交换信息,我们也可以把他叫做通信总线协议。

系列文章,主要讲解以下几个总线协议,读者可以按需选择:

  1. UART和USART
  2. RS232、RS485总线
  3. IIC总线
  4. SPI总线
  5. CAN总线
  6. USB总线

一、CAN总线概述

CAN总线是控制器局域网络(Controller Area Network)的缩写,它是一种现代的通信协议和物理层总线标准,最初由德国的Bosch公司开发。CAN总线广泛应用于汽车、工业控制系统、航空航天领域以及其他需要可靠的实时通信的领域。CAN网络的消息是广播式的,即在同一时刻网络上所有节点侦测的数据是一致的,它是一种基于消息广播模式的串行通信总线。

can总线的优势:
包括高可靠性、实时性强、抗干扰能力强、通信效率高等优点。它可以支持多个节点之间的通信,并且能够在通信过程中自动进行错误检测和纠正,因此非常适合用于对通信质量要求较高的场合。

二、CAN总线物理层

CAN总线的物理层定义了在CAN总线上进行数据传输时所使用的电气和物理特性。根据CAN总线物理层的标准,有两种常见的物理层实现方式:

  1. CAN高/低速物理层:CAN总线的高/低速物理层适用于不同的通信速率要求。在高速物理层中,数据传输速率可达到最高1 Mbps;而在低速物理层中,数据传输速率通常为10 Kbps或者更低。

  2. 差分信号传输:CAN总线采用差分信号传输,即每个信号线都是成对出现的,一个为CAN_H(高电平),另一个为CAN_L(低电平)。这种差分传输方式可以提供较强的抗干扰能力,使得CAN总线能够在电磁干扰较强的环境中正常工作。

此外,CAN总线还有一些其他的物理层实现方式,如光纤CAN和无线CAN等。不同的应用场景可能需要不同的物理层实现方式,以满足其特定的通信需求。

三、CAN总线协议层

CAN总线协议层是指在CAN总线上进行数据传输时所采用的通信规则和协议。CAN总线协议层主要包括以下几个方面:

  1. 帧格式:CAN总线使用两种不同的帧格式,分别是标准帧和扩展帧。标准帧包含11位标识符,而扩展帧包含29位标识符,允许更多的消息标识符,以支持更大规模的网络和更多的节点。

  2. 通信方式:CAN总线采用基于事件的通信方式,节点之间可以根据消息的优先级进行通信,而无需主从节点的概念。这种通信方式使得CAN总线能够实现实时性较强的数据交换。

  3. 错误处理:CAN总线协议层定义了一套完善的错误处理机制,包括重发机制、错误帧标识和错误状态报告等,以确保数据传输的可靠性和稳定性。

  4. 数据帧和远程帧:CAN总线支持数据帧和远程帧。数据帧用于实际的数据传输,而远程帧用于请求其他节点发送特定的数据帧,从而实现数据的请求和响应。

  5. 过滤和屏蔽:CAN总线协议层支持过滤和屏蔽机制,可以根据标识符对接收到的消息进行过滤和筛选,从而只处理感兴趣的消息。

最后

如果本文对你有所帮助,还请三连支持一下博主!
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【原创】java+swing+mysql车辆维修管理系统设计与实现

摘要: 车辆维修管理系统是一个用于管理和追踪车辆维修过程的系统,它能够提高效率,减少错误,并提供详细的车辆历史记录,可以帮助车辆维修企业实现信息化管理,提高工作效率和客户满意度,降低运营…

生成式AI:压缩与加密的新方式

目前围绕生成式AI的大部分讨论都纯粹集中在结果上:你可以与它交谈,你可以生成艺术作品和视频,它可以生成声音。 这些都是非凡的成就。 然而,我相信,如果你以几种方式重新构建生成式AI,你会得到一些非常有趣…

Vatee万腾的数字化掌舵:Vatee科技引领未来的新高度

随着数字化时代的到来,Vatee万腾以其卓越的科技决策力成为引领潮流的掌舵者。 Vatee万腾通过对科技前沿的不懈探索,站在了数字化创新的最前沿。其领先的科技团队致力于发掘并应用最新的数字技术,为用户提供卓越的数字化体验。 Vatee万腾以其…

NR CA bandwidth class

CA配置对应的是Band combination,每个band对应支持的 CA bandwidth class,如下表Table 5.3A.5-1。 BW_channel,max对应的是协议中中规定的最大channel 带宽,FR1 R16对应的就是100MHZ。 如上述黄色字体部分,考虑的是实网下UE上报…

【React】Redux基本使用

什么情况使用 Redux ? Redux 适用于多交互、多数据源的场景。简单理解就是复杂 从组件角度去考虑的话,当我们有以下的应用场景时,我们可以尝试采用 Redux 来实现 某个组件的状态需要共享时 一个组件需要改变其他组件的状态时 一个组件需要…

自动化测试:PO模式设计框架详解

引言 你是否曾经因为每次更新功能都要重新写一堆自动化测试代码而感到疲惫不堪? 或者因为页面元素的频繁变动而不得不持续地修复测试脚本? 如果你也有这些苦恼,那么PO模式设计框架可能是解决之道。它可以让你以更简单、更高效的方式编写自…

SM5203 是一款完整的采用恒定电流/恒定电压的单节锂电池线性充电器

SM5203 1.2A/18V 锂电池线性充电芯片 简介: SM5203 是一款完整的采用恒定电流/恒定电压的单节锂电池线性充电器,并带有锂电池正负极反接保护功能,可以保护芯片和用户安全。由于采用了内部 PMOSFET 架构,加上防倒充电路&#xff…

前端开发人员应该知道的低代码系统知识和开源低代码开发平台

前端开发有多重要 前端一般指前端开发,主要是通过各种前端技术及工具进行产品界面开发,制定标准化代码,另外还要在页面增加交互的动态功能,通过技术改善用户体验,使得Web界面可以更友好的与用户互动。 前端开发是创建…

劲松HPV防治诊疗中心谭巍主任建议:这样锻炼可促使hpv转阴

锻炼可以帮助我们提升身体素质,也有利于身体健康,然而锻炼对于促进HPV转阴也有一定帮助,但并不是唯一的有效方法,即便如此锻炼仍然在hpv转阴方面发挥着一定作用。以下是一些建议,希望可以帮助你通过锻炼来促进HPV转阴&…

【python】Django——templates模板、静态文件、django模板语法、请求和响应

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 templates模板按app顺序寻找模板全局模板 静态文件jqueryBootstrap dja…

C语言--数组的长度计算【详细解释】

一.数组的长度计算公式 我们都知道字符串有特定的函数strlen,而数组没有,(虽然字符串也是一种特殊的数组) 但是,类似于这样的数组: int arr[]{12,89,1,5,31,78,45,12,12,0,45,142,21,12}; 我们很难一眼…

浏览器存储(localStorage和sessionStorage)

我们知道 js 写的效果,每次刷新都是从新执行,是不存在记录操作的,主要是大部分的效果不需要这样的处理 (一个 tab 切换,焦点图肯定不需要记住运行到哪里,刷新从新开始就好了)! 在 html5 之前,前…

DDR SDRAM 学习笔记

一、基本知识 1.SDRAM SDRAM : 即同步动态随机存储器(Synchronous Dynamic Random Access Memory), 同步是指其时钟频率与对应控制器(CPU/FPGA)的系统时钟频率相同,并且内部命令 的发送与数据传输都是以该时钟为基准…

gin索引 btree索引 gist索引比较

创建例子数据 postgres# create table t_hash as select id,md5(id::text) from generate_series(1,5000000) as id; SELECT 5000000postgres# vacuum ANALYZE t_hash; VACUUMpostgres# \timing Timing is on. postgres# select * from t_hash limit 10;id | …

八个开源免费单点登录(SSO)系统

使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密码、不必多次登录浪费时间。下面推荐一些市场上最好的开源SSO系统,可作为商业SSO替代。 单点登录(SSO)是一个登录服务层,通过一次登录访问多个应…

做外贸一个小失误可能会带来大的损失

在外贸里,虽然很多事情都是不可控的,但是我们还是需要做好自己该做的事情,将危险和不可控降低到最低的程度。那如何能够降低到最低呢? 比如在做合同,发票或者单据的时候,我们可能会喜欢依照公司固定的模板…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

【iOS】将网络请求封装在一个单例类Manager中(AFNetworking、JSONModel)

项目开发中会请求大量不同的API,若将网络请求三板斧直接写在Controller中会代码十分冗杂,干脆直接将AFNetWorking和JSONModel封装到一个全局的Manager单例类中,在Manager类中进行网络请求和数据解析 导入AFNetworking和JSONModel 参考【iOS…

linux查看端口占用情况

lsof命令 lsof(list open files)命令可以列出当前系统中打开的所有文件,包括网络端口。可以使用lsof命令查看某个端口被哪个进程占用。 具体的命令为:sudo lsof -i :端口号,其中端口号为需要查询的端口号。 netstat命令 使用netstat命令&a…

很全的家政小程序功能开发攻略;

随着互联网的发展,家政行业也逐步走向数字化。为了满足用户的需求,家政APP的开发成为了热门趋势。那么,如何定制开发一款家政APP呢?下面将为大家详细介绍。 1. 明确需求:首先需要明确家政APP的功能,包括预约…