发布时间:2026/9/7 8:14:00
MPC5744P (四)模式管理MC_ME 该章节位于手册第59章有芯片功耗优化需求、多种模式 运行需求的小伙伴可以着重研究这一章节。MC_MEMode Control / Mode Entry是MPC5744P 等 NXP 汽车级 MCU 的模式控制单元是芯片电源域、时钟域、低功耗管理的 “总开关”。简单来说它是整个芯片的 “状态机管理员”负责定义芯片所有的运行模式如正常运行、低功耗待机、深度休眠等控制模式之间的切换时序与条件管理不同模式下的电源域、时钟域的启用 / 禁用提供寄存器接口供应用程序配置和查询状态一MC_ME简介该模板框图如图所示MC_ME 模块具备以下特性通过ME_ME寄存器控制可用的工作模式使能和禁用工作模式通过ME__MC寄存器定义多种芯片模式配置配置某一种工作模式的时钟、功耗、模块使能通过ME_MCTL寄存器控制芯片的当前工作模式用于切换工作模式的寄存器通过ME_GS寄存器的内容捕获当前模式及各类资源状态看状态用的可选择生成多种模式切换中断为各类无效模式切换原因提供状态位基于ME_RUN_PC0…7、ME_LP_PC0…7及ME_PCTLn寄存器实现外设时钟门控控制关联时钟的、多种组合基于ME_CCTLn与ME_CADDRn寄存器实现额外核心时钟门控与启动地址控制捕获当前外设及额外核心时钟的门控 / 使能状态在低功耗模式与高功耗模式之间切换时支持系统时钟的渐进式切换双向切换均适用二各种模式及切换条件MC_ME 模块基于多种芯片模式实现这些模式对应芯片不同的使用场景。每种模式均可配置可定义对应的功耗与算力管理策略以适配特定的系统需求。应用程序可根据系统当前的需求在不同模式间轻松切换。MC_ME 控制的工作模式分为系统模式与用户模式两类系统模式包括 RESET复位、DRUN深度运行、SAFE安全、TEST测试用于简化系统的配置与监控。用户模式包括 RUN0…3运行模式 0~3、HALT0暂停模式 0、STOP0停止模式 0可根据应用在功耗管理与可用算力方面的需求进行配置。其中DRUN、SAFE、TEST 及 RUN0…3 模式属于芯片的软件运行模式。模式状态机如下图所示还有所有模式之间切换的条件1RESET模式芯片会在以下事件发生时进入该模式当ME_MCTL寄存器的TARGET_MODE位域写入0000功能型复位或1111破坏性复位时从 SAFE、DRUN、RUN0…3 或 TEST 模式进入当系统因不可恢复硬件故障由MC_RGM模块触发系统复位时从任意模式进入详见MC_RGM章节。切换到该模式的过程是瞬时完成的系统将保持在此模式直到复位序列执行完毕。该模式的配置信息由ME_RESET_MC寄存器提供拥有预定义配置并默认选择16 MHz 内部 RC 振荡器作为系统时钟。2DRUN模式芯片会在以下事件发生时进入该模式复位序列完成后自动从 RESET 模式进入当ME_MCTL寄存器的TARGET_MODE位域写入0011时从 RUN0…3、SAFE 或 TEST 模式进入上述任一事件发生后都会生成 DRUN 模式转换请求。该模式的配置信息由ME_DRUN_MC寄存器提供。在此模式下Flash、所有时钟源和系统时钟配置均可由软件按需控制。系统复位后软件执行将以默认配置启动选择16MHz 内部 RC 振荡器作为系统时钟。除系统时钟源 0 外其他时钟源配置可由 Flash 中预加载的信息决定该信息会在复位序列的 PHASE3 阶段加载到ME_DRUN_MC寄存器中。此模式主要供软件用于根据系统需求初始化所有寄存器注意如果在此模式下 Flash 被配置为低功耗或掉电状态软件必须确保代码在切换到该模式前已从 RAM 中执行。3SAFE模式芯片会在以下事件发生时进入该模式当ME_MCTL寄存器的TARGET_MODE位域写入0010时从除 RESET 以外的任意模式进入当系统出现可恢复硬件故障由MC_RGM模块生成 SAFE 模式请求时从除 RESET 以外的任意模式进入详见MC_RGM章节注意若复位过程中收到硬件 SAFE 模式请求根据请求发生的时机不同SAFE 模式可能在复位序列正常完成后立即进入也可能在进入 DRUN 模式后的几个系统时钟周期后进入。SAFE 模式请求本身不会影响复位序列的执行。上述任一事件发生后都会生成 SAFE 模式转换请求。该模式的配置信息由ME_SAFE_MC寄存器提供拥有预定义配置并默认选择16MHz 内部 RC 振荡器作为系统时钟。如果在其他模式转换过程中软件发起 SAFE 模式请求那么无论转换过程中存在其他待处理请求或新请求新的目标模式都将变为 SAFE 模式。在向 SAFE 模式转换的过程中任何新的模式请求都不会触发无效模式中断。注意如果软件请求切换到 SAFE 模式且在模式转换完成前又请求切换回原模式那么模式转换结束后芯片最终仍将处于 SAFE 模式并会触发无效模式转换中断。只要 SAFE 事件处于激活状态系统就会一直保持在 SAFE 模式期间任何软件模式请求都会被忽略并丢失。此模式主要供软件用于评估故障原因的严重程度并选择通过 DRUN 模式重新初始化芯片或通过 RESET 模式完全复位芯片。如果进入该模式时需要将系统 IO 输出强制为高阻态应设置ME_SAFE_MC寄存器的PDO位输入电平则保持不变。4TEST模式芯片会在以下事件发生时进入该模式当ME_MCTL寄存器的TARGET_MODE位域写入0001时从 DRUN 模式进入上述事件发生后将生成 TEST 模式转换请求。该模式的配置信息由ME_TEST_MC寄存器提供。在此模式下除主稳压器外系统的所有资源均可配置。通过将SYSCLK位域设置为1111可以停止整个系统的系统时钟在这种情况下退出该模式的唯一方式是芯片复位。此模式主要供软件用于执行软件测试例程注意如果在此模式下 Flash 被配置为低功耗或掉电状态软件必须确保代码在切换到该模式前已从 RAM 中执行。5RUN0...3模式芯片会在以下事件发生时进入这些模式之一当ME_MCTL寄存器的TARGET_MODE位域写入0100…0111时从 DRUN 模式或其他 RUN0…3 模式进入当发生中断事件时从 HALT0 模式进入当发生中断或唤醒事件时从 STOP0 模式进入。上述任一事件发生后都会生成 RUN0…3 模式转换请求。这些模式的配置信息由ME_RUN0…3_MC寄存器提供。在这些模式下Flash、所有时钟源和系统时钟配置均可由软件按需控制。这些模式主要供软件用于执行应用程序例程。注意如果在此模式下 Flash 被配置为低功耗或掉电状态软件必须确保代码在切换到该模式前已从 RAM 中执行。6HALT0模式芯片会在以下事件发生时进入该模式当ME_MCTL寄存器的TARGET_MODE位域写入1000时从 RUN0…3 模式进入。上述事件发生后将生成 HALT0 模式转换请求。该模式的配置信息由ME_HALT0_MC寄存器提供。此模式可配置性较强应根据系统需求对ME_HALT0_MC寄存器进行编程。Flash 可按需设置为低功耗或掉电模式。如果在中断请求处于激活状态时收到 HALT0 模式请求HALT0 模式转换将被中止芯片保持当前模式收到 SAFE 模式请求则进入 SAFE 模式复位时则进入 DRUN 模式且不会生成无效模式中断。如果 HALT0 模式转换请求与中断请求同时发生系统可能出现挂起需要上电复位才能恢复。应用软件应避免这种可能导致系统挂起的场景。在进入 HALT0 模式前应用软件应禁用所有中断若软件难以实现此操作则应确保所有可能产生中断的事务已完成且所有中断已被处理完毕再发起 HALT0 模式转换请求。因此从 HALT0 模式唤醒应始终由外部中断触发而非外设模块的内部中断。此模式是一种一级低功耗模式具有以下特点内核时钟冻结附加内核时钟也冻结在系统 HALT0 模式下XBAR 主机无法工作因为它们被时钟门控关闭。此外如果在调试器连接时发起模式转换应启用 NPC非侵入式调试仅少数外设保持运行软件可利用此模式等待任务触发并在中断事件发生后快速响应即在几个系统时钟周期内完成响应。注意软件在退出 HALT0 模式时应确保ME_GS寄存器中的S_MTRANS位已被清零以保证在执行关键代码前前序 RUN0…3 模式的配置已完全恢复这是良好的开发实践。7STOP0模式芯片会在以下事件发生时进入该模式当ME_MCTL寄存器的TARGET_MODE位域写入1010时从 RUN0…3 模式进入。上述事件发生后将生成 STOP0 模式转换请求。该模式的配置信息由ME_STOP0_MC寄存器提供。此模式完全可配置应根据系统需求对ME_STOP0_MC寄存器进行编程。在此模式下以下时钟源会被关闭主 PLL锁相环次 PLL锁相环Flash 存储器可按需设置为掉电模式。如果在任何中断或唤醒事件处于激活状态时收到 STOP0 模式请求STOP0 模式转换将被中止芯片保持当前模式并会生成无效模式转换中断中断原因标记为S_MRIG模式请求被忽略。如果正在向 SAFE 模式转换时收到 STOP0 模式请求也会生成S_MRIG中断如果正在向 DRUN 模式转换复位场景则不会生成中断。在尝试进入 STOP0 模式前软件应正确禁用所有不打算用作唤醒源的中断。如果 STOP0 模式转换请求与中断请求同时发生系统可能出现挂起需要上电复位才能恢复。应用软件应避免这种可能导致系统挂起的场景。在进入 STOP0 模式前应用软件应禁用所有中断若软件难以实现此操作则应确保所有可能产生中断的事务已完成且所有中断已被处理完毕再发起 STOP0 模式转换请求。因此从 STOP0 模式唤醒应始终由外部唤醒 / 中断触发而非外设模块的内部中断。此模式是一种高级低功耗模式具有以下特点内核时钟冻结附加内核时钟冻结在系统 STOP0 模式下XBAR 主机无法工作因为它们被时钟门控关闭。此外如果在调试器连接时发起模式转换应启用 NPC非侵入式调试几乎所有外设停止运行软件可利用此模式等待任务触发且无需快速响应例如等待系统时钟源重新启动。此模式可用于关闭所有时钟源从而保存芯片状态。退出 STOP0 模式时系统会先选择 16MHz 内部 RC 振荡器作为系统时钟直到目标时钟源可用。注意软件在退出 STOP0 模式时应确保ME_GS寄存器中的S_MTRANS位已被清零这是良好的开发实践。三寄存器MC_M模块的所有寄存器如下图所示我们主要关注这个地方需要注意的是片上外设对应的外设控制寄存器编号表在后续我们要给片上外设开时钟的时候就是对照这个表的编号使能对应的MC_ME_PCTL编号寄存器1MC_ME_GS全局状态寄存器查询全局状态可以用来确认是否正确进入目标模式和系统时钟是否切换完成while(ME.GS..B.S_CURRENTMODE ! 0x4); /*wait MCU totransmit to RUN0 mode*/注意以上语句对于在将Flash设置为掉电模式的时候不适用因为Flash处于掉电模式(power-downmode)不能正常工作所以不能运行放置在Flash的上述查询代码。2MC_ME_MCTL芯片模式切换控制寄存器该寄存器用于触发软件控制的模式切换。为了确保模式切换请求成功需确保在MC_ME_ME使能了目标模式使能RUN1-3、TEST、HALT0、STOP0其他模式默认使能下面举个例子MC_ME.MCTL.R 0x30005AF0; MC_ME.MCTL.R 0x3000A50F;上面的代码就是如下图配置的TARGET_MODE挺好理解的主要是看下KEY部分配置目标模式要配置两次寄存器第一次KEY为0x5AF0第二次KEY为0xA50F理解一下在手的59.4.1中也有解释3MC_ME_ME芯片模式使能寄存器该寄存器用于禁用芯片中特定应用场景下不需要的模式。RUN1-3、TEST、HALT0、STOP0是默认被禁用的如果要启用该位配置为1即可。其中RESET_FUNC、SAFE、DRUN、RUN0和RESET_DEST模式始终处于使能状态无法被禁用。4MC_ME__MC对应配置寄存器每种模式都有一个对应的寄存器如下图挑一个最常用的默认进入的工作模式来举例MC_ME_DRUN_MC该寄存器可以指示功耗等级、IO下电、指示主电压渐进调节状态、控制Flash下电、控制PLL、PLL1、XOSCON使能、选择系统时钟。例如MC_ME.DRUN_MC.R 0x001300F4;对应寄存器配置如下图开启了PLL、PLL1、XOSCON使能、系统时钟选择了secondary PLL也就是PLL1_PHI。5MC_ME_RUN_PCn外设运行模式配置寄存器通过外设运行模式配置寄存器ME_RUN_PC0..7使能8种不同外设运行状态配置下各种模式外设时钟是激活(Active)还是冻结(Frozen)。默认各种运行模式下外设时钟都是冻结的也就是不允许其正常工作。所以为了让外设在目标运行模式下正常工作必须将其相应的位设置为1(Active)。MC_ME_RUN_PCn寄存器可以配置各模式是否激活外设来达到不同外设分配不同的方案的目的可以把这个寄存器理解成在芯片模式和外设时钟门之间架起了一座桥梁置于不同的芯片模式要开哪些外设就取决于这个桥梁怎么关联了。6MC_ME_LP_PCn外设低功耗模式配置寄存器这个跟MC_ME_RUN_PCn寄存器原理是一样的只不过这个是低功耗模式下的对应STOP0和HALT0。7MC_ME_PCTL编号外设控制寄存器这个外设控制寄存器的功能就是选择自己要走哪座“桥”。四示例1疑问与解答我原先总在思考这个MC_ME_RUN_PCn的n是什么意思为什么要有多个寄存器以及示例代码中为什么要将MC_ME_RUN_PC0配置成全0要解答这个疑问需要结合MC_ME_RUN_PCn寄存器和MC_ME_PCTL编号 寄存器还有芯片模式一起来看。1MC_ME_RUN_PCn的n是什么意思为什么要有多个寄存器MC_ME_RUN_PCn寄存器负责要激活哪些芯片模式的时钟门而MC_ME_PCTL编号 寄存器负责选择要与哪个MC_ME_RUN_PCn寄存器连接起来。如下图就很清晰明了了比如RUN0被MC_ME_RUN_PC0和MC_ME_RUN_PC1激活时钟门而ME_ME_PCTL79、ME_ME_PCTL126选择了MC_ME_RUN_PC1ME_ME_PCTL144选择了MC_ME_RUN_PC0那么就意味着RUN0模式下已经开启了CAN0、ADC1、PWM1的时钟门。2示例代码中为什么要将MC_ME_RUN_PC0配置成全0因为我们在手册中看到所有MC_ME_PCTL编号 寄存器的默认配置都是0默认配置为0就是默认选择MC_ME_RUN_PC0和MC_ME_LP_PC0。所以将MC_ME_RUN_PC0配置为全0的目的是确保所有时钟门不会被打开。如下图在实际操作中我习惯用MC_ME_RUN_PC1来桥接MC_ME_PCTL编号 寄存器和芯片模式。这样可以自己选择性的配置要使能哪些外设的时钟门。当然在默认配置下让所有MC_ME_PCTL编号 寄存器选择MC_ME_RUN_PC0然后MC_ME_RUN_PC0再使能所有芯片模式也是可以的这样更简洁只不过所有的外设时钟门都被打开了。2示例代码在工程模板中的时钟配置部分代码如下MC_ME.DRUN_MC.R 0x001300F4配置的对应寄存器配置如下图开启了PLL、PLL1、XOSCON使能、系统时钟选择了secondary PLL也就是PLL1_PHI。MC_ME.MCTL.R 0x30005AF0; MC_ME.MCTL.R 0x3000A50F;进行了目标模式选择DRUN和密钥验证。while(MC_ME.GS.B.S_MTRANS 1); 检查模式转换是否完成。还有时钟门部分的代码MC_ME.RUN_PC[0].R 0x00000000 让MC_ME_RUN_PC0不激活任何芯片运行模式。MC_ME.RUN_PC[1].R 0x000000FE 让MC_ME_RUN_PC1激活所有芯片运行模式。MC_ME.PCTL126.R 0X00000001 让ADC1选择MC_ME_RUN_PC1。好了本章节的内容就到这里了通过本章节内容可以了解MPC5744P通过MC_ME模块实现了对MCU的各种模式控制、片上外设的时钟资源功耗的精确配置能够灵活实现不同的性能与功耗模式配置和切换。

