CAN总线基础详解以及stm32的CAN控制器

这篇具有很好参考价值的文章主要介绍了CAN总线基础详解以及stm32的CAN控制器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

CAN简介

CAN总线拓扑图

CAN总线特定

CAN应用场景

CAN的物理层

CAN的协议层

CAN数据帧介绍

CAN位时序介绍

数据同步过程

硬件同步

再同步

CAN总线仲裁

stm32的CAN控制器

CAN控制器介绍

CAN控制器模式

CAN控制器框图

接收过滤器

CAN控制器波特率计算

CAN相关寄存器

CAN主控制寄存器(CAN_MCR)

CAN位时序寄存器(CAN_BTR)

CAN 标识符寄存器(CAN_(T/R)IxR)

数据长度和时间戳寄存器(CAN_(T/R)DTxR)

CAN低位数据寄存器(CAN_(T/R)DLxR)

CAN高位数据寄存器(CAN_(T/R)DHxR)

CAN过滤器模式寄存器(CAN_FM1R)

CAN过滤器位宽寄存器(CAN_FS1R)

CAN 过滤器FIFO关联寄存器(CAN_FFA1R)

​CAN 过滤器激活寄存器(CAN_FA1R)

CAN 过滤器组x寄存器(CAN_FxR(1/2))


CAN简介

        CAN(Controller Area Network),是IOS国际标准化的串行通信协议 。为了满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需求。

CAN总线的发展史:

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

  • 低速CAN(ISO11519)通信速率10~125Kbps,总线长度可达1000米
  • 高速CAN(ISO11898)通信速率125Kbps~1Mbps,总线长度≤40米(经典CAN
  • CANFD 通信速率可达5Mbps,并且兼容经典CAN,遵循ISO 11898-1 做数据收发

CAN总线拓扑图

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN总线由两根线( CANL 和 CANH )组成,允许挂载多个设备节点(低速CAN:20 高速CAN:30)。

CAN总线特定

  1.   多主控制  每个设备都可以主动发送数据
  2.   系统的柔软性  没有类似地址的信息,添加设备不改变原来总线的状态
  3.   通信速度  速度快,距离远
  4.   错误检测&错误通知&错误恢复功能
  5.   故障封闭  判断故障类型,并且进行隔离
  6.   连接节点多  速度与数量找个平衡

CAN应用场景

CAN总线协议已广泛应用在汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。

CAN的物理层

  1. CAN使用差分信号进行数据传输,根据CAN_H和CAN_L上的电位差来判断总线电平。
  2. 总线电平分为显性电平(逻辑0)和隐性电平(逻辑1),二者必居其一。
  3. 显性电平具有优先权。发送方通过使总线电平发生变化,将消息发送给接收方。

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

电平

高速CAN

低速CAN

显性电平(0)

UCAN_H – UCAN_L=  2V

UCAN_H – UCAN_L = 3V

隐性电平(1)

UCAN_H – UCAN_L = 0V

UCAN_H – UCAN_L = - 1.5V

CAN的协议层

CAN总线以“帧”形式进行通信。CAN协议定义了5种类型的帧:数据帧、遥控帧、错误帧、过载帧、间隔帧,其中数据帧最为常用。

帧类型

帧作用

数据帧(Data Frame)

用于发送单元向接收单元传输数据的帧

遥控帧(Remote Frame)

用于接收单元向具有相同ID的发送单元

请求数据的帧

错误帧(Error Frame)

用于当检测出错误时向其他单元通知

错误的帧

过载帧(Overload Frame)

用于接收单元通知其尚未做好接收准备

的帧

间隔帧(Inter Frame Space)

用于将数据帧 及遥控帧与前面的帧

分离开来的帧

CAN数据帧介绍

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

  1. 帧起始:表示数据帧开始的段,显性信号
  2. 数据段:数据的内容,一帧可发送0~8字节数据
  3. 仲裁段:表示该帧优先级的段,优先级
  4. CRC段:检查帧的传输错误的段
  5. ACK段:表示确认正常接收的段
  6. 控制段:表示数据的字节数及保留位的段
  7. 帧结束:表示数据帧结束的段,7个隐性信号

CAN位时序介绍

  CAN总线以“位同步”机制,实现对电平的正确采样。位数据都由四段组成:同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),每段又由多个位时序Tq组成。

​采样点是指读取总线电平,并将读到的电平作为位值的点。

​根据位时序,就可以计算CAN通信的波特率。

​注意 : 节点监测到总线上信号的跳变在SS段范围内,表示节点与总线的时序是同步,此时采样点的电平即该位的电平。

数据同步过程

CAN为了实现对总线电平信号的正确采样,数据同步分为硬件同步和再同步。

硬件同步

