bxCAN总线的工作模式和测试模式(STM32F4xx)

news2024/9/24 6:41:48

概述

       本文主要介绍STM32F4XX的bxCAN知识,包括bxCAN的概念,各种工作模式下特性,如何配置各类工作模式等内容,还介绍了bxCAN的测试模式,bxCAN测试模式有3种工作类型,每种类型有什么特性,以及如何配置的等内容。

1 认识bxCAN

1.1 bxCAN概念

         基本扩展 CAN 外设又称 bxCAN,可与 CAN 网络进行交互。该外设支持 2.0A 和 B 版本的CAN 协议,旨在以最少的 CPU 负载高效管理大量的传入消息,并可按需要的优先级实现消息发送。在攸关安全性的应用中, CAN 控制器提供所有必要的硬件功能来支持 CAN 时间触发通信方案。

1.2 bxCAN 主要特性

● 支持 2.0 A 及 2.0 B Active 版本 CAN 协议

● 比特率高达 1 Mb/s

● 支持时间触发通信方案

发送

● 三个发送邮箱

● 可配置的发送优先级

● SOF 发送时间戳

接收

● 两个具有三级深度的接收 FIFO

● 可调整的筛选器组: — CAN1 和 CAN2 之间共享 28 个筛选器组

● 标识符列表功能

● 可配置的 FIFO 上溢

● SOF 接收时间戳 时间触发通信方案

● 禁止自动重发送模式

● 16 位自由运行定时器

● 在最后两个数据字节发送时间戳

管理

● 可屏蔽中断

● 在唯一地址空间通过软件实现高效的邮箱映射

双 CAN

● CAN1:主 bxCAN,用于管理 bxCAN 与 512 字节 SRAM 存储器之间的通信。

● CAN2:从 bxCAN,无法直接访问 SRAM 存储器。

● 两个 bxCAN 单元共享 512 字节 SRAM 存储器

2 认识bxCAN工作模式

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

2.1 初始化模式

初始化模式的要点如下:

1)当硬件处于初始化模式时,可以进行软件初始化

2)如何进入初始化模式:

软件将 CAN_MCR 寄存器的 INRQ 位置 1,并等待硬件通过将 CAN_MCR 寄存器的 INAK 位置 1 来确认请求。

3)退出初始化模式:

软件将 INQR 位清零。一旦硬件将 INAK 位清零, bxCAN 即退出初始化模式。

4)初始化模式的特点:

  • 所有从 CAN 总线传入和传出的消息都将停止,并且 CAN 总线输出 CANTX的状态为隐性(高)

  • 不会更改任何配置寄存器

  • 为初始化与 CAN 筛选器组相关的寄存器( 模式、尺度、 FIFO 分配、激活和筛选器值),软件必须将 FINIT 位 (CAN_FMR) 置 1。

  • 筛选器的初始化也可以在初始化模式之外进行。

2.2 正常模式

正常模式的要点如下:

1)NAK = 0 和 SLAK = 0,则 bxCAN 将处于正常模式

2)进入正常模式之前, bxCAN 必须始终在 CAN 总线上实现同步。为了进行同步, bxCAN 将等待 CAN 总线空闲(即,已监测到CANRX 上的 11 个隐性位)。

3)初始化完成,软件必须向硬件请求进入正常模式,这样才能在 CAN 总线上进行同步,并开始接收和发送。

4)正常模式的请求可通过将 CAN_MCR 寄存器的 INRQ 位清零来发出。

5) bxCAN 进入正常模式,并与 CAN 总线上的数据传输实现同步后,即可参与总线活动。

6)要实现数据传输同步,需要等待出现一个由 11 个连续隐性位(总线空闲状态)组成的序列。硬件通过将 CAN_MSR 寄存器的 INAK 位清零,来确认切换到正常模式。

7)筛选器值的初始化与初始化模式无关,但必须要在筛选器处于未激活状态(相应 FACTx 位清零)时进行。筛选器尺度和模式配置必须在进入正常模式之前完成。

2.3 睡眠模式

睡眠模式的要点如下:

1) bxCAN 进入睡眠模式以降低功耗,同时 CANTX 上的内部上拉电阻激活。

2) 软件将 CAN_MCR 寄存器的 INRQ 或SLEEP 位置 1,以请求 bxCAN 进入初始化或睡眠模式。

3)一旦进入该模式, bxCAN 即将CAN_MSR 寄存器的 INAK 或 SLAK 位置 1,以确认该模式,同时禁止内部上拉电阻。

4)配置睡眠模式方法

软件通过将 CAN_MCR 寄存器的 SLEEP 位置 1 而发出请求后,即可进入该模式。

5)配置睡眠模式的特点

  • bxCAN 时钟停止,但软件仍可访问 bxCAN 邮箱。

  • 在 bxCAN 处于睡眠模式时,如果软件通过将 INRQ 位置 1 来请求进入初始化模式,则必须同时将 SLEEP 位清零。

3 认识bxCAN测试模式