相关新闻

2026/9/6 20:44:31

Windows 11 24H2中NI软件nimdsSP.dll被Local Security Authority拦截

阅读时间:6分钟 适用人群:LabVIEW开发者、NI软件部署工程师、Windows系统管理员问题背景在Windows 11 24H2(Build 26100.2454)系统中安装或运行LabVIEW 2024 Q3、LabVIEW 2022 Q3或NI Runtime System时,出现错误提示…

2026/9/3 11:33:49

《雷暴区域》:密闭空间叙事与4K HDR技术的完美融合

最近一部名为《雷暴区域》的4K画质惊悚片在影视圈引发热议,这部作品以其独特的极端天气设定和高山哨所密闭空间叙事,为观众带来了一场视听与心理的双重震撼。如果你正在寻找一部既能满足技术流画质追求,又能提供深度人性探讨的影片&#xff0…

2026/9/7 15:45:13

TCP面试核心知识点全攻略:从三次握手到拥塞控制

1. 为什么TCP值得你花时间死磕TCP这块内容,几乎是每一场技术面试躲不过去的坎。无论是校招还是社招,无论是后端、客户端还是网络方向,面试官总喜欢从TCP切入,先问三次握手、四次挥手,再问流量控制、拥塞控制、粘包拆包…

2026/9/7 15:45:13

