标题: 关于单片机IO口输出的几种状态 [打印本页]

作者: QWE4562012    时间: 2021-8-24 15:53
标题: 关于单片机IO口输出的几种状态
单片机IO口输出的几种状态

1.单片机的开漏输出和开漏复用输出有哪些区别?

2.单片机的推挽输出和推挽复用输出有哪些区别?

3.单片机的开漏输出只能输出低电平,而输出高电平需要外部上拉电阻;而推挽输出是可以真正的输出高电平,除了这个,还有哪些区别?

以上请从电子应用技术的角度说,不要讲一堆的数学模型

开漏复用输出.png (226.66 KB, 下载次数: 54)

开漏复用输出.png

开漏输出.png (223.18 KB, 下载次数: 48)

开漏输出.png

推挽复用输出.png (226.26 KB, 下载次数: 49)

推挽复用输出.png

推挽输出.png (228.55 KB, 下载次数: 37)

推挽输出.png

作者: sustlixin    时间: 2021-8-24 16:37
通俗,简单一点来说,
IO复用,即一个IO口有两个硬件功能,比如,一个IO口,既可以用作SPI,又可用于UART

而关于开漏和推挽
开漏,相当于一个单刀单置开关
推挽,相当于一个单刀双置开关
作者: sinside    时间: 2021-8-24 16:48
没有听说复用的部分, 我猜大概是单片机内部有自动外设模块(例如I2C, SPI) 直接进行输出. 比如I2C就需要开漏, SPI用推挽. 然后复用的功能就单片机内部集成了自动的I2C, SPI模块, 所以配置的时候要配置成相应的复用类型. 其本质应该还是开漏和推挽.

至于开漏和推挽除了你说的区别外, 我所知道的是开漏能承受比较大的电流, 其他有知道的人再补充吧.
https://zhuanlan.zhihu.com/p/41942876
看看这里图片和表格更加便于理解一些.
作者: lfc315    时间: 2021-8-24 17:31
图都标得那么清楚了啊;
复用功能是相对于普通IO功能来说的;
用指令直接控制IO脚的电平,就是普通IO功能,串口、SPI的发送输出,是由特定的内部模块去控制的,叫复用功能。
作者: QWE4562012    时间: 2021-8-24 17:54
这四种模式分别在什么场合下使用?比如什么时候用开漏什么时候用推挽呢
作者: sinside    时间: 2021-8-25 08:31
QWE4562012 发表于 2021-8-24 17:54
这四种模式分别在什么场合下使用?比如什么时候用开漏什么时候用推挽呢

例如 复用开漏: 使用芯片内部自带的I2C; 复用推挽:使用芯片内部自带的SPI;

普通开漏: 有需要较大电流的(相对于IO口驱动电流), 比如LED直接驱动; 推挽则比较常用.

从开漏和推挽的原理图(看我之前发的链接), 就很好理解了, 比如开漏可以理解为一个NPN三极管C极 接出去, E极接地, B极由芯片内部控制, 这样就好理解了. 推挽看图也是类似的道理.


作者: 黄youhui    时间: 2021-8-25 08:37
QWE4562012 发表于 2021-8-24 17:54
这四种模式分别在什么场合下使用?比如什么时候用开漏什么时候用推挽呢

开漏的话,当单片机驱动能力不足时使用,例如单片机是3.3V但是你控制的元件是需要5V的电平才能动,这时候需要开漏外加5V上拉,或者单片机输出电流最大是1mA但是控制的元件最少要2mA才能驱动,需要用开漏增大电流。至于推挽,正常情况都用推挽。复用的话,IO口不做普通IO口用,使用单片机自带的SPI和USART的时候就得用到复用,你就得配置成对应的复用模式。i2c用复用开漏,spi用复用推挽。
作者: QWE4562012    时间: 2021-8-25 19:07
sinside 发表于 2021-8-24 16:48
没有听说复用的部分, 我猜大概是单片机内部有自动外设模块(例如I2C, SPI) 直接进行输出. 比如I2C就需要开漏 ...

应该是推挽的电流更大
作者: 放弃理想    时间: 2021-8-25 19:13
#在这 通俗,简单一点来说, IO复用,即一个IO口有两个硬件功能,比如,一个IO口,既可以用作SPI,又可用于UART  而关于开漏和推挽 开漏,相当于一个单刀单置开关 推挽,相当于一个单刀双置开关里快速回复#
作者: 188610329    时间: 2021-8-28 15:27
复用这个不讲,一般是可以复用某些功能,如SPI,ADC这些,详细看手册。

讲讲推挽和开漏,
开漏通俗来讲,就是只能拉低电平,不能拉高电平,所以需要外接上拉电阻,由外部提供高电平。好处是高电平可以随意指定,比如你5V单片机一般高电平5V,你控制3V的设备就非常麻烦,那么设置开漏,然后外部上拉到3V,就能非常简单的控制3V设备了。
推挽,简单来讲,就是开漏+ 内部用较小的电阻上拉到VCC,这样在高电平状态,就能输出较大的电流。没有推挽模式的单片机,用开漏模式,和300R上拉电阻,一样可以输出15MA的电流。上拉电阻选值必须参考开漏模式的下拉罐电流承受能力,不然,拉不低电平事小,烧坏单片机事大。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1