配置测试模式方法:

1)CAN_BTR 寄存器中的 SILMLBKM 位来选择测试模式,此时 bxCAN必须处于初始化模式

2)注意点:选择测试模式后,必须复位 CAN_MCR 寄存器中的 INRQ 位才能进入正常模式。

CAN 位时序寄存器 (CAN_BTR)

位 31 SILM: 静默模式(调试) (Silent mode (debug)) 0:正常工作 1:静默模式

位 30 LBKM: 环回模式(调试) (Loop back mode (debug)) 0:禁止环回模式 1:使能环回模式

CAN 主控制寄存器 (CAN_MCR)

位 0 INRQ: 初始化请求 (Initialization request)

       软件通过将此位清零,来将硬件切换到正常模式。一旦在 Rx 信号上监测到连续 11 个隐性位, CAN 硬件即完成同步并准备进行发送和接收。硬件通过将 CAN_MSR 寄存器的 INAK位清零来指示此事件。软件通过将此位置 1 来请求 CAN 硬件进入初始化模式。一旦软件将 INRQ 位置 1, CAN 硬件将等待当前 CAN 活动(发送或接收)结束,然后进入初始化模式。硬件通过将 CAN_MSR寄存器的 INAK 位置 1 来指示此事件。

3.1 静默模式

3.1.1 配置静默模式方法

CAN 位时序寄存器 (CAN_BTR)

3.1.2 静默模式特点

1)bxCAN 可以接收有效数据帧和有效遥控帧,但仅在 CAN 总线上发送隐性位,并且无法启动发送。

2)如果 bxCAN 必须发送一个显性位( ACK 位、溢出标志、活动错误标志),该位将在内部被改道发送,以便 CAN 内核可以监视该显性位,但 CAN 总线可以保持隐性状态。

3)静默模式可用于分析 CAN 总线上的流量,同时又不会因发送显性位(确认位、错误帧)对其造成影响

3. 2 环回模式

3.2.1 配置环回模式方法

可以通过将 CAN_BTR 寄存器的 LBKM 位置 1,将 bxCAN 置于环回模式。

CAN 位时序寄存器 (CAN_BTR)

3.2.2 环回模式特点

1)在环回模式下,bxCAN 将其自身发送的消息作为接收的消息来处理并存储(如果这些消息通过了验收筛选)在接收邮箱中。

2)该模式为自检功能提供。为了不受外部事件的影响, CAN 内核在环回模式下将忽略确认错误(在数据/远程帧的确认时隙不对显性位采样)。

3)在此模式下, bxCAN 将执行从发送输出到接收输入的内部反馈。 bxCAN 将忽略 CANRX 输入引脚的实际值。从 CANTX 引脚可以监视发送的消息

3.3 环回与静默组合模式

3.3.1 配置环回与静默组合模式

可以通过将 CAN_BTR 寄存器的 LBKM 和 SILM 位置 1,将环回模式和静默模式组合起来。

3.3.2 环回与静默组合模式特点

该模式可用于“热自检”,也就是说, bxCAN 可以像在环回模式下一样进行检测,同时又不会影响与 CANTX 和 CANRX 引脚相连接的运行中的 CAN 系统。在此模式下, CANRX 引脚与 bxCAN 断开连接, CANTX 引脚则保持隐性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1486986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言之指针习题一

1. 解析:全选 2. 解析:A.当内存空间释放后,指针将指向其他的区域,成为野指针 3. 解析:B,assert只会在调试模式(debug)下使用,release不会使用 4. 解析: A…

IDEA集成Tomcat服务器指南

目录 一.概述 二.下载安装 三.启动Tomcat服务器 四.修改端口号 五.Maven Web项目 六.创建项目 1.使用骨架 2.不使用骨架 七.Idea中集成Tomcat 1.集成本地Tomcat 2.使用Maven插件 一.概述 所谓的Web服务器软件,功能是对HTTP协议的操作进行封装&#xff0…

ros2的nav2_map_server导入地图时,rviz2显示no map received

ros2的nav2_map_server导入地图时,rviz2显示no map received 步骤: 1、打开终端,进入src/map/运行下面指令: ros2 run nav2_map_server map_server --ros-args --param yaml_filename:fishbot_map.yaml2、打开rviz2 rviz2通过a…

leetcode 热题 100_无重复字符的最长子串

题解一: 滑动窗口哈希表:假设字符串为"abcabcbb",遍历循环所有子串,以不同位置作为子串的起始,则会得到以下最长子串。其中最长子串的右端点会随着左端点的右移而右移,也可能不变,原因…

跨平台指南:在 Windows 和 Linux 上安装 OpenSSL 的完整流程

Windows安装 一:找到安装包,双击即可 https://gitee.com/wake-up-again/installation-package.git 二:按照提示,一步一步来,就可以啦 三:此界面意思是,是否想向创作者捐款,自己视情…

访问修饰符、Object(方法,使用、equals)、查看equals底层、final--学习JavaEE的day15

