当前位置: 首页 > news >正文

STM32 高级 物联网通信之CAN通讯

目录

CAN通讯介绍

物理层

协议层

CAN的帧(报文)种类

1 数据帧(发送单元->接受单元)

2 远程帧(接受单元->发送单元)

3 错误帧(发送方发送数据错误会发送的状态帧)

4 过载帧(接收方放不下会发送到的状态帧)

5 帧间隔(状态)

数据帧介绍

远程帧介绍

CAN总线仲裁

CAN的位时序

STM32的CAN外设

CAN外设(CAN控制器)介绍

CAN控制器的3种工作模式

CAN控制器的3种测试模式

功能框图

主动内核

发送邮箱

接收FIFO

接收滤波器(过滤器)

STM32中 CAN的位时序


CAN通讯介绍

参考:CAN协议|Kvaser中文官网免费CAN协议教程

CAN(Controller Area Network 控制器局域网,简称CAN或者CAN bus)是一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信。

它基于消息传递协议(给消息添加了类型),设计之初在车辆上复用通信线缆,以降低铜线使用量,后来也被其他行业所使用。

CAN拥有了良好的弹性调整能力,可以在现有网络中增加节点而不用在软、硬件上做出调整。除此之外,消息的传递不基于特殊种类的节点,增加了升级网络的便利性。

物理层

CAN网络节点

一个CAN控制器:

  • 一般由MCU提供,STM32内部提供了一个CAN控制器

一个CAN收发器:

  • 收发器一般需要专门芯片提供。这里采用PD1050收发器芯片

控制器和收发器之间通过CAN_Tx及CAN_Rx信号线相连。

收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。

  • 这两根线做一个差值来表示收发和发

流程:

  • 发数据:。。。

  • 收数据:。。。

CAN总线网络

  • 闭环总线网络:遵循ISO 11898标准的高速短距离,最高传输距离40m,通讯速度最高为1Mbps,总线两端要求有一个120Ω的电阻。

  • 开环总线网络:遵循ISO11519-2标准的低速、远距离。最高传输距离1Km,通讯速度最高为125Kbps,两根总线串联两个2.2KΩ的电阻。

差分信号:

  • 两根信号线:振幅相同,相位相反,然后进行相减,

  • 再电路板要求:差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线。

  • 优点:抗干扰能力强。能有效抑制电磁干扰(EMI)

  • 缺点:差分信号一定要走两根等长、等宽、紧密靠近、且在同一层面的线。对电路板比较小,走线比较紧张的情况下,给布线带来挑战。差分信号线具有这些优点,在 USB 协议、485 协议、以太网协议及 CAN 协议的物理层中,都使用了差分信号传输。

  • 举例

  • 逻辑1(隐性电平)

    • CAN_High =CAN_Low = 2.5V

    • 电压差 VH-VL=0V

  • 逻辑 0 (显性电平)

    • CAN_High=3.5V,CAN_Low =1.5V

    • 电压差为 VH-VL=2V

协议层

CAN的帧(报文)种类

CAN总线是广播类型的总线。这意味着所有节点都可以侦听到所有传输的报文。无法将报文单独发送给指定节点;所有节点都将始终捕获所有报文。但是CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应。

CAN使用短报文,最大实用负载是94位。报文中没有任何明确的地址;相反,可以认为报文是通过内容寻址,也就是说,报文的内容隐式地确定其地址。

CAN总线上有5种不同的报文类型(或“帧”):数据帧、远程帧、错误帧、过载帧和帧间隔。

1 数据帧(发送单元->接受单元)

数据帧是最常见的报文类型,用于发送单元向接收单元发送数据。

2 远程帧(接受单元->发送单元)

远程帧用于接收单元向具有相同id的发送单元请求发送数据。

3 错误帧(发送方发送数据错误会发送的状态帧)

错误帧当检测出错误时向其他单元通知错误的帧。

相关文章:

