标签:输出 推挽 MOS 配置 低电平 复用 STM32 GPIO
关于STM32 GPIO的配置等问题
一、GPIO的基本结构图示
提示:图片来自STM32中文参考手册P176 STM32英文参考手册也有内容无差别
二、模式
我们搜索的大多数资料显示的都是有8种模式;输入4种输出4种。但今天我们就不按照那种思路来整理GPIO的模式了。我们通过GPIO的配置来看看有哪些模式。
直接上图:
提示:图片来自STM32中文参考手册P176 177
图表数据解析:
MODER[i] [1:0]: (设置 输入 输出 复用 模拟)
对应 GPIO 端口模式寄存器 (GPIOx_MODER),
00:输入(复位状态)
01:通用输出模式
10:复用功能模式
11:模拟模式
提示:数据来自STM32中文参考手册P187
OTYPER(i): (设置 开漏 推挽)
对应 GPIO 端口输出类型寄存器 (GPIOx_OTYPER),
0:输出推挽(复位状态)
1:输出开漏
提示:数据来自STM32中文参考手册P187 188
OSPEEDR(i) [B:A]: (设置 GPIO输出速度)
对应 GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR),
00:2 MHz(低速)
01:25 MHz(中速)
10:50 MHz(快速)
11:30 pF 时为 100 MHz(高速)(15 pF 时为 80 MHz 输出(最大速度))
提示:数据来自STM32中文参考手册P187 188
PUPDR(i) [1:0]: (设置 有无上下拉电阻)
对应 GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR),
00:无上拉或下拉
01:上拉
10:下拉
11:保留
它们都有各自对应的库函数
提示:数据来自STM32中文参考手册P188 189
三、配置等问题
从上图中我们不难看出,在输入模式下我们只需要配置 2项:
模式:输入
有无上下拉电阻:1、无上下拉电阻; 2、有上拉电阻; 3、有下拉电阻
在模拟模式下配置 2项:
模式:模拟
有无上下拉电阻:无上下拉电阻
在输出和复用模式下配置 4项:
模式:1、输出; 2、复用
开漏推挽:1、开漏; 2、推挽
输出速度:1、2MHz; 2、25MHz; 3、50MHz; 4、100MHz
有无上下拉电阻:1、无上下拉电阻; 2、有上拉电阻; 3、有下拉电阻
问题
提示:以下均为个人理解
关于输出速度的配置问题:
速度越快响应越快,但对应功耗也就越高
关于复用功能的配置问题:
为什么很多时候只有复用输出没有复用输入?其实这个问题本来就很奇怪,因为我既然设置了复用功能,那么就肯定不是普通的输出和输出模式了。在《STM32中文手册》P182页 7.3.7 I/O复用功能输入/输出 中也说到:“由于 AF 选择信号由复用功能输入和复用功能输出共用,所以只需为每个 I/O 的复用功能输入/输出选择一个通道即可”。至于它的配置就时上面所提到的那样。
什么时候用上拉? 什么时候用下拉?什么时候开漏 ?什么时候推挽?
上下拉:
就是在引脚悬空或者外部没有信号的时候,上拉就使得I/O口默认高电平,垃下拉就默认低电平。
开漏和推挽:
在开漏输出模式时,只有N-MOS管工作,如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出低电平,I/O端口的电平就是低电平,若控制输出为1时,高电平,则P-MOS管和N-MOS管都关闭,输出指令就不会起到作用,此时I/O端口的电平就不会由输出的高电平决定,而是由I/O端口外部的上拉或者下拉决定 如果没有上拉或者下拉 IO口就处于悬空状态。
在推挽输出模式时,N-MOS管和P-MOS管都工作,如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出低电平,I/O端口的电平就是低电平,若控制输出为1 高电平,则P-MOS管导通N-MOS管关闭,使输出高电平,I/O端口的电平就是高电平, 外部上拉和下拉的作用是控制在没有输出时IO口电平。
开漏输出和推挽输出的区别:
推挽输出:
可以输出强高低电平,连接数字器件
推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。
开漏输出:
可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 需要外接上拉电阻,才能实现输出高电平 合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内);在使用任何一种开漏模式时,都需要接上拉电阻,否则只能输出低电平。
STM32F1和F4在GPIO基本接口上存在一定的区别,使用时还需对应具体情况设置。
本文后半段参考链接:上下拉开漏推挽参考链接
标签:输出,推挽,MOS,配置,低电平,复用,STM32,GPIO 来源: https://blog.csdn.net/weixin_42074504/article/details/112282533
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。