建议使用STM32(ARM Cortex M3)上未使用的引脚的默认设置-上拉/下拉?


15

我们目前正在使用STM32微控制器系列的各种变体。我想知道以下内容:

  1. 如果可以选择同时选择上拉或下拉,则一般建议微控制器引脚的默认设置是什么?彼此搭配的利弊是什么?(假设您默认将它们设置为输入)

  2. 我特别想知道如何处理STM32微控制器系列中未使用的引脚。对我来说很明显,我们不应该让引脚悬空(数据表说的就是:(),但是我应该将它们设置为上拉输入还是下拉输入吗?特别是,我想选择最不易受到ESD影响的设置,如果可能的话,也要消耗最少的功率。

  3. 对于关键引脚,我们应该依靠固件将引脚正确设置为正确的默认状态,还是应该由外部硬件负责(连接外部上拉或下拉)?如果为外部电阻器选择的值大于内部上拉或下拉电阻,则固件中的设置无关紧要。

我可以看到,这样做的好处是,如果微型计算机由于某种原因(有故障的硬件等)未正确初始化,则我们将不依靠固件来正确设置引脚。

我看到的缺点是,硬件成本更高。

您能从上面得到的任何启示将不胜感激。

谢谢..


为什么不将未使用的引脚设置为输出?这将消除上拉与下拉问题。
康纳·沃尔夫

注意:“在发生任何复位事件时,所有GPIO均为浮动输入。这可以防止在紧急情况下对GPIO造成任何意外损坏。” Embedded-lab.com/blog/stm32-gpio-ports-insights
cp.engr

Answers:


11

这个答案不是STM32特定的,而是基于多年(很多)年的经验和许多这样的讨论。其他人可以补充这一点-它涵盖了主要观点(我认为),但可能并不完整。

令人鼓舞的是,有人问这些简单但基本的问题,并显示出这种“小事情”如何在现实生活中“群居”。

即,“如果微机未正确初始化...”实际上读为“ ...当微机未正确初始化...” :-)-很明显,您已经意识到这一点。

所以:

  • 对于真正热衷于获得清晰定义结果的人来说,使用外部上拉或下拉电阻至关重要。这是这里最大的单项任务。所有其余的都是奖金。即设置为带有内部pullxxx的输入是一种折衷方案,几乎可以正常使用。
    但是,如果“几乎总是”对您的设计而言不够好,则您需要外部拉xxx。

  • 上拉或下拉似乎并没有取得压倒性的更好结果。不同的IC可能有所不同,但可以从数据手册中确定。在所有条件都相同的情况下(可能如此),我倾向于下拉,因为有可能会降低设备外部电路的泄漏电流-但这在涂有保形涂层的PCB​​和/或良性环境中可能很小。

  • 如果您真的很在意,您可能希望查看启动操作。例如,上拉的引脚将在某个阶段开始为低电平并变为高电平。下拉的引脚可能会一直保持低电平。这可能并不重要,但出于完整性考虑而提及。

  • ESD敏感性将因设备而异,很可能是对称的,并且平均而言,许多驱动器均倾向于下拉,因为如果不对称,驱动器往往比源更好。如果您非常在意ESD,那么您可能希望使用具有下拉功能的低输出-因为低阻抗路径将(可能)提供更好的ESD保护。但是,如果您非常关心ESD,则可能需要以其他方式进行设计,而不是依靠IC内部保护作为主要保护。

  • 问题3-外部pullxxxs是可取的,但是使用处于适当设计极限高端的值似乎是安全的,然后根据需要并行使用内部xxx。但是,由于内部上拉xxx通常具有2:1的Reff,因此仅使用外部电阻就可以获得最大的R和最小的电流。您当然要避免的是外部上拉和内部下拉或反之,但这不太可能成为问题。

  • 当我说“……限制适当设计的高端……”时,我的意思是“不是限制过去……”。也就是说,引脚将具有指定的电阻值,这可以满足最差的Vin规格。较大的电阻器可能会在电阻器中吸收较少的电流,但可能会开始非常轻微地打开内部开关。也就是说,可能有一个Rpulldown_current与最低的总电流折衷,因为内部驱动器开始看到泄漏电流(该电流将非常小),从而增加了驱动电流,并很小地窃窃私语。

  • 如果使用例如下拉电阻,则可能会发现它的功耗较低,以将引脚设置为输出并将其驱动为低电平,但这是一个可以在适当时候决定的选项。

  • 几乎没有考虑-在运行期间的任何阶段,绝不允许保护二极管处理“任何大电流”。允许他们这样做可能导致处理器完全无法解释。电流越小,发生问题的机会就越少-当事情做错时,就越难找到它。


1
非常有见地的答案。非常感谢你。您能否详细说明一下-“如果您非常关注ESD,那么您可能希望使用带下拉电阻的低输出-因为低阻抗路径将(可能)提供更好的ESD保护”?如果设置为输出-默认情况下,您会开漏还是推挽(高/低)?
IntelliChick

@IntelliChick将其设置为输出的全部要点是以低阻抗将其驱动到已知状态,这意味着您绝对不会将其设置为开漏,尤其是具有HI输出的开漏,因为这只是高阻抗。
DKNguyen

@DKNguyen 8年以上... :-)。并且Intellichick已经8年没有出现了-但是仍然值得添加您的评论。
罗素·麦克马洪

@RussellMcMahon从时间的传统观念中摆脱监狱。
DKNguyen

@DKNguyen我很久以前就与光子交恶了。我们现在生活在永恒中。但是,我仍然无法实现他们的目标。所有光子都生活在永恒的,“无空间”的团聚中。离开Sol的光子和离开alpha centauri proxima的光子一直都在一起,永远不知道到达第一个或最后一个或之间的时间的含义。当我问他们如何实现时,他们只是微笑。|| 发表多年后,人们不断对我的帖子发表评论。甚至编辑它们。毫无疑问,也是您的。
罗素·麦克马洪

2

您正在优化什么?成本优化要求您将未使用的引脚设置为输出。可靠性优化要求定义所有引脚级别,即使在固件有机会将未使用的引脚设置为它认为合适的那一小段时间内也是如此。

我曾经不得不检查处理器板的可靠性计算。它的设计经过精心设计,在所有位置都有去耦电容,并且所有I / O引脚上均装有上拉电阻。可靠性工程师拿出手册,添加了所有相关组件的故障率,最后得出了一个数字,该数字主要由无源组件的故障率决定。这个数字高于要求,所以我们遇到了问题。删除那些电阻,数字就可以了。但是,在那个提议下,电气工程师开始大为愤怒(国际海事组织(IMO)是这样)。我不记得故事是如何结束的;我认为我们去了客户那里,要求配电系统从计算中省去电阻器的故障率,理由是它们没有大电流。


1

我只是将未使用的引脚配置为输出并将其设置为低电平。


您通常将它们设置为推挽还是开漏?在这两种情况下,您都可以将它们设置为低吗?你能告诉我为什么你会选择一个。
IntelliChick

@Leon Heller-符合“正常工作”测试,但“当微处理器未正确初始化时,或者当Murphy偶尔半随机翻转一点(如他偶尔那样)时,失败。 ,作品
拉塞尔·麦克马洪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.