打印
[MCU]

电子产品开发的细节之上拉电阻

[复制链接]
569|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 闲暇过客 于 2020-3-22 19:20 编辑

细节决定品质,这句话应该是人尽皆知。但是,在电子产品的开发实践中,真正做到充分地处理细微之处,并非易事。细节处理不充分,在通常工作条件下,产品能够运行正常;但是当工作条件恶化(例如,电源波动,噪声干扰),可能会出现意想不到的负面结果。而电子产品质量的优劣,更多是在恶劣工作条件下才能充分体现出来。
本文以下图为例,聊聊电子产品中上拉电阻的处理。



上拉电阻的主要作用,是为了保证输入型 I/O端口在无外部输入信号时,保持确定的高电平。这一点对于即使刚入门的电子工程师,通常也是能够理解、掌握的。那么对于上拉电阻的阻值,该如何选择呢?
通常,我们会根据典型电路或参考书籍上的示例,选择 4.7K, 5.1K, 10K 等。那么,这个阻值的选择,有什么限制吗 ?
答案是有限制的
如果我们阅读MCU手册的电特性单元,会发现I/O 部分有一个参数 IOL,用于表征 I/O 端口作为输出端口且输出低电平时,端口输入的电流值,而这个参数存在最大电流值的限制。
上拉电阻的阻值限制,正是和这个参数相关,需满足 R上拉 > Vcc / IOL (max)。
上拉电阻,是用于输入型的 I/O 端口,为什么其限制值和输出端口的参数 IOL 相关呢?这就涉及上拉电阻的另外一个作用-异常发生时的安全防护功能
我们都知道,上拉电阻是用于输入方向的 I/O 端口。而端口的方向选择,通常是由方向寄存器设定的。在通常的工作条件下,方向一旦设定,不会发生变化,除非应用程序通过指令变更其方向设定。但是,如果工作环境存在强噪声,方向寄存器中的设定值可能会被意外修改,使原本设定为输入型的I/O 端口变更为输出端口。如果此时端口缓冲器的数据恰好是 0 ,则有电流从VCC流经上拉电阻和端口的 N 管。如果上拉电阻值很小,则会出现电流过大的情形,甚至造成I/O端口的硬件损坏。
因此,上拉电阻的阻值选择,不仅考虑端口作为输入方向时、利用该电阻使端口有确定的初始值,还需考虑异常发生时,不会因端口方向变更造成端口的损坏。

使用上拉电阻时,除了考虑阻值的因素,还需要避免以下左上图中的错误连接方法。


左上图的使用方法,在通常条件下,共用同一上拉电阻的多个输入端口都可以正常工作。但是,如前文所述,当共用上拉电阻的多个端口由于干扰被意外变更为输出端口、并且恰好其中之一的输出缓冲器中的数据是1,另外一个端口的输出缓冲器中的数据是0,那么会出现从VCC流经P管和N管的大电流(上图中红线示),甚至使端口被损坏。因此,实际开发产品时,须避免多个端口公用同一个电阻的情形。



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

4

帖子

0

粉丝