节点通过CAN总线发送数据,一开始发送帧起始信号。总线上其他节点会检测帧起始信号在不在位数据的SS段内,判断内部时序与总线是否同步。如果起始信号不在SS段内,采样点获取的电平是不正确的,节点会采用硬件同步机制进行调整,把自己的SS段平移到检测到边沿的地方,此时采样点获取的电平是正确的。

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

再同步

再同步利用普通数据为的边沿信号进行同步。再同步的情况分为两种,边沿信号相对于SS段的位置即超前和滞后。

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

再同步时,PSB1和PSB2中增加或减少的时间被称为“再同步步长宽度(SJW)”,其范围时1-4Tq,限定了SJW的值后,再同步时,不能增加限定长度的SJW值,SJW值较大时,吸收误差的能力更强,但是通信速率会下降。

CAN总线仲裁

当CAN总线处于空闲时,最先开始发送消息的单元获取发送权,当多个单元同时发送时,从报文ID的第一位开始进行仲裁,连续输出显性电平最多的单元可以继续发送,即首先出现隐形电平的单元失去对总线的控制权,变为接收。竞争失败的单元自动检测总线是否空闲,当总线空闲会第一时间再次检测发送。

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

stm32的CAN控制器

CAN控制器介绍

​STM32 CAN控制器(bxCAN),支持CAN 2.0A 和 CAN 2.0B Active版本协议。

​CAN 2.0A 只能处理标准数据帧且扩展帧的内容会识别错误,而CAN 2.0B Active 可以处理标准数据帧和扩展数据帧。CAN 2.0B Passive只能处理标准数据帧且扩展帧的内容会忽略。

​bxCAN主要特点:

  •   波特率最高可达1M bps
  •   支持时间触发通信(CAN的硬件内部定时器可以在TX/RX的帧起始位的采样点位置生成时间戳)
  •   具有3级发送邮箱
  •   具有3级深度的2个接收FIFO
  •   可变的过滤器组(最多28个)

CAN控制器模式

CAN控制器的工作模式有三种:初始化模式、正常模式和睡眠模式。

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN控制器的测试模式有三种:静默模式、环回模式和环回静默模式,这三种测试模式需要再初始化模式下进行配置。

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN控制器框图

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

  • CAN内核:包含各种控制/状态/配置寄存器,可以配置模式、波特率等
  • 发送邮箱:用来缓存待发送的报文,最多可以缓存3个报文
  • 接收FIFO:缓存接收到的有效报文
  • 接收过滤器:筛选有效报文​

发送处理

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

发送优先级由邮箱中报文的标识符决定。标识符数值越低有最高优先级。如果标识符值相同,邮箱小的先被发送。

接收处理

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

​有效报文指的是(数据帧直到EOF段的最后一位都没有错误),且通过过滤器组对标识符过滤。

接收过滤器

当总线上报文数据量很大时,总线上的设备会频繁获取报文,占用CPU。过滤器的存在,选择性接收有效报文,减轻系统负担。

每个过滤器组都有两个32位寄存器CAN_FxR1和CAN_FxR2。根据过滤器组的工作模式不同(位宽和选择模式),寄存器的作用不尽相同。

​位宽可设置32位或16位,寄存器存储的内容就有所区别。

过滤器组Reg

32位

16位(寄存器由两部分组成)

CAN_FxR1

STDID[10:0]、EXTID[17:0]、

IDE、RTR

STDID[10:0]、EXTID[17:15]、

IDE、RTR

CAN_FxR2

STDID[10:0]、EXTID[17:0]、

IDE、RTR

STDID[10:0]、EXTID[17:15]、

IDE、RTR

​      选择模式可设置屏蔽位模式或标识符列表模式,寄存器内容的功能就有所区别。

屏蔽位模式,可以选择出一组符合条件的报文。寄存器内容功能相当于是否符合条件。

​标识符列表模式,可以选择出几个特定ID的报文。寄存器内容功能就是标识符本身。

CAN控制器波特率计算

​STM32的CAN外设位时序分为三段:

  • 同步段SYNC_SEG
  • 时间段1 BS1(PTS +PBS1)
  • ​时间段2 BS2​

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

波特率=1/(1tq+tq∗(TS1[3:0]+1)+tq∗(TS2[2:0]+1) )

CAN相关寄存器

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN主控制寄存器(CAN_MCR)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN位时序寄存器(CAN_BTR)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN 标识符寄存器(CAN_(T/R)IxR)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

数据长度和时间戳寄存器(CAN_(T/R)DTxR)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN低位数据寄存器(CAN_(T/R)DLxR)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN高位数据寄存器(CAN_(T/R)DHxR)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN过滤器模式寄存器(CAN_FM1R)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN过滤器位宽寄存器(CAN_FS1R)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN 过滤器FIFO关联寄存器(CAN_FFA1R)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

​CAN 过滤器激活寄存器(CAN_FA1R)

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU

CAN 过滤器组x寄存器(CAN_FxR(1/2))

