STM32 GPIO的八种模式及其原理:深入剖析 |
您所在的位置:网站首页 › gpio检测高低电平 › STM32 GPIO的八种模式及其原理:深入剖析 |
一、GPIO简介
GPIO就是通用I/O(输入/输出)端口,是STM32可控制的引脚。 STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 二、GPIO工作模式.1. 四种输入模式 GPIO_Mode_IN_FLOATING 浮空输入模式 GPIO_Mode_IPU 上拉输入模式 GPIO_Mode_IPD 下拉输入模式 GPIO_Mode_AIN 模拟输入模式 2. 四种输出模式 GPIO_Mode_Out_OD 开漏输出模式 GPIO_Mode_Out_PP 推挽输出模式 GPIO_Mode_AF_OD 复用开漏输出模式 GPIO_Mode_AF_PP 复用推挽输出模式 三、GPIO工作原理解析 1. I/O端口的基本结构框图
保护二极管 作用: 防止引脚外部输入过高和过低的电压,防止不正常电压引入芯片,导致芯片烧毁。 当引脚电压高于VDD时,上方的二极管导通。 当引脚电压低于VSS时,下方的二极管导通。 上拉电阻和下拉电阻 作用: 控制引脚默认状态的电压。 开启上拉的时候,引脚默认电压为高电平。 开启下拉的时候,引脚默认电压为低电平。 TTL肖特基触发器 TTL肖特基触发器其实可以理解为用肖特基管构成的施密特触发器。 作用: 将相对缓慢变化的模拟信号变成矩形信号。 当输入电压高于正向阈值电压,输出为高。 当输入电压低于负向阈值电压,输出为低。 P-MOS管和N-MOS管 作用: 使得GPIO具有“推挽输出”和“开漏输出”的模式。 P-MOS管: MCU输出为 1 导通,低电平关闭。 N-MOS管: MCU输出为 0 导通,高电平关闭。 3. GPIO工作模式解析 浮空输入模式浮空输入模式下,I/O端口的电平信号直接进入到输入数据寄存器。 MCU直接读取I/O口电平,I/O的电平状态是不确定的,完全由外部输入决定。 如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。 (接用电压表测量其引脚电压为1点几伏,这是个不确定值) 以用来做KEY识别 上拉输入模式上拉输入模式下, I/O端口的电平信号经过上拉电阻进入到输入数据寄存器。 IO内部接上拉电阻,此时如果IO口外部没有信号输入或者引脚悬空,IO口默认为高电平 如果I/O口输入低电平,那么引脚就为低电平,MCU读取到的就是低电平 STM32的内部上拉是"弱上拉",即通过此上拉输出的电流是很弱的,如要求大电流还是需要外部上拉。 下拉输入模式下拉输入模式下, I/O端口的电平信号经过下拉电阻进入到输入数据寄存器。 IO内部接下拉电阻,此时如果IO口外部没有信号输入或者引脚悬空,IO口默认为低电平 如果I/O口输入高电平,那么引脚就为高电平,MCU读取到的就是高电平。 模拟输入模式模拟输入模式下, I/O端口的电平信号不经过TTL肖特基触发器,直接进入ADC模块,并且输入数据寄存器为空 ,MCU不能在输入数据寄存器上读到引脚状态。 在模拟输入模式下,上拉电阻和下拉电阻是不起作用的,即使配置上拉和下拉模式,也不会有作用。 当GPIO引脚用于ADC采集电压的输入通道时,用作"模拟输入"功能,此时信号不经过施密特触发器,直接直接进入ADC模块,并且输入数据寄存器为空 ,CPU不能在输入数据寄存器上读到引脚状态 当GPIO用于模拟功能时,引脚的上、下拉电阻是不起作用的,这个时候即使配置了上拉或下拉模式,也不会影响到模拟信号的输入输出 除了 ADC 和 DAC 要将 IO 配置为模拟通道之外其他外设功能一律 要配置为复用功能模式, 开漏输出模式(带上拉或者下拉)开漏输出模式下, P-MOS管不工作,只有N-MOS管工作,MCU只能控制输出低电平。 MCU输出低电平的时候,N-MOS管导通,I/O引脚输出低电平。 MCU输出高电平的时候,N-MOS管关闭,I/O引脚悬空状态。 推挽输出模式 推挽输出模式下, P-MOS管和N-MOS管都工作,MCU可以控制输出高电平和低电平。 MCU输出为 0 的时候,N-MOS管导通,I/O引脚输出低电平。 MCU输出为 1 的时候,P-MOS管导通,I/O引脚输出高电平。 复用开漏输出模式 复用开漏输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。 复用推挽输出模式 复用推挽输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。 三、在STM32中选用IO模式: 上拉输入、下拉输入可以用来检测外部信号;例如,按键等; 模拟输入 ——应用ADC模拟输入,或者低功耗下省电 开漏输出一般应用在I2C、SMBUS通讯等需要"线与"功能的总线电路中。 推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。 复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA) 复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS) F4系列与F1系列区别: 本质上的区别是F4系列采用了Cortex-M4内核 而F1系列采用Cortex-M3内核 F1系列(M3)IO口基本结构:
F4系列(M4)IO口基本结构:
F4系列设计的更加高级与人性化,他将外部上下拉电阻转移到了输出/输入驱动器外部,使得输出模式下也可以实现内部上拉与下拉,方便了用户的使用,增加了灵活性 四、GPIO的配置方法(cubemx)1,打开cubrmx ,点击ACCESS TO MCU SELECTCR.
2,会进入这个界面,在 part number 处输入单片机的型号,并选取相应的型号
3,先点击syssterm core ,再点击sys,参照图上配置
4,在右侧的芯片上,寻找所要设置的GPIO,在单击该GPIO后会显示能配置的模式 5,在选定模式后点击GPIO进行详细的配置 在这可进行输入\输出的初始电平,输入的开漏,推挽等的设置。 6,进入clock configuration进行时钟树的配置(上一章讲过了) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |