bxCAN 工作模式

bxCAN 工作模式

bxCAN 有三种主要的工作模式:初始化、正常和睡眠。硬件复位后,bxCAN 进入睡眠模式以降低功耗,同时 CANTX 上的内部上拉电阻激活。软件将主控制寄存器(CAN_MCR---CAN master control register)的初始化请求位 (INRQ---Initialization request) 或睡眠模式请求位(SLEEP---Sleep mode request)置 1,以请求 bxCAN 进入初始化或睡眠模式。
一旦进入该模式,bxCAN 即将主状态寄存器(CAN_MSR---CAN master status register)的初始化确认位  (INAK---Initialization acknowledge) 或睡眠确认位(SLAK---Sleep acknowledge)置 1,以确认该模式,同时禁止内部上拉电阻。
如果主状态寄存器(CAN_MSR---CAN master status register)的初始化确认位(INAK---Initialization acknowledge) 和睡眠确认位(SLAK---Sleep acknowledge)均未置 1,则 bxCAN 将处于正常模式。进入正常模式之前,bxCAN 必须始终在 CAN 总线上实现同步。为了进行同步,bxCAN 将等待 CAN 总线空闲(即,已从CANRX上监测到 11 个连续的隐性位)。


初始化模式

当硬件处于初始化模式时,可以进行软件初始化。为进入该模式,采用软件将主控制寄存器(CAN_MCR---CAN master control register)的初始化请求位 (INRQ---Initialization request)置 1,并等待硬件将主状态寄存器(CAN_MSR---CAN master status register)的初始化确认位(INAK---Initialization acknowledge)置 1 来确认请求。
如想退出初始化模式,采用软件将主控制寄存器(CAN_MCR---CAN master control register)的初始化请求位 (INRQ---Initialization request)清零。一旦硬件将主状态寄存器(CAN_MSR---CAN master status register)的初始化确认位(INAK---Initialization acknowledge)清零,bxCAN 即退出初始化模式。
在初始化模式下,所有从 CAN 总线传入和传出的消息都将停止,并且 CAN 总线输出 CANTX 的状态为隐性(高)。
进入初始化模式不会更改任何配置寄存器。
为初始化 CAN 控制器,软件必须设置位时序寄存器 (CAN_BTR---CAN bit timing register) 和 主控制寄存器(CAN_MCR---CAN master control register)。
为初始化与 CAN 筛选器组相关的寄存器(模式、尺度、FIFO 分配、激活和筛选器值),软件必须将筛选器主寄存器(CAN_FMR---CAN filter master register)的筛选器初始化模式位 (FINIT---Filter init mode) 置 1。筛选器的初始化也可以在初始化模式之外进行。
注意: FINIT=1 时,CAN 接收停用。

筛选器值激活与否,也可通过设置筛选器激活寄存器(CAN_FA1R---CAN filter activation register)的相关筛选器激活位(FACTx---Filter active)来修改。
如果某个筛选器组未使用,建议将其保持未激活状态(将相应 FACT 位保持清零)。


正常模式

一旦初始化完成,软件必须向硬件请求进入正常模式,这样才能在 CAN 总线上进行同步,并开始接收和发送。
进入正常模式的请求可通过将主控制寄存器(CAN_MCR---CAN master control register)的初始化请求位 (INRQ---Initialization request)清零来发出。bxCAN 进入正常模式,并与 CAN 总线上的数据传输实现同步后,即可参与总线活动。执行这一步时,需要等待出现一个由 11 个连续隐性位(总线空闲状态)组成的序列。硬件通过将主状态寄存器(CAN_MSR---CAN master status register)的初始化确认位(INAK---Initialization acknowledge)清零,来确认切换到正常模式。
筛选器值的初始化与初始化模式无关,但必须要在筛选器处于未激活状态(筛选器激活寄存器(CAN_FA1R---CAN filter activation register)的相关筛选器激活位(FACTx---Filter active)清零)时进行。筛选器尺度和模式配置必须在进入正常模式之前完成。


睡眠模式(低功耗)

