gpio是什么,gpio接口详解
以下是相关文字稿:
GPIO全名为(General Purpose Input Output),即通用输入输出端口,我们在使用的时候一般简称为“IO口”,在芯片封装的时候,通过电子引线从芯片内部引出到外部引脚,通过这些外部引脚,可以实现传感器信号读取和控制信号输出。
其实呀,我们在学习单片机的时候,就是在学习怎样控制单片机采集外部信号和对外输出控制信号,这里的描述中,“怎样控制”就是指控制逻辑或控制算法;“采集外部信号”就是指如何读取外接输入信号并解析的过程,可以根据外部信号的特性,配置合适的输入模式,外部信号包括数字信号和模拟信号;“输出控制信号”就是指单片机以配置的输出模式、输出速率、信号类型(模拟/数字信号)通过引脚对外部设备输出驱动信号。下面我们就来具体聊一聊单片机GPIO的特性与配置,这里我们以STM32Fxx系列的DateSheet为例讲述。
我们在查看DateSheet GPIO这部分时,首先要看的就是GPIO相关的缩写说明,这里主要是一些参数缩写描述。
GPIO的三种工作模式:
(一)输入模式
第一种是上拉输入/下拉输入/浮空输入:
上拉输入就是通过一个电阻将I/O连接到VCC或指定电源,目的是为了保证在无信号输入时输入端的电平为高电平,而在信号输入为低电平时,输入端的电平应该也为低电平。同样,下拉电阻它是为了保证无信号输入时输入端的电平为低电平,有输入信号时输入端保持高电平。浮空输入呢就是信号输入端既不上拉也不下拉,此时,I/O口处于高阻态,我们也将其称为浮空输入状态,在无信号输入的情况下,此时I/O端口的电平是不确定的。了解了这几种输入模式的特性,那我们在设计时该怎样选择配置呢?这里我们举几个例子:
1)独立按键(无源电路):这种连接方式,在不配置上拉/下拉模式时,当按键按下时,具有确定的输入状态,当按键弹起时,此时I/O端口的输入状态不确定,当受到外部干扰时,就容易出现误触发。所以此时就需要将I/O 口的模式配置为上拉/下拉模式,在按键按下或弹起时均有确定转态。
2)独立按键(外接上拉/下拉电阻):这个电路在按键按下或弹起时,均具有确定的状态,此时,我们可以将I/O配置为浮空输入模式,除此之外,我们一般在电路中还可以并联一个104的瓷片电容,做按键去抖动。
3)有源传感器:下面电路是有源传感器与单片机I/O连接的电路,传感器在正常工作状态下,均具有确定的状态,此时,我们可以将I/O配置为浮空输入模式。
由这几个实例可知,当接入I/O的硬件工作在任意状态下其输出信号都有稳定值(高电平或低电平),此时,可以将单片机I/O配置为浮空输入模式;当接入I/O的硬件只能够输出一种确定状态时,为保证不受外部干扰,此时,就需要将I/O配置为上拉/下拉模式。
在我们的设计中,也要灵活使用模式,因为单片机自带的上拉/下拉电阻为定值,有时不符合我们的设计要求,此时,就需要自己选择合适的外接上拉/下拉电阻。
第2种是模拟输入,就是将外部信号传入单片机的A/D转换器,然后单片机就可以将外部模拟量转化为数字量,再进行后续处理(数字滤波、阈值分析、计算等),带A/D转换功能的引脚都是芯片出厂就确定的。
高阻态模拟配置
连接到 ADC 输入的模拟输入
(二)输出模式
第一种是开漏输出与推挽输出
单片机的I/O输出结构如上图所示,由一个P-MOS与N-MOS组成,通过配置,可以通过控制P-MOS与N-MOS的导通,使输出配置为开漏或推挽输出。当P-MOS禁止时,输出配置为开漏输出,开漏模式一般应用在I2C、SMBUS通讯等需要“线与”功能的总线电路中,在开漏输出模式下,P-MOS管不工作,只有N-MOS管起作用。若输出数据寄存器的值为0,则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平,也不是低电平,这种状态被称为高阻态。
当P-MOS使能时,输出配置为推挽输出,推挽输出又叫推拉输出,是最常见的输出配置了,正如它的名字那样,推挽输出能够驱动输出两种电平。一种是拉接到地(从负载灌入电流),另一个被推到电源电压(输出电流到负载),在集成电路中一般使用两个晶体管搭建,推挽输出模式可以提供较强的驱动力。推挽输出模式下,若输出数据寄存器的值为0,则N-MOS导通,P-MOS截止,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止,P-MOS导通,IO口输出高电平。
第二种是模拟输出,就是将外部信号传入单片机的D/A转换器,然后单片机就可以将数字量转换为模拟量输出了,同样,带D/A转换功能的引脚都是芯片出厂就确定的。
(三)复用模式
复用功能配置
我们知道,STM32Fxx内部集成了很多的外设控制器,比如USART、SPI、bxCAN等等,这些外设控制器,也需要通过引脚与外设连接。复用功能是相对于单片机的引脚而言的,所谓“复用功能”,是指单片机的引脚既可以做普通GPIO使用,也可以作为内部外设控制器的引脚来使用。例如,PA5可以作为普通GPIO来使用;其次,如果作为外设的引脚,它可以作为SPI1的时钟(SPI1_SCK)、DAC的输出通道1(DAC_OUT1)或者ADC的输入通道5(ADC12_IN5),但是,PA5支持的三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟,并使其它外设的时钟保持关闭状态。
那我们怎么配置呢?这里主要有两种配置方式,第一种就是通过代码直接配置,在我学习STM32的时候,官方只提供了标准库,我们在使用的时候需要按照标准库开发指南来进行配置,这种方式配置比较麻烦,也容易出错,有时候移植代码会造成功能冲突,我们在写代码的时候,不怕报错,就怕不报错功能还不对,我在几次项目中都发生过这种情况,通过查找,基本都是I/O配置冲突。
标准库配置GPIO
这几年随着HAL库的推广,HAL库得到了广泛应用,加上ST公司对STM32的生态环境打造,我们可以通过STM32CubeMX进行配置,STM32CubeMX是STM32Cube生态里用来芯片初始化配置的图形化配置工具。通过分步配置过程可以非常轻松地配置STM32微控制器和微处理器。
第一步包括选择与所需外设集匹配的意法半导体STM32微控制器、微处理器或开发平台,同时包括在特定开发平台上运行的示例。对于微处理器,第二步允许配置GPIO和设置整个系统的时钟,并交互地将外设分配给Arm® Cortex®-M或Cortex®-A内核,通过引脚分配冲突处理器、时钟树设置助手、功耗计算器,以及用于配置外设(如GPIO或USART)和中间件栈(如USB或TCP/IP)的实用工具来配置各个必需的嵌入式软件。最终,用户可以生成与所选配置匹配的软件包。
然后,可以将生成的初始化工程或代码导入到KEIL MDK环境或者ST官方提供的IDE继续编写用户代码,功能非常强大,也十分好用,界面比较友好,解决了使用代码配置过程中存在的引脚功能冲突或引脚功能重复配置问题。
关于芯片的GPIO引脚内容就分享这么多了~
本文地址:百科问答频道 https://www.neebe.cn/wenda/916640.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!