STM32-GPIO外设详解

news/2024/11/29 5:30:57/

目录

一、GPIO简介

二、GPIO框图剖析

1、GPIO输出部分

1)保护二极管

2)P-MOS&N-MOS

 3)复用功能输出

4)输出数据寄存器、位置设置/清除寄存器

 2、GPIO输入部分

 1)输入模式(模拟/浮空/上拉/下拉)

2)复用功能输入


一、GPIO简介

GPIO是通用型输入输出端口的简称也可以交I/O端口,简单来说就是STM32的可控制引脚。将STM32的GPIO引脚与外部设备连接起来,即可实现与外部通讯、控制以及数据采集等功能。STM32的GPIO被分成了好多组,有A、B、C、D、E等每组又被分为了16个引脚。所有的GPIO引脚都有基本的输入输出功能,有些可能还会被复用成别的功能。

二、GPIO框图剖析

1、GPIO输出部分

1)保护二极管

引脚的俩个保护二极管可以防止外部过高或者过低的电压输入,防止不正常电压引入从而导致芯片损坏。尽管有这一层保护STM32的引脚也不能直接驱动功率较大的外设。如马达等。

2)P-MOS&N-MOS

GPIO的线路如果是向下的那就是输出模式,这里有一对MOS管组成的电路,这个结构使GPIO具有推挽输出开漏输出俩种模式。

推挽输出模式:在该结构中输入高电平,经过反向使上方P-MOS导通,下方的N-MOS管截止,对外输出高电平。在该结构中输入低电平,经过反向上方P-MOS截止,下方的N-MOS导通,对外输出低电平。当俩种电平切换时,俩个MOS管轮流导通,使得其负载能力和开关速度都比普通的方式有很大提高。这种模式输出的低电平为0V,高电平为3.3V。

下面是我画的一个等效电路

 开漏输出模式:在这个模式下上方的P-MOS完全不工作对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即 高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。

原理是:我们控制输出为0,则P-MOS管关闭,N-MOS管导通,输出接地,若输出为1(上面说了无法真正的输出高电平)时,则俩MOS管都关闭,引脚不是输出高电平,也不是低电平,而对外显示高阻态,正常使用一般都要外部上拉电阻,这种特性我们也把他成为“线与”,也就是说,如果有多个开漏模式的GPIO脚连接在一起,只有所有脚都对外显示高阻态时,外部的上拉电阻才会提供高电平,若是有一个引脚为低那么整条线路都为低电平。

因为这个特性,我们一般选择输出模式时都会选择推挽输出模式,只有在I^{2}C、SMBUS通讯等需要“线与”特性的总线电路中我们才会使用开漏输出模式,且如果我们遇到电源不提配的场合,就可以吧GPIO引脚设置成开漏输出,外接上拉电阻,电源为5V。当输出高阻态时,上拉电阻和电源就可以向外输出5V的电压。

下面是我画的一个等效电路

 3)复用功能输出

复用输功能输出中的复用在上面GPIO的简介中提到一句GPIO的引脚会被复用成其他功能,是指其他片上外设对GPIO引脚进行控制时GPIO引脚会被作用成该外设共能的一部分,比如我们使用USART通讯时通常会把GPIO的某些引脚复用成USART的TXD(发送数据输出端)这里不细讲后面介绍USART外设时在详细介绍。

从其他外设引出来的复用功能输出信号还是会和GPIO本身的数据寄存器一起连接到双MOS管电路中,并不会单走。

4)输出数据寄存器、位置设置/清除寄存器

前面提到的双MOS管电路的输入信号,就是有GPIO-ODR(输出数据寄存器)提供的,因此我们修改ODR寄存器就可以改变输出电平,前面我们在用寄存器编程的时候我们就动手操作过,这里就不放寄存器的手册图和介绍如何使用了,如果不了解的可以取看看我前面的寄存器编程文章这里放个传送门:STM32-寄存器编程-使用寄存器点亮LED_学c入门到入土的博客-CSDN博客

GPIO-BSRR(位置设置/清除寄存器)可以通过修改自己的值间接的影响GPIO-ODR输出数据寄存器)的值从而影响输出的状态。