STM32 高级 物联网通信之CAN通讯

目录 CAN通讯介绍 物理层 协议层 CAN的帧(报文)种类 1 数据帧(发送单元->接受单元) 2 远程帧(接受单元->发送单元) 3 错误帧(发送方发送数据错误会发送的状态帧) 4 过载帧(接收方放不下会发送到的状态帧) 5 帧间隔(状态) 数据帧介绍 远程帧介绍 C…...

“乡村探索者”:村旅游网站的移动应用开发

3.1 可行性分析 从三个不同的角度来分析,确保开发成功的前提是有可行性分析,只有进行提前分析,符合程序开发流程才不至于开发过程的中断。 3.1.1 技术可行性 在技术实现层次,分析了好几种技术实现方法,并且都有对应的成…...

前端案例---自定义鼠标右键菜单

之前右击出现默认的选项菜单&#xff0c;使用evt.preventDefault()把默认的去掉&#xff0c;然后自定义右击的样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…...

浅谈归一化

在深度学习中&#xff0c;对网络层进行归一化&#xff08;Normalization&#xff0c;简称Norm&#xff09;是一个重要的技巧。常见的归一化方法包括批归一化&#xff08;Batch Normalization&#xff09;、层归一化&#xff08;Layer Normalization&#xff09;、实例归一化&am…...

lodash常用函数

文章目录 一、数组1、chunk分组2、difference、differenceBy、differenceWith3、findIndex4、intersection、intersectionBy、intersectionWith5、union、unionBy、unionWith 二、对象1、pick、omit 2、get、set三、数学1、sum、sumBy2、range 四、工具函数1、isEqual、isEmpty…...

触控算法总结

一、触控湿手指算法的具体实现原理涉及多个方面的技术和方法,主要包括以下几个关键点 1.电容变化检测 电容式触摸屏通过检测电容变化来确定触摸位置。当手指接触屏幕时,会引起电容的变化。然而,当手指湿润时,水分会影响电容值,导致触摸屏误判成无法正确识别触控点 2.噪声过滤: …...

齐次矩阵包含平移和旋转

