zoukankan      html  css  js  c++  java
  • 嵌入式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的电压大小,就可以确定运放输入端的保护电压大小

    推挽和开漏可以参考该文章:https://blog.csdn.net/qq_27016651/article/details/83096126

  • 相关阅读:
    Seam jBPM integration
    NetBeans 时事通讯(刊号 # 34 Nov 11, 2008)
    Seam jBPM integration
    小学生新闻联播看多了,写的作文
    位运算中的异或运算 .
    按位与、或、异或等运算方法
    C++中L和_T()之区别
    ExtJS入门之一 类与继承
    结构体初始化
    Ext.chart 包的类图
  • 原文地址:https://www.cnblogs.com/ksht-wdyx/p/11594755.html
Copyright © 2011-2022 走看看