历史上的今天
返回首页

历史上的今天

今天是:2025年01月30日(星期四)

2019年01月30日 | STM32 GPIO模式总结

2019-01-30 来源:eefocus

GPIO的8种工作方式

4种输入模式


浮空输入


上拉输入


下拉输入


模拟输入


4种输出模式


开漏输出


复用开漏输出


推挽输出


复用推挽输出


3种最大输出速度


2MHz


10MHz


50MHz




浮空输入模式


 


1) 外部通过IO口输入电平,外部电平通过上下拉部分(浮空模式下都关闭,既无


上拉也无下拉电阻)


2) 传输到施密特触发器(此时施密特触发器为打开状态)


施密特触发器作用:


1. 波形变换 可将三角波、正弦波等变成矩形波。


2. 脉冲波的整形 数字系统中,矩形脉冲在传输中经常发生波形畸变,出现上升沿和下降沿不理想的情况,可用施密特触发器整形后,获得较理想的矩形脉冲。


3. 脉冲鉴幅 幅度不同、不规则的脉冲信号施加到施密特触发器的输入端时,能选择幅度大于欲设值的脉冲信号进行输出。


3) 继续传输到输入数据寄存器IDR


4) CPU通过读输入数据寄存器IDR实现读取外部输入电平值


5) 在输入浮空模式下可以读取外部输入电平


6) 由于浮空输入一般多用于外部按键输入,有的理解为,浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。


上拉输入模式


 


   在没有信号输入的时候,上拉电阻能使读取input值保持为高,而下拉电阻正是相反。有些传感器等元气件,他们的信号输出有效时候会输出一个高电平(或者低电平),无效时候不输出,为开路。此时我们就必须用上拉电阻(或下拉电阻)。I2S时下拉输入,其它都是上拉输入。


  和输入浮空模式相比较,不同之处在于内部有一个上拉电阻连接到VDD(输入上拉模式下,上拉电阻开关接通,阻值约30-50K)。


外部输入通过上拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取。




输入下拉模式


 


 


和输入浮空模式相比较,不同之处在于内部有一个下拉电阻连接到VSS(输入下拉模式下,下拉电阻开关接通,阻值约30-50K)


外部输入通过下拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取


输入模拟模式


 


1.上拉和下拉部分均为关闭状态(AD转换-模拟量转换为数字量)


2.施密特触发器为截止状态


3.通过模拟输入通道输入到CPU


4.IO口外部电压为模拟量(电压形式非电平形式),作为模拟输入范围一般为0~3.3V






开漏输出模式


 


1,CPU写入 位设置/清除寄存器BSRR,映射到输出数据寄存器ODR


2,连通到输出控制电路(也就是ODR的电平)


3,ODR电平通过输出控制电路进入N-MOS管


-ODR输出1:


    N-MOS截止,IO端口电平不会由ODR输出决定,而由外部上拉/下拉决定


在输出状态下,输出的电平可以被读取,数据存入输入数据寄存器,由CPU读取,实现CPU读取输出电平。


所以,当N-MOS截止时,如果读取到输出电平为1,不一定是我们输出的1,有可能是外部上拉产生的1。


-ODR输出0:


    N-MOS开启,IO端口电平被N-MOS管拉倒VSS,使IO输出低电平


此时输出的低电平同样可以被CPU读取到。




开漏复用输出模式


 


与开漏输出模式唯一的区别在于输出控制电路之前电平的来源


开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的


开漏推挽输出模式的输出电平是由复用功能外设输出决定的


其他与开漏输出模式相似:


    控制电路输出为1:N-MOS截止,IO口电平由外部上拉/下拉决定


    控制电路输出为0:N-MOS开启,IO口输出低电平


推挽输出模式




与开漏输出相比较:


输出控制寄存器部分相同


输出驱动器部分加入了P-MOS管部分


当输出控制电路输出1时:


P-MOS管导通N-MOS管截止,被上拉到高电平,IO口输出为高电平1


当输出控制电路输出0时:


P-MOS管截止N-MOS管导通,被下拉到低电平,IO口输出为低电平0


