当前位置: 首页 > 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 错误帧(发送方发送数据错误会发送的状态帧)

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

http://www.lryc.cn/news/509470.html

相关文章:

  • “乡村探索者”:村旅游网站的移动应用开发
  • 前端案例---自定义鼠标右键菜单
  • 浅谈归一化
  • lodash常用函数
  • 触控算法总结
  • 齐次矩阵包含平移和旋转
  • Move AI技术浅析(四):运动跟踪与估计
  • NCR+可变电荷块3——NCB/cell绘图1
  • 数据仓库是什么?数据仓库简介
  • AI的进阶之路:从机器学习到深度学习的演变(二)
  • C++中属性(Attributes)
  • Go语言中的defer,panic,recover 与错误处理
  • (C语言)力扣 904.水果成篮
  • 2024 年12月英语六级CET6听力原文(Lecture部分)
  • CentOS下,离线安装vscode的步骤;
  • ubuntu停止.netcore正在运行程序的方法
  • 机器学习基础 衡量模型性能指标
  • 《OpenCV计算机视觉》-对图片的各种操作(均值、方框、高斯、中值滤波处理)及形态学处理
  • 如何让Tplink路由器自身的IP网段 与交换机和电脑的IP网段 保持一致?
  • 【JetPack】Navigation知识点总结
  • InnoDB引擎的内存结构
  • Y3地图制作1:水果缤纷乐、密室逃脱
  • ESP32_H2(IDF)学习系列-ADC模数转换(连续转换)
  • 如何通过TikTok成功引流到独立站
  • 生成签名文件 .keystore
  • Mono里运行C#脚本3—mono_jit_init
  • 龙迅#LT6911C适用于HDMI转MIPI/LVDS产品应用,分辨率高达4K30HZ,内置程序,支持KEY(HDCP)!
  • 阿里云虚拟主机ecs镜像如何转移到本地virtualbox上
  • 虚拟机桥接模式
  • 酷睿i7和i5哪个好?i5和i7的区别介绍