输出和推挽(Push-Pull)输出)
一、结构框图及工作原理说明1推挽输出Push-Pull直接翻译出来推挽就是推拉为什么不直接翻译成推拉而翻译成推挽推就是推高拉就是拉低但我们平时也讲拉高这样拉字就容易引起歧义所以拉就改为挽下管导通就是把引脚电平死死挽在地上。写这个不是为了咬文嚼字而是为了理解后加深记忆。推挽输出内部有P-MOS上管和 N-MOS下管上下互补。当MOS管G极为低电平时PMOS导通NMOS截止输出高电平这个状态就是推。当MOS管G极为高电平时PMOS截止NMOS导通输出低电平这个状态就是挽。两个状态在不同时间段输出状态的组合就行形成推挽输出。2 开漏输出Open-Drain内部只有N-MOS下管上管不存在高电平靠外部上拉电阻。为什么叫开漏 漏表示用的是MOS管的漏极输出开表示上端漏极开路所以叫开漏。当MOS管G极为高电平时NMOS导通输出低电平。当MOS管G极为低电平时NMOS截止输出状态为开漏此时要输出高电平的话只能靠外部加上拉电阻。二、典型应用推挽输出普通GPIO控制通过GPIO输出高低电平控制都是推挽输出。很多工程师喜欢在GPIO上放一个上拉电阻这既是一个好习惯但也是一个坏习惯。这样做看似很安全但也会造成浪费搞清楚原理和需求后完全可以自己做出判断gpio是否需要。从推挽输出的示意图来看如果一个GPIO已经设置为output high那么电源直接给到输出端是无法通过下拉电阻来拉低的。开漏输出I2C总线SDA/SCL开漏上拉实现多设备线与多个输出共线任一拉低则线低。思考题1为什么I2C使用开漏输出答1I2C 一个Host可以挂多个slave这些设备共用两根线SDA/SCL需要“线与”逻辑只有开漏OD才能实现。2如果I2C用推挽在挂了几个slave的情况下假设A芯片输出高B芯片输出低高低电平直接短路会烧芯片。线与概念线与是大学数学电子技术这门课程里的概念。1 AND 1 1 1 AND 0 00 AND 0 0也就是说只要有一个是 0结果就是 0全是1才是1。I2C通过线与实现仲裁机制SDA 上挂了设备A、设备B。设备A发1主机B发0总线的状态为0A检测到总线和自己发的不一样立刻放弃让出总线这就是 I2C仲裁机制。思考题2现在有的芯片I2C总线内部已经有上拉电阻了还是开漏吗答本质上还是开漏只是把上拉电阻集成到芯片里面了这样可以精简电路这里有个更大的优势是内部上拉电阻值可以通过软件配置调整从而调整驱动能力。三、总结推挽输出本质上就是推拉输出推就是推高拉就是拉低。开漏输出主要是为了实现线与功能。开漏输出需要外部上拉也可能在芯片内部集成了但这种情况本质上还是开漏。