为降低能耗功耗,bxCAN 具有低功耗模式,称为睡眠模式。软件通过将主控制寄存器(CAN_MCR---CAN master control register)的睡眠模式请求位(SLEEP---Sleep mode request)置 1 而发出请求后,即可进入该模式。该模式下,bxCAN 时钟停止,但软件仍可访问 bxCAN 邮箱。
在 bxCAN 处于睡眠模式时,如果软件通过将主控制寄存器(CAN_MCR---CAN master control register)的初始化请求位 (INRQ---Initialization request) 置 1 来请求进入初始化模式,则必须同时将主控制寄存器(CAN_MCR---CAN master control register)的睡眠模式请求位(SLEEP---Sleep mode request)清零。
软件将主控制寄存器(CAN_MCR---CAN master control register)的睡眠模式请求位(SLEEP---Sleep mode request)清零或检测到 CAN 总线活动时,bxCAN 即被唤醒(退出睡眠模式)。
检测到 CAN 总线活动后,如果主控制寄存器(CAN_MCR---CAN master control register)的自动唤醒模式位(AWUM---Automatic wakeup mode)置 1,硬件将通过清零主控制寄存器(CAN_MCR---CAN master control register)的睡眠模式请求位(SLEEP---Sleep mode request)来自动执行唤醒序列。如果主控制寄存器(CAN_MCR---CAN master control register)的自动唤醒模式位(AWUM---Automatic wakeup mode)清零,在发生唤醒中断时,软件必须将主控制寄存器(CAN_MCR---CAN master control register)的睡眠模式请求位(SLEEP---Sleep mode request)清零才能退出睡眠模式。
注意: 如果使能唤醒中断(中断使能寄存器(CAN_IER---CAN interrupt enable register) 唤醒中断使能位(WKUIE---Wakeup interrupt enable)置 1),即使 bxCAN 自动执行唤醒序列,一旦检测到 CAN 总线活动,也会发生唤醒中断。
主控制寄存器(CAN_MCR---CAN master control register)的睡眠模式请求位(SLEEP---Sleep mode request)清零后,一旦 bxCAN 与 CAN 总线同步,即会退出睡眠模式,请参见图 225:bxCAN工作模式。一旦硬件将主状态寄存器(CAN_MSR---CAN master status register)的睡眠确认位(SLAK---Sleep acknowledge)清零,即会退出睡眠模式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML+CSS:3D轮播卡片

效果演示 实现了一个3D翻转的卡片动画&#xff0c;其中每个卡片都有不同的图片和不同的旋转角度。整个动画循环播放&#xff0c;无限次。整个页面的背景是一个占据整个屏幕的背景图片&#xff0c;并且页面内容被隐藏在背景图片之下。 Code <div class"container"…

高效构建Java应用:Maven的使用总结

一、Maven简介和快速入门 1.1 Maven介绍 Maven-Introduction Maven 是一款为 Java 项目构建管理、依赖管理的工具&#xff08;软件&#xff09;&#xff0c;使用 Maven 可以自动化构建、测试、打包和发布项目&#xff0c;大大提高了开发效率和质量。 总结&#xff1a;Maven…

09-微服务Sentinel整合GateWay

一、概述 在微服务系统中&#xff0c;网关提供了微服务系统的统一入口&#xff0c;所以我们在做限流的时候&#xff0c;肯定是要在网关层面做一个流量的控制&#xff0c;Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 1.1 总览 Sentinel 1.6.…

在线英文字母大小写转换工具

在线英文字母大小写转换 - BTool在线工具软件&#xff0c;为开发者提供方便。在线快速转换一段英文内容的大小写格式&#xff0c;例如转为一般句子大小写、全部小写、全部大写、大小写交错或像是标题的首字大写等等格式。https://www.btool.cn/case-converter此工具可在线快速转…

【书生·浦语】大模型实战营——第六次作业

使用OpenCompass 评测 InterLM2-chat-chat-7B 模型在C-Eval数据集上的性能 环境配置 1. 创建虚拟环境 conda create --name opencompass --clone/root/share/conda_envs/internlm-base source activate opencompass git clone https://github.com/open-compass/opencompass cd…

【Redis数据类型】String实现及应用场景

文章目录 String1、介绍2、内部实现整数值embstr 编码字符串raw编码字符串 3、常用命令4、应用场景缓存对象常规计数分布式锁共享session信息 参考&#xff1a;小林Coding Redis九种数据类型 Redis 提供了丰富的数据类型&#xff0c;常见的有五种&#xff1a;String&#xff08…

C++ 之LeetCode刷题记录(十四)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &…

打造出色的 Prometheus 监控系统,看完后薪资翻倍?

一、监控概念&误区 监控是管理基础设施和业务的核心工具&#xff0c;监控应该和应用程序一起构建和部署&#xff0c;没有监控&#xff0c;将无法了解你的系统运行环境&#xff0c;进行故障诊断&#xff0c;也无法阻止提供系统性的性能、成本和状态等信息。 误区&#xff1…

怎样的安全数据交换系统 可以支持信创环境?

