《STM32从零开始学习历程》——CAN外设-模式及波特率
发布日期:2021-05-10 01:33:12 浏览次数:15 分类:精选文章

本文共 1636 字,大约阅读时间需要 5 分钟。

STM32 CAN外设深入解析

1. CAN外设概述

STM32系列微控制器内置了bxCAN(Basic Extended CAN)控制器,支持CAN协议2.0A和2.0B标准。其最大通讯速率为1Mbps,具备3个发送邮箱和2个深度为3级的接收FIFO。每个发送邮箱支持优先级控制和发送时间记录,接收FIFO支持过滤功能,并可配置为自动重发模式。

2. CAN框图结构

CAN框图主要由以下组件构成:

CAN控制核心:负责CAN报文的接收和发送管理,包含多个控制和状态寄存器。

发送邮箱:存储多个待发送的报文,可根据总线空闲时自动发送。

接收FIFO:存储接收到的报文,深度最高为6个报文。

验收筛选器:根据报文ID控制是否接收到FIFO。

CAN整体控制逻辑:在轻松实现CAN节点功能的同时,支持睡眠模式和总线主动管理。

3. 主控制寄存器CAN_MCR结构

CAN_MCR(主控制寄存器)决定了CAN外设的工作模式,主要包含以下功能:

  • 调试冻结(DBF):适用于调试时的特殊模式。
  • 时间触发模式(TTCM):用于精确的分时同步。
  • 自动离线管理(ABOM):检测总线异常后自动离线。
  • 自动唤醒(AWUM):在总线检测到活动时自动恢复。
  • 防重传(NART):设置后可避免因CAN错误导致的自动重传。
  • 接收FIFO锁定模式(RFLM):防止报文丢失或重复。
  • 发送优先级控制(TXFP):根据报文ID决定发送顺序。

4. 工作模式详解

为了方便调试和测试,CAN外设提供了多种工作模式:

  • 正常模式:作为普通CAN节点,正常发送和接收数据。
  • 静默模式:发送隐藏模式,适用于总线监测但无发送影响。
  • 回环模式:发送自身内容到FIFO,用于自我测试。
  • 回环静默模式:结合静默模式和回环模式,用于智能自检而不影响总线。

5. 波特率配置

CAN外设的波特率可根据需要配置,方舟计算公式:

  • 1位时间(T1bit):T1bit = 1Tq + TS1 + TS2

  • 波特率计算:BaudRate = 1 / (N * Tq)(N为时间分频)

以1Mbps为例,配置如下:

  • SYNC_SEG:固定为1Tq
  • TS1:4Tq(BRP=3)
  • TS2:2Tq(BRP=1)
  • TPCLK:默认为1/42MHz
  • 分频:6(BRP=5)

得出Tq=1/7M,波特率恰好为1Mbps。

6. 发送邮箱功能

CAN外设提供3个邮件件件,各邮件件包含:

  • 标识符寄存器(CAN_TIxR):存储报文ID、扩展ID、IDE和RTR位。
  • 数据长度控制寄存器(CAN_TDTxR):存储报文长度字段。
  • 低字节数据寄存器和高字节数据寄存器(CAN_TDLxR, CAN_TDHxR):存储报文数据段。

发送时,需写入寄存器并设置发送请求,报文将被自动发送展示。

7. 接收FIFO功能

接收FIFO存储最多6个报文,各邮件件包含:

  • 标识符寄存器(CAN_RIxR):存储报文ID、扩展ID、IDE和RTR位。
  • 数据长度控制寄存器(CAN_RDTxR):存储报文长度字段。
  • 低字节数据寄存器和高字节数据寄存器(CAN_RDLxR, CAN_RDHxR):存储报文数据段。

可通过RFLM位控制FIFO模式,选择是否锁定溢出报文。

8. 验收筛选器配置

CAN外设提供28组筛选器,每组包含2个寄存器,可用于白名单过滤或关键字搜索模式。配置方法如下:

  • 掩码模式:存储需筛选的ID或掩码。
  • 标识符模式:存储需筛选的多个ID。

如配置一个16位标识符模式,具体操作方式由寄存器配置确定。

9. 应用建议

在开发中,应根据需求选择合适的工作模式并调整寄存器配置。例如,若需要实时性和低功耗,使用静默模式和自动唤醒功能。

10. 总结

STM32的CAN外设功能强大,支持多种工作模式和灵活配置。不论是发送多报文还是接收筛选数据,都是开发中不可或缺的功能。如果你还没试验过这些配置,建议实际编写代码,逐步探索其潜力。

上一篇:《STM32从零开始学习历程》——CAN相关结构体
下一篇:《STM32从零开始学习历程》——CAN通讯协议协议层

发表评论

最新留言

很好
[***.229.124.182]2025年04月24日 04时00分04秒