STM32W108无线ZigBee射频模块复位模块原理

2019-07-14 01:35发布

STM32W108的复位可以由多个复位源导致,每个复位源反馈到中央的复位检测逻辑,依据系统的状态和复位事件的性质来复位系统的各个部分。

4.3.1 复位原理

4.3.1.1 复位源

看门狗复位: STM32W108包含一个看门狗定时器,是由内部1KHz的参考时钟所驱动,当该定时器超时溢出时,它产生WATCHDOG_RESET复位源到复位模块。   软件复位: ARM Cortex-M3 CPU可以在软件控制下启动一个复位,产生SYSRESETREQ复位源到复位模块。 注:当使用外部调试器时,如果调试器发出SYSRESETREQ请求信号,该芯片可能被锁住,需要一个引脚复位或重新上电。建议不要在应用程序中直接写SCS_AIRCR寄存器,而是使用ST软件提供的一个复位函数,该复位函数能够确保芯片在复位之前处于安全的时钟模式之下。   可选字节错误: 在系统启动时,Flash存储控制器通过一个状态机从Flash存储信息块来读取配置信息,并且在读取的过程中进行执行可选字节错误检测。如果发现错误,则会产生一个错误信号OPT_BYTE_ERROR到复位模块。 如果检测到一个可选字节错误,系统会重新启动,并且会再次执行读取和检测程序。如果再次检测到错误,这个过程会重复进行,直到第三次失败后停止。这时系统进入一个可以自行恢复的模拟深睡眠状态,在这种状态下,Flash存储器读保护被强迫启动,以防止应用程序被破坏。   调试复位: 串口线/JTAG接口(SWJ)可用来访问SWJ调试端口(SWJ-DP)寄存器,通过设置SWJ-DP中的CDBGRSTREQ位,可产生复位源CDBGRSTREQ到复位模块。   JTAG复位: 遵照JTAG标准要求,STM32W108需要提供一个引脚可以配置为JTAG复位功能,此输入复位源独立于其它所有复位源,当该复位引脚有效时,只对JTAG TAP复位,对其它任何片上硬件不进行复位。如果STM32W108处于串行模式或SWJ被禁用,该输入复位引脚无效。   深睡眠复位: 电源管理模块会通知复位模块进入和退出深睡眠状态,深睡眠复位适用于以下情形:在进入深度睡眠之前;存储域和核心域断电时;在深度睡眠状态时;从深度睡眠中唤醒时;在重新上电直到POR LV检测到已处于可靠的供电水平时。 电源管理模块提供一个特殊的模拟深睡眠状态,在该状态时能够保持存储域和核心域的供电。

4.3.1.2 复位记录

STM32W108会记录上次的复位条件来重新启动系统,复位条件记录包括: ● POWER_HV          始终供电域电源供应故障 ● POWER_LV          核心域或存储域电源供应故障 ● RSTB                NRST引脚复位 ● W_DOG             看门狗定时器超时 ● SW_RST             ARM Cortex-M3 CPU的SYSERSETREQ软件复位 ● WAKE_UP_DSLEEP   从深睡眠中唤醒 ● OPT_BYTE_FAIL      读取Flash内容,检测到可选字节错误 复位事件源寄存器(RESET_EVENT)用于回读上一次复位事件,所有位是互斥的,除OPT_BYTE_FAIL位,当该位使能时,用于保存原始复位事件。 注:当CPU Lockup在软件中被标记为一种复位条件时,CPU Lockup将不再是一个特殊复位事件。CPU Lockup当被设置时,表明CPU已进入一个不可恢复的异常,执行停止但不复位,调试器可以解释错误起因。建议在真实应用中(例如:没有附加的调试器)默认启用看门狗定时器,以便STM32W108可以被重新启动。

4.3.1.3 复位生成

复位生成模块响应复位源并产生以下复位信号: l  PORESET   对ARM Cortex-M3的CPU和系统调试组件(Flash修补和断点,数据监视和跟踪,指令跟踪宏单元,嵌套中断向量控制器)进行复位,ARM定义PORESET作为上电复位域。 l  SYSRESET   在不对内核调试和系统调试组件复位情况下复位ARM Cortex-M3的CPU,这样可以保证在不影响调试配置的情况下复位正在运行的系统。 ●  DAPRESET   复位SWJ的AHB访问端口(AHB-AP)。 ●   PRESETHV   始终供电域的外围设备复位,主要用于外围设备在深睡眠期间需要保存配置信息。 ●   PRESETLV   核心域的外围设备复位,外围设备在深睡眠期间不需要保存配置信息。 表4.2显示了不同复位源产生的复位信号。   表4.2. 产生的复位信号 复位源 产生的复位信号 PORESET SYSRESET DAPRESET PRESETHV PRESETLV POR HV X X X X X POR LV(深睡眠时) X X X   X POR LV(非深睡眠时) X X X X X RSTB X X   X X 看门狗复位   X   X X 软件复位   X   X X 可选字节错误 X X     X 正常深睡眠 X X X   X 模拟深睡眠   X     X 调试复位   X      

4.3.1.4 复位寄存器

复位事件源寄存器(RESET_EVENT) 地址:0x4000002C 初始值:0x00000001   表4.3. RESET_EVENT位描述 位 名称 描述 Bit7 CPU_LOCKUP 设置为'1'时,复位由于内核被锁住导致。 Bit6 OPT_BYTE_FAIL 设置为'1'时,复位由于可选字节加载失败导致(可以与其它位同时有效)。 Bit5 WAKE_UP_DSLEEP 设置为'1'时,复位由于从深睡眠中唤醒导致。 Bit4 SW_RST 设置为'1'时,复位由于软件复位导致。 Bit3 W_DOG 设置为'1'时,复位由于看门狗定时器超时导致。 Bit2 RSTB_PIN 设置为'1'时,复位由于外部复位引脚信号触发。 Bit1 POWER_LV 设置为'1'时,复位由于核心域电源失效导致(或之前失效)。 Bit0 POWER_HV 始终设置为'1',正常供电。   本文出自《STM32W108嵌入式无线传感器网络》邱铁,夏锋,周玉编著.清华大学出版社,2014年5月