h1_key

当前位置:首页 >新闻资讯 > 技术文章>STM32中的CAN芯片简介
STM32中的CAN芯片简介
2023-04-10 3621次

  1.1CAN简介

CAN芯片Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。

 

CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

 

  1.2 CAN 物理层

  CAN与 I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。我们来看一个示意图

  

 

  1.3电气参数

  a)参考通信距离及传输速度

  通信距离(米)波特率

  251M

  70500K

  280125K

  350100K

  45080K

  70050K

  200018K

  30009K

  b)CAN总线上的节点数可达110个。

  c)总线状态

  总线状态 总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。

  差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示。

  (1)显性(dominant): ----逻辑0

  CANH----高电平 --------------3.0-4.25V ----典型值3.6V

  CANL----低电平 ---------------0.5-1.75V ----典型值1.4V

  Vdiff---------------------------------------------------------2.25V

  (2)隐性(recessive): ----逻辑1

  CANH----高电平 ----0.5VCC(2.0-3.0V) ----典型值2.5V

  CANL----低电平 ----0.5VCC(2.0-3.0V) ----典型值2.5V

Vdiff-------------------------------------------------------------0V

 

  1.4CAN 协议层

  1.4.1 CAN 的波特率及位同步

  由于 CAN 属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯。

  1.4.2 位时序分解

  位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。通过将标称位时间划分为以下三段,即可解释其工作过程:

  同步段 (SYNC_SEG):位变化应该在此时间段内发生。它只有一个时间片的固定长度 (1 x tCAN)。

  位段 1 (BS1):定义采样点的位置。它包括 CAN 标准的 PROP_SEG 和 PHASE_SEG1。其持续长度可以在 1 到 16 个时间片之间调整,但也可以自动加长,以补偿不同网络节点的频率差异所导致的正相位漂移。

  位段 2 (BS2):定义发送点的位置。它代表 CAN 标准的 PHASE_SEG2。其持续长度可以在 1 到 8 个时间片之间调整。

  再同步跳转宽度 (SJW) 定义位段加长或缩短的上限。它可以在 1 到 4 个时间片之间调整。

  如果在 BS1 而不是 SYNC_SEG 中检测到有效边沿,则 BS1 会延长最多 SJW, 以便延迟采样点。

  相反地,如果在 BS2 而不是 SYNC_SEG 中检测到有效边沿,则 BS2 会缩短最多 SJW, 以便提前发送点。


 

  例子:

  假如要配置波特率为100k,所用单片机的APB时钟为42MHz,则:

  NominalBitTime:1/100000s即10us

  t(PCLK):1/42000000S,即1/42us.

  此时只需((TS1[3:0] + 1)+ (TS2[2:0] + 1)+1)* (BRP[9:0] + 1) =420

  我们可令t(q)=1us,即(BRP[9:0] + 1)=42,,则

  TS1[3:0] + TS2[2:0] =7

  1.4.3 CAN 的报文种类及结构

  为了更有效地控制通讯,CAN 一共规定了 5 种类型的帧,它们的类型及用途说明如表

  

 

  1.5 STM32中的CAN框架

  STM32 的芯片中具有 bxCAN 控制器 (Basic Extended CAN),它支持 CAN 协议 2.0A 和 2.0B 标准。该 CAN 控制器支持最高的通讯速率为 1Mb/s;可以自动地接收和发送 CAN 报文,支持使用标准ID 和扩展 ID 的报文;外设中具有 3 个发送邮箱,发送报文的优先级可以使用软件控制,还可以记录发送的时间;具有 2 个 3 级深度的接收 FIFO,可使用过滤功能只接收或不接收某些 ID 号的报文;可配置成自动重发;不支持使用 DMA 进行数据收发。框架示意图如下:

  

 

 

  STM32 的有两组 CAN 控制器,其中 CAN1 是主设备,框图中的“存储访问控制器”是由 CAN1控制的,CAN2 无法直接访问存储区域,所以使用 CAN2 的时候必须使能 CAN1 外设的时钟。框图中主要包含 CAN 控制内核、发送邮箱、接收 FIFO 以及验收筛选器。

  bxCAN 工作模式

  bxCAN 有三种主要的工作模式: 初始化、 正常和睡眠。

  a)初始化模式

  当硬件处于初始化模式时,可以进行软件初始化。筛选器的初始化可以在初始化模式之外进行。

  b)正常模式

  一旦初始化完成,软件必须向硬件请求进入正常模式,这样才能在 CAN 总线上进行同步,并开始接收和发送。筛选器尺度和模式配置必须在进入正常模式之前完成。

  c)睡眠模式(低功耗)

  为降低能耗功耗, bxCAN 具有低功耗模式,称为睡眠模式。

  

 

 

  • 一文读懂什么是IMU传感器?
  • IMU(惯性测量单元,Inertial Measurement Unit) 是一种用于测量物体运动状态的电子设备,通过组合多种传感器来提供三维空间中的加速度、角速度及姿态信息。
    2025-03-05 489次
  • 一文读懂什么是图像传感器?
  • 图像传感器是一种将光学图像转换为电信号的电子器件,广泛应用于数码相机、智能手机、安防监控、医疗影像、自动驾驶等领域。它是现代成像系统的核心组件,决定了图像的清晰度、色彩还原能力和动态范围等关键性能。
    2025-03-03 106次
  • 一文读懂什么是加速度传感器?
  • 加速度传感器(Accelerometer) 是一种测量物体线性加速度的装置,可检测物体在空间中沿X、Y、Z轴的平移运动(包括静态重力加速度和动态运动加速度)。
    2025-02-26 209次
  • XILINX赛灵思 XC7K160T-2FBG484E
  • 赛灵思(XILINX)作为行业的领军企业,其推出的 XC7K160T-2FBG484E 更是一款备受瞩目的产品。XC7K160T-2FBG484E 属于赛灵思 7 系列 FPGA(现场可编程门阵列),具有强大的性能和丰富的功能。
    2024-09-25 366次
  • XILINX赛灵思 XCKU085-2FLVA1517E
  • 赛灵思(XILINX)作为全球领先的可编程逻辑器件供应商,其推出的 XCKU085-2FLVA1517E 以卓越的性能和丰富的功能,成为众多电子工程师和设计师的首选。XCKU085-2FLVA1517E 属于赛灵思 UltraScale 架构系列产品,采用先进的 20 纳米工艺技术制造。这一工艺不仅带来了更高的性能,还实现了更低的功耗,为各种复杂的电子系统设计提供了理想的解决方案。
    2024-09-25 318次

    万联芯微信公众号

    元器件现货+BOM配单+PCBA制造平台
    关注公众号,优惠活动早知道!
    10s
    温馨提示:
    订单商品问题请移至我的售后服务提交售后申请,其他需投诉问题可移至我的投诉提交,我们将在第一时间给您答复
    返回顶部