STM32-CAN总线

devtools/2025/2/3 0:29:49/

1.CAN总线简介

CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线

2.CAN总线特征

  • 两根通信线(CAN_H、CAN_L),线路少,无需共地
  • 差分信号通信(相对的是单端信号),抗干扰能力强(意思是当有干扰时,两根线同时产生波动,但两根线的差值不变)
  • 高速CAN(ISO11898):125k~1Mbps,<40m
  • 低速CAN(ISO11519):10k~12kbps,<1km
  • 异步,无需时钟线,通信速率由设备各自约定
  • 半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序
  • 可实现多个主控设备相互进行通讯
  • 11位/29位报文ID,用于区分消息功能,同时决定优先级
  • 可配置1~8字节的有效载荷
  • 可实现广播式和请求式两种传输方式
  • 应答、CRC校验、位填充、位同步、错误处理等特性

总结:CAN总线就是一组半双工异步串行通信的差分信号总线。

3.CAN总线硬件电路

  • 每个设备通过CAN收发器挂载在CAN总线网络
  • CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连
  • 高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻(作用:1.防止回波反射,2.没有设备操作时,将两根差分线的电压收紧)
  • 低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻(作用:防止回波反射

4.CAN电平标准 

  • CAN总线采用差分信号,即两线电压差(Vcan_h-Vcan_l)传输数据位
  • 高速CAN规定:

                电压差为0V时表示逻辑1(隐性电平)

                电压差为2V时表示逻辑0(显性电平)

  • 低速CAN规定:

                电压差为-1.5V时表示逻辑1(隐性电平)

                电压差为3V时表示逻辑0(显性电平)

5.CAN总线帧格式

帧格式用途
数据帧发送设备主动发送数据(广播式)
遥控帧接受设备主动请求数据(请求式)
错误帧某个设备检测出错误时向其他设备通知错误
过载帧接受设备通知其尚未做好接受准备
帧间隔用于将数据帧及遥控帧与前面的帧分离开


http://www.ppmy.cn/devtools/155576.html

相关文章

1、云计算

云是一种基于互联网的计算技术和服务模式&#xff0c;它可以将计算资源、存储资源、软件资源等进行整合和虚拟化&#xff0c;以按需使用、可灵活扩展的方式提供给用户&#xff0c;就像把传统的本地计算资源和服务放到了一个庞大的 “云端”&#xff0c;用户可以通过网络随时随地…

Ubuntu16.04编译安装Cartographer 1.0版本

说明 官方文档 由于Ubuntu16.04已经是很老的系统&#xff0c;如果直接按照Cartographer官方安装文档安装会出现代码编译失败的问题&#xff0c;本文给出了解决这些问题的办法。正常情况下执行本文给出的安装方法即可成功安装。 依赖安装 # 这里和官方一致 # Install the req…

深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)

深入解析“legit”的地道用法——从俚语到正式表达 一、引言 在社交媒体、科技圈甚至日常对话中&#xff0c;我们经常会看到或听到“legit”这个词。比如最近 Sam Altman 在 X&#xff08;原 Twitter&#xff09;上发的一条帖子中写道&#xff1a; we will obviously deliver …

kamailio-ACC_JSON模块详解【后端语言go】

要确认 ACC_JSON 模块是否已经成功将计费信息推送到消息队列&#xff08;MQueue&#xff09;&#xff0c;以及如何从队列中取值&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 确认 ACC_JSON 已推送到队列 1.1 配置 ACC_JSON 确保 ACC_JSON 模块已正确配置并启用。以下…

10:预处理

预处理 1、宏替换2、头文件包含3、条件编译4、typedef和#define的区别5、#define中的注意点5.1、使用do....while(0)5.2、#和##的含义 C语言编译器在编译程序之前&#xff0c;会先使用预处理器(预处理器)处理代码&#xff0c;代码经过预处理之后再送入编译器进行编译。预处理器…

嵌入式硬件篇---CPUGPUTPU

文章目录 第一部分&#xff1a;处理器CPU&#xff08;中央处理器&#xff09;1.通用性2.核心数3.缓存4.指令集5.功耗和发热 GPU&#xff08;图形处理器&#xff09;1.并行处理2.核心数量3.内存带宽4.专门的应用 TPU&#xff08;张量处理单元&#xff09;1.为深度学习定制2.低精…

Linux环境变量

查看所有环境变量 printenv env cat /proc/self/environ 这个命令会显示所有环境变量&#xff0c;但变量之间用 \0&#xff08;空字符&#xff09;分隔&#xff0c;适合程序读取而不是直接查看。 P A T H 特殊的环境变量&#xff0c; PATH特殊的环境变量&#xff0c; PATH特殊的…

STM32 AD多通道

接线图&#xff1a; 代码配置&#xff1a; 与单通道相比&#xff0c;将多路选择从初始化函数&#xff0c;调用到功能函数里&#xff0c;在功能函数里以此调用需要使用的通道 整体代码&#xff1a; //AD多通道 void AD_Init2(void) {//定义结构体变量GPIO_InitTypeDef GPIO_In…