首先&#xff0c;我来看看&#xff0c;什么是安全数据交换系统&#xff1f;安全数据交换系统是一种专门设计用于在不同网络环境之间安全传输数据的技术解决方案。它确保数据在传输过程中的完整性、机密性和可用性&#xff0c;同时遵守相关的数据保护法规和行业标准。 那么&…

软件设计师——法律法规(四)

&#x1f4d1;前言 本文主要是【法律法规】——软件设计师——法律法规的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

为什么MOS管很容易失效?有哪些失效?

在电子元件中&#xff0c;金属-氧化物半导体场效应晶体管&#xff08;MOS管&#xff09;是独特且重要&#xff0c;然而相比其他元件&#xff0c;MOS管很容易失效&#xff0c;导致电路无法正常运行&#xff0c;因此工程师必须查找原因并解决问题。 1、MOS管为什么很容易失效&…

Ubuntu之离线安装Gitlab,搭建私有代码仓库

Ubuntu之离线安装Gitlab,搭建私有代码仓库 文章目录 Ubuntu之离线安装Gitlab,搭建私有代码仓库1. 官网下载&#xff1a;2. 安装Gitlab3. 使用 1. 官网下载&#xff1a; https://packages.gitlab.com/gitlab/gitlab-ce wget下载地址&#xff1a; wget https://packages.gitla…

立体视觉几何 (二)

1.视差 2.立体匹配 立体匹配的基本概念: 匹配目标: 在立体匹配中&#xff0c;主要目标是确定左图像中像素的右图像中的对应像素。这个对应像素通常位于相同的行。视差&#xff08;Disparity&#xff09;: 视差 d 是右图像中对应像素 xr 和左图像中像素 xl 之间的水平位置差。视…

go 语言中 json.Unmarshal([]byte(jsonbuff), j) 字节切片得使用场景

struct_tag的使用 在上面的例子看到&#xff0c;我们根据结构体生成的json的key都是大写的&#xff0c;因为结构体名字在go语言中不大写的话&#xff0c;又没有访问权限&#xff0c;这种问题会影响到我们对json的key的名字&#xff0c;所以go官方给出了struct_tag的方法去修改…

跑步运动耳机哪个牌子好?2024年国产运动耳机推荐

​无论春夏秋冬&#xff0c;无论室内还是户外&#xff0c;运动都能带给我们无尽的乐趣。而一副好的运动耳机&#xff0c;更能为我们的运动体验增色不少。今天&#xff0c;就让我为大家推荐几款值得一试的运动耳机吧。 1.南卡开放式耳机&#xff08;00压&#xff09; 一句话评价…

持续集成工具Jenkins的使用之安装篇(一)

Jenkins是一个基于Java开发的开源的一种持续集成工具&#xff0c;主要用于环境部署&#xff0c;监控重复性的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。要想使用它&#xff0c;你就必须的先安装&#xff0c;接下来我们就介绍下J…

工业计算机应用——物流行业

工业计算机在物流行业的应用 随着全球化和电商的快速发展,物流行业已经成为现代经济体系中的重要支柱。在这个高度自动化的行业中,工业计算机扮演着至关重要的角色。本文将深入探讨工业计算机在物流行业的应用及其优势。 一、工业计算机在物流行业的应用场景 仓储管理工业计…

服务器数据恢复—服务器进水导致阵列中磁盘同时掉线的数据恢复案例

服务器数据恢复环境&#xff1a; 数台服务器数台存储阵列柜&#xff0c;共上百块硬盘&#xff0c;划分了数十组lun。 服务器故障&检测&#xff1a; 外部因素导致服务器进水&#xff0c;进水服务器中一组阵列内的所有硬盘同时掉线。 北亚数据恢复工程师到达现场后发现机房内…

Web开发4:单元测试

在Web开发中&#xff0c;单元测试是一种重要的开发实践&#xff0c;它可以帮助我们确保代码的质量和可靠性。通过编写和运行单元测试&#xff0c;我们可以验证代码的正确性&#xff0c;减少错误和缺陷&#xff0c;并提高代码的可维护性。本文将介绍单元测试的概念、好处以及如何…

Vue.js 3 项目开发:迈向现代化前端开发的必经之路

文章目录 一、Vue.js 3简介二、Vue.js 3新特性1. Composition API2. 更好的性能3. 更好的TypeScript支持4. 更多的生命周期钩子5. 更好的自定义指令API 三、Vue.js 3项目开发实践1. 搭建开发环境2. 项目结构规划3. 组件开发4. 路由管理5. 状态管理6. 测试与部署 《Vue.js 3企业…