第一个矩阵旋转矩阵 A [ R 1 0 0 1 ] A\left[\begin{matrix}R_{1} & 0\\0 & 1\end{matrix}\right] A[R1​0​01​] 第一个平移矩阵 B [ 1 T 1 0 1 ] B\left[\begin{matrix}1 & T_{1}\\0 & 1\end{matrix}\right] B[10​T1​1​] C [ R 2 0 0 1 ] C\left[\be…...

Move AI技术浅析(四):运动跟踪与估计

一、运动跟踪与估计模块概述 运动跟踪与估计 是 Move AI 的核心模块之一&#xff0c;其主要任务是从提取到的关键点特征中&#xff0c;分析和理解运动的动态特性&#xff0c;包括运动轨迹、速度、加速度、方向等。该模块通常包括 时间序列分析 和 运动估计 两个子模块。 时间…...

NCR+可变电荷块3——NCB/cell绘图1

文献method参考&#xff1a; 蛋白质序列数据从uniprot中获取 https://www.uniprot.org/uniprotkb/P46013/entry https://www.uniprot.org/uniprotkb/P06748/entry、 1&#xff0c;电荷分布计算&#xff1a; Charge distribution was calculated as the sum of the charges …...

数据仓库是什么?数据仓库简介

数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持企业的管理决策。以下是对数据仓库的详细解释&#xff1a; 一、定义与特性 定义&#xff1a;数据仓库是构建在组织的现有数据基础上&#x…...

AI的进阶之路:从机器学习到深度学习的演变(二)

AI的进阶之路&#xff1a;从机器学习到深度学习的演变&#xff08;一&#xff09; 三、机器学习&#xff08;ML&#xff09;&#xff1a;AI的核心驱动力 3.1 机器学习的核心原理 机器学习&#xff08;Machine Learning, ML&#xff09;突破了传统编程的局限&#xff0c;它不再…...

C++中属性(Attributes)

属性&#xff08;Attributes&#xff09;在 C 中的完整讲解 在 C 中&#xff0c;属性&#xff08;Attributes&#xff09; 是一种编译时机制&#xff0c;用于附加元数据到函数、变量、类型等元素上&#xff0c;以指导编译器如何优化、检查、警告或者改变编译行为。通过属性&am…...

Go语言中的defer,panic,recover 与错误处理

目录 前言 三个关键字 defer语句 panic语句 recover函数 defer、panic、recover组成的错误处理 总结 前言 在其他编程语言中&#xff0c;如Java&#xff0c;宕机往往以异常的形式存在。底层抛出异常&#xff0c;上层逻辑通过try...catch...fanally机制捕获异常并处理&am…...

(C语言)力扣 904.水果成篮

写在所有的前面&#xff1a; 本文采用C语言实现代码 目录 写在所有的前面&#xff1a;题目说明题目&#xff1a;力扣 904.水果成篮题目出处题目描述Description输入Input输出Output样例Sample限制Hint 解答说明方案解题思路一般情况特殊情况 代码实现其他解释 题目说明 题目…...

2024 年12月英语六级CET6听力原文(Lecture部分)

2024 年12月英语六级CET6听力原文(Long Conersation和Passage) 1 牛津大学关于普遍道德准则的研究及相关观点与建议 译文 2 食物颜色对味觉体验及大脑预期的影响 译文 3 财务资源对意义与幸福之间关系的影响研究 译文...

CentOS下,离线安装vscode的步骤;

前置条件&#xff1a; 1.CentOS7; 步骤&#xff1a; 1.下载vscode指定版本&#xff0c;例如&#xff1b; 例如 code-1.83.1-1696982959.el7.x86_64.rpm 2.使用下面命令&#xff1a; sudo rpm -ivh code-1.83.1-1696982959.el7.x86_64.rpm 其他&#xff1a; 卸载vscode的命…...

ubuntu停止.netcore正在运行程序的方法

在Ubuntu系统中停止正在运行的.NET Core程序&#xff0c;你可以使用以下几种方法&#xff1a; 使用kill命令&#xff1a; 如果你知道.NET Core程序的进程ID&#xff08;PID&#xff09;&#xff0c;你可以直接使用kill命令来停止它。首先&#xff0c;使用ps命令配合grep来查找.…...

机器学习基础 衡量模型性能指标

目录 1 前言 ​编辑1.1 错误率(Error rate)&精度(Accuracy)&误差(Error)&#xff1a; 1.2 过拟合(overfitting): 训练误差小&#xff0c;测试误差大 1.3 欠拟合(underfitting)&#xff1a;训练误差大&#xff0c;测试误差大 1.4 MSE: 1.5 RMSE: 1.6 MAE: 1.7 R-S…...

《OpenCV计算机视觉》-对图片的各种操作(均值、方框、高斯、中值滤波处理)及形态学处理

文章目录 《OpenCV计算机视觉》-对图片的各种操作&#xff08;均值、方框、高斯、中值滤波处理&#xff09;边界填充阈值处理图像平滑处理生成椒盐图片均值滤波处理方框滤波处理高斯滤波处理中值滤波处理 图像形态学腐蚀膨胀开运算闭运算顶帽和黑帽 《OpenCV计算机视觉》-对图片…...

如何让Tplink路由器自身的IP网段 与交换机和电脑的IP网段 保持一致?

问题分析&#xff1a; 正常情况下&#xff0c;我的需求是&#xff1a;电脑又能上网&#xff0c;又需要与路由器处于同一局域网下&#xff08;串流Pico4 VR眼镜&#xff09;&#xff0c;所以&#xff0c;我是这么连接 交换机、路由器、电脑 的&#xff1a; 此时&#xff0c;登录…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...