GPIO-BSRR分高16位与低16位,每次写入只能是一个字(16位)也就是我们的普通8421码,且低16位优先于高16位,如果高16位和低16位都被写入的数据优先低16位的结果。

 2、GPIO输入部分

 1)输入模式(模拟/浮空/上拉/下拉)

这里因为后三种输入模式过于简单就统一写入了模拟输入介绍章节,统称输入模式。

模拟输入:一般是GPIO作为ADC采集电压的输入通道时用作模拟输入,此功能不通过肖特基触发器,因为学过数字电路知道经过触发器后我们的信号会被处理成数字信号只有0、1俩种状态了。与我们要采集到的原始模拟信号是不相符的。同样当GPIO作为DAC模拟输出通道时,此时作为模拟输出功能,信号也不会通过双MOS管电路。

浮空输入:浮空输入引脚电平是不确定的,完全由外部输入决定。

上拉输入:上拉输入引脚是高电平,电路通过上拉电阻接VDD。

下拉输入:下拉输入引脚是低电平,电路通过下拉电阻接VSS。

2)复用功能输入

复用功能输入与复用功能输出模式类似,GPIO引脚工作在复用功能输入模式时由STM32的其他片上外设控制该引脚,比如USART通讯复用功能时,此GPIO引脚会被复用成RXD(接收数据输入端)这里不细讲后面介绍USART外设时在详细介绍。

到这里GPIO外设的所有知识以经介绍到位了,我们在配置GPIO脚的模式时脑子里就应该有这些东西。关注我后面我会更新所有STM32的特色外设介绍。


http://www.ppmy.cn/news/615724.html

相关文章

STM32外设GPIO的配置和应用

以下内容主要以F407xx系列为例。 01 PIN脚类型和结构 在讲GPIO之前,我们先看下STM32中的PIN脚类型: PIN脚类型 PIN类型描述备注SSupply pin电源引脚IInput only pin只能作输入I/OInput / output pin输入输出口 PIN类型 - S PIN名称描述备注VBAT为备…

中断-NVIC与EXTI外设详解(超全面)

✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:rivencode的个人主页 🔥系列专栏:玩转STM32 💬推荐一…

外设、总线、接口概念辨析

命名: 外设,peripheral。 总线,bus。 接口,interface。 本文对这几个容易混淆的概念进行辨析,以便于更好地理解嵌入式系统。 外设在个人电脑等领域是指主机以外的一些设备,如显示器、键盘、鼠标、打印机…

MCU 如何控制外设

单片机如何控制外设 单片机不是直接控制外设的,而是通过配置片上外设寄存器来控制其输出和检测高低电平,进而控制外围器件。 单片机如何配置寄存器的? 下图是单片机驱动 点亮发光二极管 内核从flash里面加载读取指令。内核根据指令到SRAM里面…

常用芯片外设扫盲

AI算法半路出家的过程其实是有点痛苦的,告别了曾经熟悉的领域,在陌生又熟悉的道路上摸索着前进,其中的焦虑、彷徨以及面对信息过载的不知所措,常常让人怀疑当初的选择。好在,硬核人生不会被小小的困难劝退,…

CPU与外设间数据传输方式

主要有程序传送方式、中断传送方式和直接存储器存取(DMA)传送方式,分别介绍如下。 1. 程序传送方式 程序传送方式是指直接在程序控制下进行数据的输入/输出操作。程序查询方式分为无条件传送方式和查询方式(条件传送方式)两种。 …

STM32外设

外设 1.认识2.外设------------1.内部外设; 2.外设。3.如何选择外设IO口 1.认识 STM32管脚40个,常见是整个最小系统板,具体介绍认识可自行百度 2.外设------------1.内部外设; 2.外设。 内部是单片机里集成的功能,外设是指单片机扩展的功能 …

单片机外设基本概念_单片机外设有哪些,外设功能是什么?

单片机外设有哪些? 单片机内部的外设一般包括:串口控制模块,SPI模块,I2C模块,A/D模块,PWM模块,CAN模块,EEPROM,比较器模块,等等,它们都集成在单片机内部,有相对应的内部控制寄存器,可通过单片机指令直接控制。 外设指的是单片机外部的外围功能模块,比如键盘控制芯…