DSP

GPIO工作原理

2019-07-13 19:46发布

  • GPIO基本结构和工作方式
  • GPIO寄存器说明
  • GPIO引脚说明
FT 5V容忍(3.3V,可以忍受5V)
  1. 四种输入模式
    输入浮空
    输入上拉
    输入下拉
    模拟输入
  2. 四种输出模式
    开漏输出(带上拉或下拉)
    开漏复用功能(带上拉或下拉)
    推挽式输出(带上拉或下拉)
    推挽式复用功能(带上拉或下拉)
  3. 四种最大输出速度
    2MHz
    25MHz
    50MHz
    100MHz
推挽输出
可以输出强高低电平,连接数字器件
开漏输出
只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合做电流型的驱动,其吸收电流的能 力相对较强(一般20mA以内)。 每个GPIO端口的寄存器(一共有10个:4个32位配置寄存器,2个32位数据寄存器)
* 端口模式寄存器 (GPIOx_MODER)
* 端口输出类型寄存器 (GPIOx_OTYPER)
* 端口输出速度寄存器 (GPIOx_OSPEEDR)
* 端口上拉下拉寄存器 (GP|IOx_PUPDR)
* 端口输入数据寄存器 (GPIOx_IDR)
* 端口输出数据寄存器 (GPIOx_ODR)
* 端口置位/复位寄存器 (GPIOx_BSRR)
* 端口配置锁寄存器 (GPIOx_LCKR)
* 复用功能寄存器X2 (低位 GPIOx_AFRL & 高位 GPIOx_AFRH)
每组10个寄存器,可控制16位
  • GPIOx_MODER 端口模式寄存器
    32位对应16个端口,每个寄存器占2位
    00 输入(复位状态)
    01 通用输出状态
    10 复用功能模式
    11 模拟模式
  • GPIOx_OTYPER 端口输出类型寄存器
    32位,高16位保留,必须保持复位值
    低16位对应16个端口,每个位对应一个端口
    0 输出推挽(复位状态)
    1 输出开漏
  • GPIOx_OSPEEDR 端口输出速度寄存器
    32位对应16个端口,每个端口由2位控制
    00 2MHz(低速)
    01 25MHz(中速)
    10 50MHz(快速)
    11 30pF时为100MHz(高速)(15pF时为80MHz(最大速度))
  • GPIOx_PUPDR 端口上拉/下拉寄存器
    32位对应16个端口,每个端口由2位控制
    00 无上拉或者下拉
    01 上拉
    10 下拉
    11 保留
  • GPIOx_IDR 端口输入数据寄存器
    高16位保留,必须为复位值
    低16位只读,只能在字模式下访问。它们包含相应I/O端口的输入值。
  • GPIOx_BSRR 端口置位/复位寄存器
    只写,只能在字、半字或字节模式下访问。读取可返回值0X0000
    高16位 BRy 端口x复位位y
    0 不会对相应的ODRx位执行任何操作
    1 对相应的ODRx位进行复位
    低16位 BSy 端口x置位位y
    0 不会对相应的ODRx位执行任何操作
    1 对相应的ODRx位进行置位
  • GPIOx_ODR 端口输出数据寄存器
    高16位保留,必须保持复位值
所有I/O口都可以作为中断输入。 未完待续!