电子产品开发细节: MCU 端口的上拉电阻

闲暇过客 2020-10-16 12:58:52
细节决定品质,这句话人尽皆知。但是,在电子产品的开发实践中,真正做到充分地处理细微之处,并非易事。细节处理不充分,在通常工作条件下,产品能够运行正常;但是当工作条件恶化(例如,电源波动,噪声干扰),可能会出现意想不到的负面结果。而电子产品质量的优劣,更多是在恶劣工作条件下才能充分体现出来。

我们以下图所示的上拉电阻为例,聊聊细节处理对电子产品质量的重要性。


上拉电阻的主要作用,是为了保证输入型 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,那么会有从一个端口的P管流经另外一个端口N管的大电流产生,可能会造成端口的损坏。

因此,不推荐多个端口共用同一个上拉电阻的处理方法。安全的处理方法是,每个端口通过单独的上拉电阻连接到电源,如下图所示。


所以说,简单的上拉电阻这样的细节,对产品的品质也是非常重要的。
...全文
877 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
闲暇过客 2020-10-16
  • 打赏
  • 举报
回复
谢谢评论@worldy。
worldy 2020-10-16
  • 打赏
  • 举报
回复
公用上拉电阻可以实现线与

27,372

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