day15 一、访问修饰符 含义: 修饰类、方法、属性,定义使用的范围 理解:给类、方法、属性定义访问权限的关键字 注意: ​ 1.修饰类只能使用public和默认的访问权限 ​ 2.修饰方法和属性可以使用所有的访问权限 访问修饰符本类本包…

消息中间件之RocketMQ源码分析(二十八)

延迟消息存储机制 概述 什么是延迟消息呢?延迟消息也叫定时消息,一般地,生产者在发送消息后,消费者希望在指定的一段时间后再消费。常规做法是,把信息存储在数据库中,使用定时任务扫描,符合条件的数据再…

js字符串转json的3种方法

1.eval方式解析 function strToJson(str){var json eval("(" str ")");return json;}console.log(strToJson("{int:1, string:demo}")); 运行截图: 注: 记得别忘了str两旁的小括号。 永远不要使用 eval !!! eval() 是一…

最短路径(2.19)

目录 1.网络延迟时间 弗洛伊德算法 迪杰斯特拉算法 2. K 站中转内最便宜的航班 3.从第一个节点出发到最后一个节点的受限路径数 4.到达目的地的方案数 1.网络延迟时间 有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的…

3、JavaWeb-Ajax/Axios-前端工程化-Element

P34 Ajax介绍 Ajax:Asynchroous JavaScript And XML,异步的JS和XML JS网页动作,XML一种标记语言,存储数据, 作用: 数据交换:通过Ajax给服务器发送请求, 并获取服务器响应的数据 异步交互&am…

C++ //练习 10.24 给定一个string,使用bind和check_size在一个int的vector中查找第一个大于string长度的值。

C Primer(第5版) 练习 10.24 练习 10.24 给定一个string,使用bind和check_size在一个int的vector中查找第一个大于string长度的值。。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /*****…

VsCode配置PCL、Open3D自动补全

写在前面 本文内容 在VsCode上开发PCL、Open3D相关代码,代码自动补全 Open3D、PCL的安装使用见各个版本的Open3D、PCL的编译、使用教程 平台/环境 windows11(windows10): visual studio 2022;cmake 3.22; VsCode 通过cmake构建项目; 转载请…

基于Springboot免费搭载轻量级阿里云OSS数据存储库(将本地文本、照片、视频、音频等上传云服务保存)

一、注册阿里云账户 打开https://www.aliyun.com/,申请阿里云账户并完成实名认证(个人)。这种情况就是完成了: 二、开通OSS服务 点击立即开通即可。 三、创建Bucket 申请id和secert: 进去创建一个Accesskey就会出现以…

【软考】数据库的三级模式

目录 一、概念1.1 说明1.2 数据库系统体系结构图 二、外模式三、概念模式四、内模式 一、概念 1.1 说明 1.数据的存储结构各不相同,但体系结构基本上具有相同的特征,采用三级模式和两级镜像 2.数据库系统设计员可以在视图层、逻辑层和物理层对数据进行抽…

C语言:预处理

C语言:预处理 预定义符号#define定义常量定义宏宏与函数对比 #操作符##操作符条件编译头文件包含库文件包含本地文件包含嵌套文件包含 预定义符号 C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。 __FILE__ //…

惠普GT5810打印机报错E9的处理方法

当打印机检测到供墨系统需要维护时,将会出现 E9 错误。 吴中函 打印出的带错误的供墨系统维护页包含解决该错误的说明。 出现 E9 警告时维持 HP Ink Tank 打印机的打印质量,出现 E9 警告时如何维持 HP Ink Tank 打印机的打印质量。 惠普5810报错E9通常…

UE 打包窗口及鼠标状态设置

UE 打包窗口及鼠标状态设置 打包后鼠标不锁定 显示鼠标图标 打包后设置窗口模式 找到打包路径下的配置文件GameUserSettings,设置相关项目 FullscreenMode0表示全屏模式,1表示窗口全屏模式,2表示窗口模式

Spring的Bean的生命周期 | 有图有案例

Spring的Bean的生命周期 Spring的Bean的生命周期整体过程实例化初始化服务销毁循环依赖问题 完整生命周期演示 Spring的Bean的生命周期 Spring Bean的生命周期:从Bean的实例化之后,通过反射创建出对象之后,到Bean称为一个完整的对象&#xf…

位运算---求n的二进制表示中第k位是1还是0 (lowbit)

操作: 先把第k位移到最后一位(右边第一位) 看个位是1还是0 lowbit(x):返回x的最右边的1。 原理: 其中 ,意思是 是 的补码。 就可以求出最右边的一位1。 应用: 当中 的个数。 int re…

案例介绍:汽车维修系统的信息抽取技术与数据治理应用(开源)

一、引言 在当今汽车产业的快速发展中,软件已经成为提升车辆性能、安全性和用户体验的关键因素。从车载操作系统到智能驾驶辅助系统,软件技术的进步正在重塑我们对汽车的传统认知。我有幸参与了一个创新项目,该项目专注于开发和集成先进的汽…