这个答案不是STM32特定的,而是基于多年(很多)年的经验和许多这样的讨论。其他人可以补充这一点-它涵盖了主要观点(我认为),但可能并不完整。
令人鼓舞的是,有人问这些简单但基本的问题,并显示出这种“小事情”如何在现实生活中“群居”。
即,“如果微机未正确初始化...”实际上读为“ ...当微机未正确初始化...” :-)-很明显,您已经意识到这一点。
所以:
对于真正热衷于获得清晰定义结果的人来说,使用外部上拉或下拉电阻至关重要。这是这里最大的单项任务。所有其余的都是奖金。即设置为带有内部pullxxx的输入是一种折衷方案,几乎可以正常使用。
但是,如果“几乎总是”对您的设计而言不够好,则您需要外部拉xxx。
上拉或下拉似乎并没有取得压倒性的更好结果。不同的IC可能有所不同,但可以从数据手册中确定。在所有条件都相同的情况下(可能如此),我倾向于下拉,因为有可能会降低设备外部电路的泄漏电流-但这在涂有保形涂层的PCB和/或良性环境中可能很小。
如果您真的很在意,您可能希望查看启动操作。例如,上拉的引脚将在某个阶段开始为低电平并变为高电平。下拉的引脚可能会一直保持低电平。这可能并不重要,但出于完整性考虑而提及。
ESD敏感性将因设备而异,很可能是对称的,并且平均而言,许多驱动器均倾向于下拉,因为如果不对称,驱动器往往比源更好。如果您非常在意ESD,那么您可能希望使用具有下拉功能的低输出-因为低阻抗路径将(可能)提供更好的ESD保护。但是,如果您非常关心ESD,则可能需要以其他方式进行设计,而不是依靠IC内部保护作为主要保护。
问题3-外部pullxxxs是可取的,但是使用处于适当设计极限高端的值似乎是安全的,然后根据需要并行使用内部xxx。但是,由于内部上拉xxx通常具有2:1的Reff,因此仅使用外部电阻就可以获得最大的R和最小的电流。您当然要避免的是外部上拉和内部下拉或反之,但这不太可能成为问题。
当我说“……限制适当设计的高端……”时,我的意思是“不是限制过去……”。也就是说,引脚将具有指定的电阻值,这可以满足最差的Vin规格。较大的电阻器可能会在电阻器中吸收较少的电流,但可能会开始非常轻微地打开内部开关。也就是说,可能有一个Rpulldown_current与最低的总电流折衷,因为内部驱动器开始看到泄漏电流(该电流将非常小),从而增加了驱动电流,并很小地窃窃私语。
如果使用例如下拉电阻,则可能会发现它的功耗较低,以将引脚设置为输出并将其驱动为低电平,但这是一个可以在适当时候决定的选项。
几乎没有考虑-在运行期间的任何阶段,绝不允许保护二极管处理“任何大电流”。允许他们这样做可能导致处理器完全无法解释。电流越小,发生问题的机会就越少-当事情做错时,就越难找到它。