CAN总线基础详解以及stm32的CAN控制器,stm32,CAN总线,基础详解,MCU文章来源地址https://www.toymoban.com/news/detail-822927.html

到了这里,关于CAN总线基础详解以及stm32的CAN控制器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 STM32+FPGA 的多轴运动控制器的设计

    运动控制器是数控机床 、 高端机器人等自动化设备控制系统的核心 。 为保证控制器的实用性 、 实时性和稳定 性, 提出一种以 STM32 为主控制器 、 FPGA 为辅助控制器的多轴运动控制器设计方案 。 给出了运动控制器的硬件电路设计 , 将 S 形加减速算法融入运动控制器 ,

    2024年01月17日
    浏览(77)
  • 基于STM32的智能家居控制器设计与实现

    一、项目背景 1.1 智能家居的发展与需求 随着科技的不断进步,智能家居成为现代生活中的一个热门领域。智能家居通过将传感器、执行器、网络和人机交互等技术融合在一起,实现了家居设备的智能化控制和管理。这为人们带来了更便捷、舒适和安全的居住环境。智能家居

    2024年02月09日
    浏览(53)
  • STM32F4X SDIO(四) SDIO控制器

    STM32F4X内部有一个SDIO控制器,开发者可以使用这个控制器跟SD卡进行通信,下面就来简单了解一下STM32F4X的SDIO控制器的使用。 下图为STM32F4X的SDIO控制器框图,框图可以分为以下5部分, 适配器寄存器 、 FIFO 、 控制单元 、 命令路径 、 数据路径 。 SDIO控制器时钟 STM32F4X的所有

    2024年02月07日
    浏览(55)
  • 基于 STM32+FPGA 的通用工业控制器设计(一)系统方案设计

    本章首先介绍了现有 PLC 系统的概况,然后提出了本文设计的通用工业控制器的 整体方案架构,分析了硬件和软件上需要实现的功能,最后对各部分功能进行分析并提 出具体的实现方案。 2.1 PLC 系统简介 可编程逻辑控制器( Programmable Logic Controller , PLC )是以微处理器为基

    2024年02月15日
    浏览(66)
  • STM32基于CAN总线协议控制步进电机

    如上图所示,实现了以下功能: 1.两块stm32单片机通过CAN控制器与收发器进行半双工通信; 2.stm32主机通过检测按键,切换不同的模式,将不同模式的case值发送给stm32从机; 3.stm32从机根据收到的case值,控制步进电机进行不同的运动操作; 4.OLED用于显示收发内容与按键状态等

    2024年01月19日
    浏览(51)
  • 【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构

    随着嵌入式系统的迅猛发展,STM32系列微控制器在各种应用中得到广泛应用。在嵌入式系统设计中,串行外设接口(SPI)是一种常见且重要的通信协议。为了更便捷地配置和使用SPI,STMicroelectronics提供了一款强大的工具——STM32 CubeMX。本文将着重介绍STM32 CubeMX中SPI的层次结构

    2024年02月20日
    浏览(46)
  • STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍

    说到STM32的FSMC(Flexible Static Memory Controller),这个玩意儿可真是STM32家族的“多面手”。想象一下,如果STM32是个热衷于DIY的工程师,那FSMC就是他的瑞士军刀,无论是连接SRAM、PSRAM、NOR/NAND Flash还是LCD模块,FSMC都能应对自如,简直就是连接外部存储和记忆界的“桥梁”。 FSM

    2024年02月21日
    浏览(49)
  • CAN收发器与CAN控制器

    CAN收发器是一种用于CAN总线通信的专用芯片,主要用于将CAN控制器和CAN总线物理层之间的信号进行转换和调节。它的主要作用是将CAN控制器输出的数字信号转换为CAN总线所需要的物理信号,同时将CAN总线上接收到的物理信号转换为数字信号,并将其传递给CAN控制器进行处理。

    2024年01月24日
    浏览(50)
  • 运动控制器设计——基于FreeModbus在STM32F4平台实现ModbusTCP和ModbusRTU

    本文笔者最近的项目是设计一款运动控制器,MCU使用的是STM32F429,要求是通过Modbus TCP协议实现与示教器通讯,并通过ModbusRTU实现与触摸屏通讯。 本文将介绍在STM32F4上实现 ModbusTCP和ModbusRTU通讯 的过程。笔者才疏学浅,如有错误还请指正。 Modbus协议是典型的主-从通讯结构,链

    2024年02月05日
    浏览(55)
  • CAN总线详解及STM32的CAN通信编程指南

    对于CAN通信而言,本人之前也未接触了解过,由于实习的技术要求,因此也花费了一段时间对CAN通信进行学习,并且实现了基于STM32的CAN环回静默模式通信,因此写一遍比较详细的文章对该内容进行总结。本文的参考资料有STM32的中文参考手册、协议手册等。话不多说开始吧!

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包