本帖最后由 21ic小喇叭 于 2016-6-24 09:17 编辑
问题:
该问题由某客户提出,发生在 STM32F207VET6 器件上。 据其工程师讲述:部分芯片无法通过拉低 NRST PIN 产生复位。该现象一旦上电复位后无法重现。
客户的应用中通过外部硬件看门狗定时给 NRST PIN 送低电平产生复位。正常情下,MCU 会给外部硬件看门狗喂狗
调研:
拉低NRST PIN产生复位是一种常用的复位手段。由于复位电路是在芯片内部,因此复位时的动作仅仅需要将NRST PIN拉低并持续一段时间然后释放为高即可。持续时间在数据手册中有说明,参见参数VNF(NRST)。 而NRST引脚硬件连接也非常简单,只需一个0.1uF电容接到地即可;MCU芯片内部具有上拉电阻。 检查其NRST PIN硬件电路,没有发现重大的问题。进一步检查其他外围电路,也未发现重大问题。
由于客户**不能掉电再上电,因此无法通过重新烧写测试代码来进行调试。考虑到在客户的应用中使用了外部振荡器 HSE,因此用示波器观测振荡器引脚上的波形。观测结果表明振荡器波形呈周期性;进一步观测 NRST 引脚波形,发现 NRST 引脚波形也呈周期性,且周期和 HSE 引 脚波形吻合。测量NRST引脚波形周期,发现其与外部看门狗的复位周期相同。由于STM32F207在上电后的默认配置是使用HIS而不使用HSE,所以HSE引脚上的波形一定是在程序中打开了 HSE后才产生的。至此可以得出结论,MCU 在 NRST PIN的控制下能够正常产生复位并且 MCU 正 确的运行了代码。
结论:
通过以上的测试分析可以得知,该问题并非如客户描述是由 NRST 无法复位造成的,而恰恰是MCU 的 NRST 引脚能够正常复位芯片。
处理:
根据上述分析,进一步查找原因。最终确定是 MCU 在与外部器件通讯时,外部器件状态异常从而导致 MCU 一直等待;而程 序中没有对此情况进行处理从而导致外部看门狗复位 MCU。 解决办法是在程序中增加异常状态处理同时进一步检查外部器件的使用要求。
建议:
1) 描述问题应准确。以本例来说,NRST PIN 不能复位芯片和芯片复位后运行没有产生预期结果是 两个完全不同的概 念。准确地描述问题是解决问题的第一步。
2) 关于 STM32 和 STM8,对于硬件的基本要求并不多。通过检查这些基本配置,配以简单的测试代 码(例如 IO 翻 转),可以确定硬件平台是否能够工作。这可以为后续调试打下一个基础。
3) 以下对 STM32/STM8 的硬件基本配置进行简单说明。
-首先是检查电源部分。 一般来说,一是要保证电源在正常工作范围以内;其次是检查一下电源部分的去耦电容是否 都 已经加上。
对于STM32 来说,在数据手册里有一节是“Power supply scheme”,这里给出了如何配置电 源去耦电容的说明。 下图选自 STM32F20xxx 数据手册:
注意关于此图的说明也需要加以注意。例如在 STM32F103x8/B 的数据手册中有以下注释: “Caution:In Figure 13, the 4.7 µF capacitor must be connected to VDD3.”这些 说明随着器件不同可能有变化,因此要加以核对。
-对于 STM8,数据手册中没有类似的说明。一般来说,电源上多是并联一个大电容和一个小电容 起到去耦的作用。例如在 STM8A/128-EVAL 板上,使用了一个 10uF 和一个 10nF 电容;或者,至 少要有一个小去耦电容。例如,在 STM8SVLDISCOVERY 板上,则使用了一个 100nF 的电容。
- VCAP 引脚。
在 STM8A/S 上,有 VCAP 引脚;在 STM8L 上则没有此引脚。
在 STM32 上,不同的产品不同。例如 STM32F2 有 VCAP 引脚,而 STM32F1 没有 VCAP 引脚。 对于具有 VCAP引脚的器件来说,必须按照手册说明添加 VCAP 电容。
例如对于 STM32F2,VCAP 电容是 2.2uF;而对于 STM8S/A 来说,VCAP 可以是 470nF~3300nF。一 般来说,考 虑到电容容值的偏差,这个电容可以加大一点,例如 1uF 或者 680nF。
- NRST 引脚。
STM32/STM8 的 NRST 引脚都具有内部上拉,因此复位电路比较简单。去耦电容参见相应数据手 册中的说明。下图选自 STM32F103x8/B 数据手册。
- Boot0/1
对于 STM32 来说,Boot0/1 是选择启动模式的引脚。根据需要,将它们通过一个电阻(例如 STM3210E-EVAL 板 上使用了 10Kohm)接到 H/L 即可。
需要注意的是,有些产品的 Boot1 是引脚,而有些产品的 Boot1 是 option byte。
-振荡器设计 振荡器设计参考AN2867;
此外还需要核对相应器件的勘误手册看有无说明。
由于 STM32/STM8 在复位后默认是使用 HSI 作为时钟,因此在调试时可以先使用 HSI 看是否能运 行起来。即先看 平台是否工作,需要时再看 HSE 是否工作。
- 对于STM8 来说,有一点要特别注意:IO 上电不能早于电源上电。否则有可能导致器件不能正 常启动。
- 硬件检查完毕后,可以通过一个测试代码(例如 IO 口翻转)来查看平台是否可以工作。要注意 的是 STM32/STM8大部分IO 口复位后默认是 Input floating 状态,因此要在程序中设置成输出状态。
【 下期将为您带来STM系列(2):STM32F4xx PCROP 功能使用说明 】
主要介绍 Proprietary Code Read Out Protection (PCROP) ----- 专有代码读取保护,解决设计公司二次开发中的专有代码保护问题。
重要通知 - 请仔细阅读
意法半导体公司及其子公司(“ST”)保留随时对ST 产品和/ 或本文档进行变更、更正、增强、修改和改进的权利,恕不另行通知。买方订货之前应获取关于ST 产品的最新信息。ST 产品的销售依照订单确认时的相关ST 销售条款。
买方自行负责对ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。
ST 不对任何知识产权进行任何明示或默示的授权或许可。
转售的ST 产品如有不同于此处提供的信息的规定,将导致ST 针对该产品授予的任何保证失效。
ST 和ST 徽标是ST 的商标。所有其他产品或服务名称均为其各自所有者的财产。
|