同时IO口输出的电平可以通过输入电路读取


复用推挽输出模式


 


与推挽输出模式唯一的区别在于输出控制电路之前电平的来源


开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的


开漏推挽输出模式的输出电平是由复用功能外设输出决定的


推挽输出:


     可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。


  推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。


详细理解:


  推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。当输出高电平时,也就是下级负载门输入高电平时,输出端的电流将是下级门从本级电源经VT3拉出。这样一来,输出高低电平时,VT3 一路和 VT5 一路将交替工作,从而减低了功耗,提高了每个管的承受能力。又由于不论走哪一路,管子导通电阻都很小,使RC常数很小,转变速度很快。因此,推拉式输出级既提高电路的负载能力,又提高开关速度。


推挽输出和开漏输出的区别:


推挽输出:可以输出强高/强低电平,可以连接数字器件


开漏输出:只能输出强低电平(高电平需要依靠外部上拉电子拉高),适合做电流型驱动,吸收电流能力较强(20ma之内)在STM32中选用IO模式设置推挽模式,只能是输出模式,而输出高低电平的驱动电流都很大。即可作为输出,也可作为输入。作输出时,要输出高电平,需要外加上拉电阻。作输入时,要求处理高电平状态,才能读外部引脚。




GPIO配置情况


(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1


(2) 带上拉输入_IPU——IO内部上拉电阻输入


(3) 带下拉输入_IPD—— IO内部下拉电阻输入


(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电


(5) 开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能


(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的


(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)


(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

推荐阅读

史海拾趣

Chip Supply Micro Devices公司的发展小趣事

在微电子器件领域,Chip Supply Micro Devices凭借一项创新技术,成功打破了市场格局。公司研发出了一种新型低功耗芯片,不仅提高了电子设备的性能,还降低了能源消耗。这一技术突破使得Chip Supply Micro Devices迅速获得了市场的认可,产品销量激增。公司借此机会扩大生产规模,加大研发投入,进一步巩固了其在微电子器件市场的地位。

Amphenol Nexus公司的发展小趣事

作为一家专注于电气元件和连接器制造的公司,Amphenol Nexus Technologies始终致力于技术创新和产品升级。公司投入大量资源用于研发,不断推出具有创新性和高性能的新产品。例如,在高速连接器领域,Amphenol Nexus Technologies成功研发出了112G高速背板连接器,这一产品满足了人工智能等前沿技术对高速传输的需求,为公司带来了新的增长点。

Active-Semi公司的发展小趣事

Amphenol Nexus Technologies深知,在电子行业中,合作与共赢是实现持续发展的重要途径。因此,公司积极与产业链上下游的合作伙伴建立紧密的合作关系,共同推动行业的发展。通过与供应商、客户以及同行业企业的合作,Amphenol Nexus Technologies不断提升自身的竞争力,实现了业务的快速增长和市场的持续扩张。

以上便是关于Amphenol Nexus公司在电子行业发展的五个故事。这些故事展示了公司在不同历史阶段的发展轨迹、领导层的智慧和决策、技术创新的努力以及合作共赢的理念。正是这些因素的共同作用,使得Amphenol Nexus Technologies能够在激烈的市场竞争中脱颖而出,成为电子连接器行业的佼佼者。

Global Communications公司的发展小趣事
通过温度传感器检测环境温度,并将检测到的温度信号转换为电信号后,送入到专门的补偿电路中。补偿电路根据温度信号调整晶体振荡器的输出频率或相位,以达到补偿的目的。这种方法相对复杂,但可以实现更精确的补偿效果。
BLT Circuit Services公司的发展小趣事

BLT Circuit Services公司深知人才是企业发展的根本。因此,公司注重人才培养和引进,建立了一套完善的人才培训体系。公司不仅为员工提供系统的职业技能培训,还鼓励员工参与各种行业交流活动,提升个人综合素质。这些举措不仅提高了员工的技能水平,也为公司的长期发展提供了有力的人才保障。

富信半导体(FOSAN)公司的发展小趣事

BLT Circuit Services公司自创立之初,便专注于电子电路技术的研发与创新。在电子制造行业快速发展的背景下,公司投入大量资源进行技术研发,成功开发出一系列具有市场竞争力的电路板制造技术。这些技术的引入不仅提高了生产效率,还降低了生产成本,使得BLT Circuit Services的产品在市场上脱颖而出。

问答坊 | AI 解惑

集成电路基础知识之:电容知识大全

第1讲:电容的特性(隔直通交)    电容器是一种能储存电荷的容器.它是由两片靠得较近的金属片,中间再隔以绝缘物质而组成的.按绝缘材料不同,可制成各种各样的电容器.如:云母.瓷介.纸介,电解电容器等.在构造上,又分 ...…

查看全部问答>

安顿双绞线传输器的传输效果对比与示意

在实际工程中,选用何种传输方式需要结合工程的具体情况和工程预算来综合考虑。对于传输距离超过2Km的监控网络,应该考虑选用光纤和光端机。如果传输距离达到数公里或者几十公里,就只有使用光纤了。另外,在一些干扰很强的场合,比如受到工业干扰 ...…

查看全部问答>

CE printf不能用咋办啊??CE 提示建议使用StringCchVPrintfA函数??

最近移植个库,库以前是在PC上编译的,都是用多字节的printf,在CE下报错, 情况如下: error C2065: \'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA\' : undeclared identifier 然后我就按它的提示使用StringCchPrintfA; 定义了 ...…

查看全部问答>

高分征解:初学者学FPGA应该遵循什么样的路线,注意些什么?

在这方面是个文盲,买了块Altera Cyclone II 的开发板,想由简单的开始学习一些模块,但我对开发SOC很感兴趣,未来也有这种需求。需要的模块至少有:简单的CPU,中断控制器(2个中断就行了),定时器/计数器,PWM输出,简单的URAT,简 ...…

查看全部问答>

如何快速显示对话框的背景图片?

我使用2440+wince5.0的平台,显示器的分辨率为800*480,我在对话框中使用一个800*480的256色的bmp文件作为对话框的背景图片,在OnPaint函数中将背景图片贴上,代码如下: void CMainMenuDlg::OnPaint() {          & ...…

查看全部问答>

按电源按键启动不了咋整?

按开机电源启动不了,要再按重启或者再按几次电源键才能启动 机子去年十一配的,原来也有类似问题,后来换了一个电源就没这种情况了,现在又出现这种情况,难道又是电源问题?哪位达人帮解决一下~…

查看全部问答>

cadence问题求助------5!

这个问题非常基础但是有几个地方不是很明白: 在画原理图时,大部分需要自己画芯片,一些主要的芯片,库里面总是没有 在画芯片时,关于芯片引脚习惯上都是定义成什么? 我看芯片引脚有:3 state、Bidirectional 、 Input 、Open Collector &nbs ...…

查看全部问答>

月薪1w以上的Linux内核专家需具备怎样的条件?

如题 用1w月薪聘请Linux内核专家的公司多不多? 成为Linux内核具备的条件是什么? 1、精通内核移植、裁剪和优化 2、精通一个领域的ARM驱动开发(比如说VOIP) 符合这两个条件够不够?要不要懂编译器的编写等知识?…

查看全部问答>

FPGA中遇到的一个奇怪的问题!

在FPGA中遇到的一个奇怪的问题!我在Stratix II GX 中要实现这样一个功能:用20M时钟采集120路数据,然后将这些数据组成每字节10bit,每11字节一帧的数据,其中包括一个帧头。这帧数据每字节速率是260M(因为加了10位的帧头),通过一个GXB将这帧数据 ...…

查看全部问答>

有关串口调试助手的困惑

如果我给串口调试助手发送一个字符串“zhangkai”,如果勾上16进制显示,是不是就是串口调试助手把字符串转换为7A 68 61 6E 67 6B 61 69这个了?   在串口调试助手给单片机发数据时,如果选上16进制发送和不选16进制发送有啥区别?发送区填 ...…

查看全部问答>