0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

S32K344复位操作方法

li1756686189 来源:嵌入式 MCU 2023-01-29 10:14 次阅读

移植 S32K144 软件复位代码到 S32K344 如下:

void SystemSoftwareReset(void)

{

uint32 regValue;

/* 读取中断和复位控制寄存器 */
regValue = S32_SCB->AIRCR;

/* 清除寄存器 */
regValue &= ~( SCB_AIRCR_VECTKEYSTAT_Msk);

/* 配置系统复位请求位 */
regValue |=(((uint32)(((uint32)(0x05FAU))< regValue |=(((uint32)(((uint32)(0x1U))<

/* 写寄存器数值 */
S32_SCB->AIRCR = regValue;

}

但却工作不正常。检查 Contex M7 内核的 SCB寄存器和 Cortex M4 是一致的,为什么在 S32K144上可以工作,却在 S32K344上不能工作呢?因为这并没有在 S32K3上实现,S32K3 RM 参考手册中列出了所有的复位源。

Table 153. Destructive reset sources

Table 155. Functional reset sources

ce438e50-9f30-11ed-bfe3-dac502259ad0.png

通过读取 DCMROF20[DCF_DEST_RST_ESC]寄存器可以确定是否使能成功。

ce6dfbd6-9f30-11ed-bfe3-dac502259ad0.png

使用RTD API

“Power_Ip_MC_ME_SocTriggerResetEvent(Power_Ip_FUNC_RESET_MODE)”

以触发软件中的功能复位。它基本上按预期工作。每次调用此函数后,可以看到S32K3被复位(MCU PC被设置为复位处理程序起始地址),复位计数器寄存器MC_RGM[FRIC]增加1(假设MC_RGM[DES]破坏性复位标志在第一次POR复位后被清除,软件中需要配置驱动初始化代码RTD MCU_Init )。可以看到,功能复位计数器阈值MC_RGM[FRET]是15。预计15次功能复位后将发生破坏性复位。但实际结果是,当功能复位计数器RGM[FRIC]达到8时,MCU PC被设置为RAM地址0x20427F2C,而不是像之前的7个复位事件那样被设置为复位处理器地址。在0x20427F2C,它是一个分支到自身的无限循环。为什么功能复位计数器达到8会导致这种情况 PCC被复位为“0x20427F2C”而不是reset_handler。

根据 S32K3参考手册的"31.12 Recovery mode sequence"",在 8次功能复位后,安全 sBAF 将执行复位序列——也就是说,应用程序内核可能被在某个RAM地址中无限循环。

根据参考手册 "31.15.2 DCM Register DCMRWP1", DCMRWP1 位23 应当能够控制这个表现。如果该位设置为 1, 禁止恢复模式。即便设置为1,恢复模式序列仍然被 sBAF执行。

当应用问题大于 8次功能复位的时候,设置 DCMRWP1[22] 位,这个位禁止应用恢复模式。当应用问题大于 8次破坏性复位的时候,设置DCMRWP1[23]位, 这个位禁止应用恢复模式。

尝试过操作 DCMRWP1[22] ,但是没有效果。根据参考手册,DCMRWP1[16~20] 和 DCMRWP1[11~14] 也执行 sBAF控制的复位计数器,但是这些寄存器没有变化,可能是sBAF版本的问题,新版本应该没有这个问题。在 MCU应用初始化时,手动清除功能复位计数寄存器 RGM FRET。

IP_MC_RGM->FRET= 0xFF;

//写 1 来清除FREC寄存器

临时解决方案是:MCU_Init() 代码调用驱动函数Power_Ip_MC_RGM_ResetInit() 中添加如下判断条件即可。

ce8205f4-9f30-11ed-bfe3-dac502259ad0.png ​ 注意:使用  Power_Ip_MC_ME_SocTriggerResetEvent(POWER_IP_FUNC_RESET_MODE) 复位 MCU, 该函数会复位 PTA5 (Reset_B 复位引脚)。在代码里面做一个100ms 周期性的代码复位操作,可以看到 PTA5有这个复位波形。在RTD里面配置关闭 Functional reset escalation 函数,设置如下。

ce992784-9f30-11ed-bfe3-dac502259ad0.png

Mcu Reset Type配置调用Mcu_PerformReset();接口时是执行Functional Reset还是Destructive Reset
Mcu Functional Reset Escalation Threshold (0 -> 15)配置Functional Reset的阈值,0表示关闭此功能,若配置为n,则n次Functional Reset后会自动执行一次Destructive Reset
Mcu Destructive Reset Escalation Threshold (0 -> 15)配置Destructive Reset的阈值,0表示关闭此功能,若配置为n,则n次Functional Reset后会保持在Reset状态,直到下一次power-on reset后重启。如下表中复位源,会导致 Reset脚发生复位。

ceac3860-9f30-11ed-bfe3-dac502259ad0.png

cece3dca-9f30-11ed-bfe3-dac502259ad0.png

唯一不复位的操作选项是,在 DCF中,禁用复位引脚功能。设置 Reset pad dedicated为 0,使用GPIO口功能,而不是复位功能引脚。默认是1表示作为复位引脚功能。

cef01eae-9f30-11ed-bfe3-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117745
  • 移植
    +关注

    关注

    1

    文章

    367

    浏览量

    27854
  • 计数器
    +关注

    关注

    32

    文章

    2123

    浏览量

    92987
  • Cortex
    +关注

    关注

    2

    文章

    194

    浏览量

    45758
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784

原文标题:S32K344 复位操作

文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Lockstep core in S32K344即使有2个内核也不能同时处理双重任务?

    我对解耦核心(S32K324)和锁步核心(S32K344)有疑问Lockstep core in S32K344 即使有2个内核也不能同时处理双重任务? 如果我的应用程序需要性能和较低的安全性,那么
    发表于 03-14 08:37

    S32K344 mcu的生产/调试建议使用哪种硬件/软件?

    我偶然发现了这个 Flash 工具 ...我想知道是否有任何用于 S32K344 的工具,如果可能的话有一个 GUI。1. S32K344有没有GUI flash工具?2. S32K344 mcu 的生产/调试建议使用哪种硬件/
    发表于 03-16 06:06

    请问S32K344 FPU是否支持双精度浮点数?

    请问S32K344 FPU是否支持双精度浮点数?根据 S32K3xx 数据表,只提到了单精度,我相信这是指 fpv5-sp-d16? 根据 ARM Cortex-M7 网站,支持双精度,但仅作为一个
    发表于 03-21 08:03

    S32K344 GPIO复位状态:MDM是什么意思?

    我使用的是 S32K344、257 针 BGA 封装。GPIO PTG18,引脚 M10,列出功能复位和自检期间的复位状态作为 MDM。MDM 的定义是什么,它在文档中的哪个位置定义?
    发表于 03-22 08:51

    请问S32K344有FlexRay驱动(测试代码)吗?

    S32K344有FlexRay驱动(测试代码)吗?
    发表于 03-24 07:34

    如何在s32k344微控制器上使用SBC FS6500?

    我想使用 SBC FS6500 (MC33FS6523CAE) 为 s32k344 172 MaxQFP 微控制器供电。如何在 SBC 上为 s32k344 内核生成 1.5V 电压?这个电压水平的 SBC 设置是什么?
    发表于 03-27 08:19

    S32K344调试器与J-Link调试器连接错误怎么处理?

    我在 S32DS 3.4 中使用 J-Link 调试器创建了一个简单的 S32K344 示例代码,当我构建它并尝试下载它时出现以下错误。请问有什么问题吗? 以下是控制台窗口中的错误消息。严格限制错误
    发表于 03-28 06:49

    求分享S32K344的统一引导加载程序?

    我最近开始使用 S32K344 评估板,想知道,你们有 S32K344 设备的统一引导加载程序吗?如果没有,预计什么时候发布?
    发表于 03-29 08:16

    如何为s32k344板构建裸机?

    我正在尝试为 s32k344 板构建裸机。有没有人已经为 s32k344 尝试过裸机?你能帮我选择我可以用来为 s32k344 构建 barebox 的配置文件吗?
    发表于 04-19 06:24

    求分享S32K344引导程序

    S32K344引导程序
    发表于 04-21 06:43

    S32K344 S32DS周边工具问题求解

    S32K344 S32DS周边工具--问题
    发表于 04-21 08:22

    S32K344 MCU待机模式如何配置?

    任何人都可以共享具有待机模式配置的 S32K344 的 EB tresos 配置吗?我有点困惑。我是否需要配置两种模式 - 运行和待机?如果可能,请共享相同的 tresos 配置
    发表于 05-05 13:56

    如何通过CAN与S32K344通信?

    有谁知道在 HVBMS mbdt 中如何使用 J1(主连接器)中的 CAN 与 S32K344 板进行通信。工具箱里有例子吗?我在哪里可以看到这个?
    发表于 05-11 06:19

    请问S32K344支持的最大SPI速率是多少?

    我的问题: S32K344 支持的最大 SPI 速率是多少? 需求概览: 我想评估一下它的性能来考虑它是否可以用在我的新项目中。 新项目需要通过 SPI 作为主机和从机传输大量数据。 我创建的关于
    发表于 05-18 10:47

    如何将S32K344示例修改为S32K312?

    S32K344示例修改为S32K312需要注意什么?我只是修改了设备(S32K344->S32K312),项目总是被重置。
    发表于 05-23 08:11