上下拉电阻是对MCU IO输入来说的,输出也可能会用到,比如对于开漏输出的IO,就必须加上上拉电阻,否则输出不了高电平。原因是开漏输出结构如下,漏极是开路的 它只有一个NMOS,当控制输出0时,NMOS导通,Output Pin输出0,但是当控制输出1时,NMOS截止,输出的是高阻态。要能输出1,必须外面接一个上拉电阻。 这种结构的好处可以用在电平不匹配的场合,可以灵活的输出1.8V/3.3V/5V等高电平,只要把Vdd接到不同的电压上即可。另外它还具有”线与”的特性,即多个开漏引脚连接在一起,只有当每个都输出1时它才能输出高电平,只要有一个输出0,所有的引脚电压都被拉低。常见的IIC总线就是用这种结构 这个上拉电阻的阻值选取也是有讲究的,也是既不能太小,也不能太大。因为太小的话,IO口上就会承受较大的输入电流,而IO的输入电流是有限制的。太大的话,会影响IIC的通信速度,因为总线上还有负载电容,电阻太大,电容充放电时间就会久,影响上升沿、下降沿时间。关于这个具体计算,可以参考TI的一篇文档:https://www.ti.com/lit/ml/slva689/slva689.pdf?ts=1679814584051 该文档详细描述了计算方法:
|