LeetCode 693:交替位二进制数的位运算判断技巧

1. 题目到底在问什么:交替位二进制数的本质刚看到“交替位二进制数”这个题名,很多朋友第一反应是“又要写一个判断函数”,但真正动手之后才发现,这题考的是对二进制位模式的理解和位运算的基本功。LeetCode 693 的要求很简单&…

2026/9/7 15:45:13

Windows mklink命令实战:目录联接两行搞定数据同步与路径迁移

在日常工作中,我经常遇到这样的需求:代码仓库放在 D 盘开发目录,但某个工具只认 C 盘固定路径;或者笔记本的文档散落在多个磁盘,想统一汇总到网盘同步目录;又或者是重装系统后,想把旧的用户配置…

2026/9/7 15:45:13

深入解析MCP Transport层:从Stdio到HTTP的选型与排坑指南

1. MCP的Transport到底在解决什么问题先说结论:MCP的Transport层是整个协议的地基,它决定了你的MCP server怎么被找到、怎么被连接、怎么传数据、怎么处理断连。前面几篇笔记我分别梳理了MCP的协议模型、工具调用链路和资源体系,这篇专门把Tr…

2026/9/7 15:40:13

2026 上下文缓存进阶:把前缀契约写进SPEC,MonkeyCode 云端跑通

2026 上下文缓存进阶:别把整本手册每次都重算一遍 老赵 6 人小队给省级税务局做政策问答助手。客户口头说系统提示和口径手册每次都带上,回答要快,别让窗口再等。 他们把 18 页口径、角色说明、禁答清单整包塞进每一次请求。Qwen 每次都把前缀…

2026/9/7 0:47:43

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/7 0:14:19

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/7 0:14:17

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/7 0:03:36

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

2026/9/7 0:03:36

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

2026/9/7 0:03:36

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

2026/9/6 11:40:10

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/6 19:33:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…