2022 03月21日
作者: 阳光
  • 浏览: 1085
  • 收藏:0
  • 点赞:1
STM32F103系列的IO口工作模式

  很多小伙伴们在初学STM32时都对STM32的I/O口工作模式的原理和配置不了解,看到那一串串英文字符头都大了,但是又必须对单片机的I/O进行工作模式设置后,才能正常工作。这里简单介绍下STM32F103C8T6 I/O口的8种工作模式,详细原理请有兴趣的朋友参考STM官方给出的数据手册。先说下“GPIO”的概念—通用输入输出General Purpose Input Output 简称GPIO,就是芯片引脚可以通过它们输出高、低电平,也可以通过他们输入读取引脚的电压、电平状态。


一、输入模式

1.1 GPIO_Mode_AIN                      模拟输入


1.2 GPIO_Mode_IN_FLOATING      浮空输入


1.3 GPIO_Mode_IPD                      下拉输入


1.4 GPIO_Mode_IPU                      上拉输入


二、输出模式

2.1 GPIO_Mode_Out_OD               开漏输出


2.2 GPIO_Mode_Out_PP                推挽输出


2.3 GPIO_Mode_AF_OD                复用开漏输出


2.4 GPIO_Mode_AF_PP                 复用推挽输出


三、说明

3.1 模拟输入模式,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块(无上下拉电阻),比如ADC模块等;

3.2 浮空输入状态,I/O端口的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的;

3.3 上拉输入模式,I/O端口的电平信号在悬空(无信号输入)的情况下,输入保持在高电平(上拉);并且在I/O端口输入为低电平的时候,输入端的电平为低电平;(上拉或下拉电阻1K-10K)

3.4 下拉输入模式,I/O端口的电平信号在悬空(无信号输入)的情况下,输入保持在低电平(下拉);并且在I/O端口输入为高电平的时候,输入端为高电平;

3.5 开漏输出模式,输出端相当于三极管的集电极。要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对较强,一般20mA以内。开漏输出是有一些特别的优点的,比如:

3.5.1可用于连接与主控电平不匹配的器件,只需要将上拉电阻的上拉端连接到对方电平即可(实现电平转换);

3.5.2利用外部电路的驱动能力,减小内部电流,内部只需要很小的栅极驱动电流;

3.5.3可以将多个开漏输出的Pin,连接到一条线上,通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系(线与)。这也是I2C,SMBus等总线判断总线占用状态的原理。其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1;

3.6 推挽输出模式,既可以输出高电平也可以输出低电平,连接数字器件,是最常用的输出模式;

3.7 复用开漏/推挽输出,可以理解为GPIO口被用作第二功能时的配置情况,即并非作为通用IO口使用,后续使用到时详解。


四、常用I/O口工作模式设定

    对于刚入门的朋友来说,上面几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种。

4.1 作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时禁止使能该引脚对应的所有复用功能模块;

4.2 作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时禁止使能该引脚对应的所有复用功能模块;

4.3 作为普通模拟输入:配置该引脚为模拟输入模式,同时禁止使能该引脚对应的所有复用功能模块。注意手册中说明的输出速度可以设2Mhz,10Mhz,50Mhz是指的IO端口的翻转速度(开关速度),并非数据传输速度。STM32系列单片机功能强大,系统也比较复杂,大家只有经过多做项目才能逐步了解掌握其中的精粹。



  

发表评论

评论列表


没有评论

筛选

文章分类

热门文章

企业招聘网址

2023-12-07  浏览:3024次

BC1.2协议介绍

2023-06-14  浏览:2926次

USB2.0速度识别

2023-10-23  浏览:1352次