STM32-深入理解GPIO的8种工作模式
文章目录
一、GPIO中四个关键器件介绍
1.1、保护二极管
1.2、P-MOS管和N-MOS管
1.3、上拉电阻和下拉电阻
1.4、TTL肖特基触发器
二、GPIO的8种工作模式
2.1、模拟输入
2.2、浮空输入
2.3、下拉输入
2.4、上拉输入
2.5、开漏输出
2.6、推挽输出
2.7、复用开漏输出
2.8、复用推挽输出
三、推挽和开漏的总结
3.1、推挽结构和推挽电路
3.2、开漏知识
四、外设的GPIO配置
4.1、高级定时器TIM1/TIM8
4.2、通用定时器TIM2/3/4/5
4.3、USART
4.4、SPI
4.5、I2S
4.6、I2C
4.7、BxCAN
4.8、USB
4.9、全速USB OTG引脚配置
4.10、SDIO
4.11、ADC/DAC
4.12、FSMC
4.13、其它I/O功能
一、GPIO中四个关键器件介绍
1.1、保护二极管
图(1)中①所示的为两个保护二极管。这两个保护二极管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。尽管有这样的保护,并不意味着STM32的引脚能直接外接大功率驱动器件,如直接驱动电机,要么电机不转,要么导致芯片烧坏,必须要加大功率及隔离电路驱动。
1.2、P-MOS管和N-MOS管
图(1)中②所示的为 P-MOS 管和 N-MOS 管。GPIO引脚线路经过两个保护二极管后,向上流向“输入模式”结构,向下流向“输出模式”结构。在输出模式部分,线路经过一个由P-MOS和N-MOS管组成的单元电路。这个结构使GPIO具有了“推挽输出”和“开漏输出”两种模式,这两种模式下面会详细介绍。
1.3、上拉电阻和下拉电阻
图(1)中③所示的为上拉电阻和下拉电阻。其中VDD为I/O引脚和内部调压器(稳压)的电压,是设备的工作电压,STM32的数据手册为2.0v~3.6v,这里就当3.3V好了,无关紧要。VDD所连的电阻为上拉电阻,当开关打开时,其输出就是高电平。VSS为电路公共地端电压,一般接GND。VSS所连的电阻为下拉电阻,当开关打开时,其输出就是低电平。
1.4、TTL肖特基触发器
图(1)中④所示的为TTL肖特基触发器。信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。ADC外设要采集到的原始的模拟信号。补充:当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变。
二、GPIO的8种工作模式
GPIO Mode | Description |
GPIO_Mode_AIN | 模拟输入 |
GPIO_Mode_IN_FLOATING | 浮空输入 |
GPIO_Mode_IPD | 下拉输入 |
GPIO_Mode_IPU | 上拉输入 |
GPIO_Mode_Out_OD | 开漏输出 |
GPIO_Mode_Out_PP | 推挽输出 |
GPIO_Mode_AF_OD | 复用开漏输出 |
GPIO_Mode_AF_PP | 复用推挽输出 |
2.1、模拟输入
模拟输入模式(GPIO_Mode_AIN)关闭了TTL肖基特触发器,不接上、下拉电阻,经由另一线路把电压信号传送到片上外设模块。如传送至ADC模块,由ADC采集电压信号。所以使用ADC外设的时候,必须设置为模拟输入模式。在模拟输入模式下,输出缓冲器被禁止,读取输入数据寄存器为0。 补充:类似地,当GPIO引脚用于DAC作为模拟电压输出通道时,此时作为“模拟输出”功能,DAC的模拟信号输出就不经过双MOS管结构,而是直接输出到引脚。
2.2、浮空输入
浮空输入模式(GPIO_Mode_IN_FLOATING)在芯片内部既没有接上拉,也没有接下拉电阻,经由TTL肖基特触发器输入。配置成这个模式直接用电压表测量其引脚电压为1点几伏,这是个不确定值。由于其输入阻抗较大,一般把这种模式用于标准的通信协议如I2C、USART的接收端。在浮空输入模式下,输出缓冲器被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。
2.3、下拉输入
下拉输入模式(GPIO_Mode_IPD),I/O端口的电平信号通过TTL肖基特触发器后,进入输入数据寄存器。在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在低电平;并且在I/O端口输入为高电平的时候,输入端的电平则为高电平。在下拉输入模式下,输出缓冲器被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。
2.4、上拉输入
上拉输入模式(GPIO_Mode_IPU),I/O端口的电平信号通过TTL肖基特触发器后,进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在高电平;并且在I/O端口输入为低电平的时候,输入端的电平则为低电平。 在上拉输入模式下,输出缓冲器被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。
2.5、开漏输出
开漏输出模式(GPIO_Mode_Out_OD),上方的P-MOS管完全不工作。如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出接地,若控制输出为1(它无法直接输出高电平)时,则P-MOS管和N-MOS管都关闭,所以引脚既不输出高电平,也不输出低电平,为高阻态。正常使用时必须外部接上拉电阻,等效电路见图(7)。它具有“线与”特性,也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平。在开漏输出模式下,施密特触发输入被激活,弱上拉和下拉电阻被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态(注意:I/O端口的电平不一定是输出的电平)。
2.6、推挽输出
推挽输出模式(GPIO_Mode_Out_PP),是根据这两个MOS管的工作方式来命名的。在该结构中输入高电平时,经过反向后,上方的P-MOS导通,下方的N-MOS关闭,对外输出高电平;而在该结构中输入低电平时,经过反向后,N-MOS管导通,P-MOS关闭,对外输出低电平。当引脚高低电平切换时,两个MOS管轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0V,高电平为3.3V,推挽输出模式时的等效电路见图(9)。 在推挽输出模式下,施密特触发输入被激活,弱上拉和下拉电阻被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输出数据寄存器的读访问得到最后一次写的值(注意:此时I/O端口的电平一定是输出的电平)。
2.7、复用开漏输出
对于相应的复用模式,则是根据GPIO的复用功能来选择的,如果用在IC、SMBUS这些需要线与功能的复用场合,就使用复用开漏模式(GPIO_Mode_AF_OD)。
当I/O端口被配置为复用功能时:
- 在开漏或推挽式配置中,输出缓冲器被打开
- 内置外设的信号驱动输出缓冲器(复用功能输出)
- TTL肖基特触发输入被激活
- 弱上拉和下拉电阻被禁止
- 在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器
- 开漏模式时,读输入数据寄存器时可得到I/O口状态
- 在推挽模式时,读输出数据寄存器时可得到最后一次写的值
2.8、复用推挽输出
GPIO的引脚用作串口的输出,则使用复用推挽输出模式(注:输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的)。
三、推挽和开漏的总结
3.1、推挽结构和推挽电路
推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
推挽输出模式一般应用在输出电平为0和3.3V而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,一般习惯使用推挽输出模式。
3.2、开漏知识
开漏输出只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。适合于做电流型的驱动,其吸收电流的能力相对强(20mA以内)。
开漏输出一般应用在I2C、SMBUS通信等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5V的高电平,就可以在外部接一个上拉电阻,上拉电源为5V,并且把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V的电平,具体见图(12)。
四、外设的GPIO配置
4.1、高级定时器TIM1/TIM8
4.2、通用定时器TIM2/3/4/5
4.3、USART
4.4、SPI
4.5、I2S
4.6、I2C
4.7、BxCAN
4.8、USB
此图内容只适用于小容量、中容量和大容量产品
4.9、全速USB OTG引脚配置
- 此图内容只适用于互联型产品
- 如果另一个共享的外设要使用OTG_FS_VBUS引脚(PA9)或把它作为通用I/O口,必须激活PHY的断电模式(清除OTG_FS_GCCFG寄存器的位16)
4.10、SDIO
4.11、ADC/DAC
ADC输入引脚必须配置为模拟输入
4.12、FSMC
4.13、其它I/O功能
STM32-深入理解GPIO的8种工作模式相关推荐
- STM32中GPIO口八种工作模式简介及LED灯测试
STM32中GPIO口八种工作模式简介及LED灯测试 一.GPIO口八种工作模式 二. LED灯测试 一.GPIO口八种工作模式 在STM32单片机里对于GPIO的配置种类有8种之多,包括4种输入模式 ...
- GPIO的八种工作模式
一.GPIO的八种工作模式 1.上拉输入:IO口在无输入的情况下,保持高电平. 2.下拉输入:IO口在无输入的情况下,保持低电平. 3.浮空输入:浮空输入状态下,IO的电平状态是不确定的,完全由外部输 ...
- 休眠后gpio状态_STM32中GPIO的8种工作模式总结
STM32 中 GPIO 的 8 种工作模式总结 一.推挽输出:可以输出高.低电平,连接数字器件 ; 推挽结构一般是指 两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一 个截止.高低 ...
- gpio的8种工作模式_Stm32之GPIO工作模式简介
GPIO的8种工作模式 GPIO初始化结构体的时候,必须要配置合适的工作模式,这样才能使得IO口发挥应有的作用.工作模式大体上共分为输入输出两类,共8种,下面将介绍这8种工作模式. GPIO工作模式 ...
- STM32 GPIO的8种工作模式与应用场合
1.GPIO的全称是General-purpose input/output,意为通用输入/输出接口,PIN脚依现实考量可选择通用输入模式(GPI)通用输出模式(GPO)以及通用输入输出模式(GPIO ...
- GPIO的8种工作模式——基于STM32F767IGT6
对于STM32来说,GPIO有四种输入模式和四种输出模式,我们可以通过配置IO端口的相关寄存器来实现特定的效果: ps:M3系列只有输入模式有上/下拉,而M4/7系列输入/输出模式均有上/拉电阻: 浮 ...
- gpio的8种工作模式_【超低功耗系列一】STM32L 低功耗产品和模式
大家知道意法半导体STM32产品中有四个系列,其中一个很重要的系列是超低功耗系列,今天我们就来聊一下STM32超低功耗系列产品. 意法半导体的超低功耗系列有非常优秀的低功耗表现,在EEMBC(嵌入式微 ...
- STM32中GPIO的8种工作模式
一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...
- STM32中GPIO的8种工作模式!
一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定. 推挽电路是两个参数 ...
最新文章
- linux 某个文件打不开了,linux操作系统下,exe文件为什么打不开?
- 实习的第一天——培训
- Linux下挂载存储设备
- STM32之CAN---工作/测试模式浅析
- Win10 IoT 10 中文显示乱码或报错的问题
- shell 替换字符串的几种方法,变量替换${},sed,awk
- A股开盘:深证区块链50指数涨0.91%,美邦服饰涨停
- cad卸载_解决CAD小白入门的第一个难题,三招任你选
- patch补丁文件制作 使用和常见问题
- 效率低下的不良习惯与解决办法
- 如何用阿里云服务器建立个人网站
- qq空间已删信息服务器,qq空间恢复已删除的说说方法
- 企业快速构建可落地的IT服务管理体系的五大关键点
- Idea报错: A JNI error has occurred
- SDN控制器 之南向网络控制技术
- STM32+IAP方案 实现网络升级应用固件
- 《人人都是架构师》总结
- 大三软件测试实习生面试经验-1
- java 印章 方_用Java实现支持圆形带五角星 方形电子印章
- 三星 s4(i9502) android4.4rom 官方,三星S4(I9500)刷机包 Android4.4 官方精简 稳定流畅 极速省电 完整root权限 V1.0...
热门文章
- Oracle 到 GP 部分函数转换
- 使用exe4j打包Java桌面程序为exe
- 中兴通讯提前批综合面试
- 在国内市场,外汇到底能不能做?外汇合法吗?
- 22.单文件组件-webpack打包发布
- java 内存模型JMM解析
- 系列 | 数仓实践第三篇NO.3『拉链表』
- 数论——唯一分解定理
- Vue3+ElementPlus网页端聊天|vue3.0仿微信/QQ界面实例
- iOS 诡异的崩溃EXC_BREAKPOINT (code=1, subcode=0x1c5691d2c)