嵌入式02 STM32 实验02 端口输入输出各4种模式

          GPIO(General-purpose input/output 通用目的输入/输出端口)                      电压(A模拟量)与电平(D数字量)

GPIO 8种工作模式(输入四种、输出四种)

  1、GPIO_Mode_AIN 模拟输入

  2、GPIO_Mode_IN_FLOATING 浮空输入

  3、GPIO_Mode_IPD 下拉输入

  4、GPIO_Mode_IPU 上拉输入

  5、GPIO_Mode_Out_OD 开漏输出

  6、GPIO_Mode_Out_PP 推挽输出

  7、GPIO_Mode_AF_OD 复用开漏输出

  8、GPIO_Mode_AF_PP 复用推挽输出

一、模拟输入

  黄色高亮部分表示数据的传输通道,阴影的部分不工作。

  模拟输入是指传统方式的输入.数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。

二、浮空输入

  图中施密特触发器是打开的,上下拉电阻断开,IO口的状态可以直接送到输入寄存器中,CPU可以直接读取输入寄存器。 

 三、下拉输入

  下拉输入与前面的浮空输入模式相比,仅仅是在数据通道下部,接入一个下拉电阻,STM32中,该下拉电阻的阻值介于30-50K。

  下拉输入就是把电压拉低,拉到GND。与上拉原理相似。

四、上拉输入

   上拉输入与前面的浮空输入模式相比,仅仅是在数据通道上部,接入一个上拉电阻,STM32中,该上拉电阻的阻值介于30-50K。

   上拉就是把电位拉高,比如拉到VDD。上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!弱强只是上拉电阻的阻值不同,没有什么严格区分

五、开漏输出

  如图,输出控制电路控制信号来源于CPU,当输出信号1,则PMOS不被激活,NMOS高阻,输出端口的电平由外部的上下拉电阻决定,当接上拉电阻,则端口为高电平,当接下拉电阻,则端口为低电平;当输出控制电路输出0,则PMOS不被激活,NMOS导通,则端口电平拉低到VSS上。

  输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).

  简言之:

    输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。
    输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需要外部上拉电路);可以读IO输入电平变化,此模式可以把端口作为双向IO使用。

六、推挽输出

  可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。

  简言之:

    输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。
    输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。

七、八、复用开漏输出/复用推挽输出

  可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。

  复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

  如图,输出控制电路信号来源于片上外设模块,当输出信号1,则PMOS导通,NMOS截止,输出端口的电平由外部的上下拉电阻决定,当接上拉电阻,则端口为高电平,当接下拉电阻,则端口为低电平;当输出控制电路输出0,则PMOS截止,NMOS导通,则端口电平拉低到VSS上。

 输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).

输入保护电路

    当输入信号电压为正时,且超过(VDD)+0.7V,D1导通,导通后,输入端的电压就稳定在(VDD)+0.7V了,而不会因输入信号电压增加而增加,就起到了保护作用。
 同理,当输入信号电压为负时,且超过了(VSS)-0.7V,D2导通,输入端的电压也稳定在(VSS)-0.7V
   这样,只要设置VDD,VSS的电压大小,就可以确定运放输入端的保护电压大小了。

猜你喜欢

转载自www.cnblogs.com/ksht-wdyx/p/11594755.html