历史上的今天
返回首页

历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2018年09月06日 | stm32-GPIO-8种IO模式

2018-09-06 来源:eefocus

四种输入模式:

  • 上拉输入模式(GPIO_Mode_IPU):默认模式下(GPIO没有输入)读取的GPIO引脚数据为1,高电平。

  • 下拉输入模式(GPIO_Mode_IPD):默认模式下(GPIO没有输入)读取的GPIO引脚数据为0,低电平。

  • 浮空输入模式(GPIO_Mode_IN_FLOATING):既没有上拉也没有下拉,引脚电压为不确定值。(主要用于来做 I2C,USART的接收端)

  • 模拟输入模式(GPIO_Mode_AIN):关闭了斯密特触发器,不接上拉下拉电阻,经由另一个线路把电压信号传送到片上外设模块。(主要用于ADC外设的时候)

四种输出模式:

  • 推挽输出模式(GPIO_Mode_Out_PP):输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需要外部上拉电路);此模式可以把端口作为双向IO使用。适用于输出电平为0或3.3V的场合。(可以输出高,低电平,连接数字器件)

  • 开漏输出模式(GPIO_Mode_Out_OD):输出 0 时,N-MOS 导通,P-MOS 高阻 ,输出0。输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。适用于电平不匹配的场合,输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。(具有线与功能)

  • 复用推挽输出模式(GPIO_Mode_AF_PP):复用模式,

  • 复用开漏输出模式(GPIO_Mode_AF_OD):复用模式,

GPIO口时钟:

GPIO_Speed_10MHz 最高输出速率10MHz 
GPIO_Speed_2MHz 最高输出速率2MHz 
GPIO_Speed_50MHz 最高输出速率50MHz

注释:

       I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口 的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声 控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。

关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。比如:
1. 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
2. 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
3. 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。
4.GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。
1.3

注释:

1. 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
2. 所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。
3. GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。


总结:在STM32中选用IO模式
(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)

实例总结:

(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先
GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);

(2)如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用
带上拉输入_IPU和浮空输入_IN_FLOATING和 开漏输出_OUT_OD;

4、IO低功耗:

关于模拟输入&低功耗,根据STM32的低功耗AN(AN2629)及其源文件,在STOP模式下,为了得到尽量低的功耗,确实把所有的IO(包括非A/D输入的GPIO)都设置为模拟输入

5、程序

(1)时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC, ENABLE);

(2)IO配置:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; // IR 输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_15; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

(3)输出输入:

输出0:GPIO_ResetBits(GPIOB, GPIO_Pin_0)
输出1:GPIO_SetBits(GPIOB, GPIO_Pin_0)
输入: GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)


推荐阅读

史海拾趣

Analog Modules Inc公司的发展小趣事

Analog Modules Inc. 是一家总部位于美国马萨诸塞州的公司,专注于设计和生产高性能模拟电子模块和系统,为军事、航空航天、医疗和工业等领域提供解决方案。以下是 Analog Modules Inc. 公司发展的相关故事:

  1. 创立与初期阶段:Analog Modules Inc. 成立于1970年,由一群电子工程师创办。公司最初的目标是满足军事和航天领域对高性能模拟电子模块的需求。在成立初期,公司致力于开发和生产高精度的模拟信号处理模块和系统,以满足客户对于高可靠性和高性能的要求。

  2. 技术创新与产品优化:Analog Modules Inc. 在技术方面不断进行创新,并持续优化其产品线。公司的产品涵盖了广泛的领域,包括模拟信号处理、数据采集、激光驱动、通信和雷达等。这些产品具有高精度、高可靠性和耐用性,得到了客户的广泛认可和信赖。

  3. 市场拓展与全球业务:随着业务的不断发展,Analog Modules Inc. 将市场重点逐渐扩展到了全球范围。公司与全球各地的客户建立了长期稳定的合作关系,拓展了产品的销售渠道和市场份额。同时,公司还积极参与国际展会和行业交流活动,提升了品牌知名度和影响力。

  4. 应用领域与客户合作:Analog Modules Inc. 的产品广泛应用于军事、航空航天、医疗和工业等多个领域。公司与各类客户进行紧密合作,包括政府军方、航空航天机构、医疗设备制造商和工业自动化企业等。通过与客户的合作,公司不断了解市场需求,提供定制化的解决方案,满足客户的特定需求。

  5. 持续发展与未来展望:Analog Modules Inc. 将继续致力于技术创新和产品研发,以满足不断变化的市场需求。公司将继续加强与客户和合作伙伴的合作关系,不断拓展业务领域,进一步提升产品性能和服务水平。在未来,Analog Modules Inc. 将继续保持行业领先地位,为客户提供更加优质和可靠的解决方案。

Cypress(赛普拉斯)公司的发展小趣事

近年来,随着汽车电子、物联网等应用领域的快速发展,Cypress也制定了新的发展战略。公司将以MCU+存储+USB为核心产品,为汽车电子、物联网等应用领域提供完整的嵌入式系统解决方案。为了实现这一目标,Cypress将继续加大研发投入,推动技术创新和产品升级。同时,公司还将加强与国际合作伙伴的合作,共同开拓新的市场和应用领域。

Advanced Electronic Packaging公司的发展小趣事

随着公司技术的不断进步,Advanced Electronic Packaging公司开始寻求与行业内知名厂商的合作机会。通过与一家全球领先的电子产品制造商达成战略合作,公司成功将其先进的封装技术应用于对方的高端产品线中。这一合作不仅提升了合作双方的产品竞争力,还为Advanced Electronic Packaging公司带来了可观的利润回报。此后,公司陆续与多家知名企业建立了合作关系,进一步巩固了其在电子封装领域的市场地位。

C-TON Industries公司的发展小趣事

在电子行业的早期阶段,C-TON Industries公司以其创新的技术理念脱颖而出。公司创始人李先生,一位电子工程领域的专家,意识到半导体技术的重要性,并决定将其作为公司的发展重点。通过不断投入研发,C-TON成功开发出了一款性能卓越的芯片,这款芯片在速度和稳定性上都远超当时市场上的同类产品。这一创新不仅赢得了客户的青睐,也帮助C-TON在市场上取得了突破性的进展。

CommScope Inc公司的发展小趣事

随着全球经济的不断发展,亚洲市场逐渐成为通信行业的重要增长点。康普公司敏锐地捕捉到了这一机遇,于1997年在苏州工业园区成立了康普通讯技术(中国)有限公司,这是康普在亚洲开设的第一家工厂。该工厂的成立不仅提高了康普在亚洲市场的生产效率,也为其进一步开拓亚洲市场提供了有力的支持。此后,康普在亚洲市场的业务逐渐扩大,为众多国内大型项目提供了网络解决方案。

汇顶科技(GOODiX)公司的发展小趣事

尽管康普在通信行业取得了显著的成就,但它也面临着诸多挑战。其中最大的挑战之一来自网络安全和数据保护。近年来,随着网络安全事件的频发,康普也遭受了数据泄露等网络安全事件的冲击。然而,康普积极应对挑战,加强了网络安全和数据保护的投入,提升了公司的网络安全防护能力。同时,康普也积极寻找新的增长点,拓展5G、物联网等新兴市场及成长型市场的渠道,为公司的未来发展奠定了坚实的基础。

以上五个故事仅是CommScope Inc公司电子行业发展的部分缩影,实际上,公司的发展历程远比这些故事更为丰富和复杂。但通过这些故事,我们可以看到CommScope Inc公司在技术创新、市场开拓、产品升级以及应对挑战等方面所做出的努力和取得的成就。

问答坊 | AI 解惑

SJA1000独立的CAN控制器应用指南

前面介绍了SJA1000独立的CAN控制器的工作原理和电路本文将介绍SJA1000独立的CAN控制器应用指南以变可以更好的运用SJA1000…

查看全部问答>

IT项目管理成功秘笈

你听过能预言祸吉的咒语吗?虽然这是回到在古希腊时代才能听得到,它似乎在当今的整个美国,包括IT领域内的众多企业在内仍然存在并且十分盛行。   卡珊德拉,这位古希腊美女,被深爱她的阿波罗赋予了预知未来的禀赋。但当卡珊德拉拒绝他的时 ...…

查看全部问答>

中国做模拟IC还有前途吗?

工作难找啊 研究生毕业才刚入门,都没人要!一般都去做数字了。…

查看全部问答>

各位大虾,帮忙看看下面是什么编译错误,怎么解决,多谢啦

在PPC下编译出现如下编译错误: 2140: Error: unsupported relocation type                                    &nb ...…

查看全部问答>

为什么基于cepc和geode定制的系统,一个可以跳转,一个停在jumping..上

Debug Serial Init SysInit: GDTBase=80ad70e8 IDTBase=80b28ec0 KData=80b49800 Windows CE Kernel for i486 Built on Jun 24 2004 at 18:23:42 g_pPageDir = 80b4a000               Init ...…

查看全部问答>

关于spi的问题

麻烦各位帮我看看程序 为什么我得不到uclk和mosi的波形呀 #include<msp430x14x.h> void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop watchdog BCSCTL1&=~XT2OFF; ...…

查看全部问答>

请教关于pwm波相位的问题?

cortex LM3S系列的单片机中的pwm模块 能否对pwm波进行相位设置?如能大概怎么操作?…

查看全部问答>

ADI USB全速隔离芯片ADUM4160

ADI USB全速隔离芯片ADUM4160 ADuM4160是一款基于ADI公司iCoupler®技术的USB端口隔离器。它将高速CMOS工艺与单片空芯变压器技术相结合,可提供优异的工作性能,并且很容易与低速和全速USB兼容外设集成。许多微控制器实施的USB只向外部引脚提供 ...…

查看全部问答>

有关AD835的使用注意事项?

本帖最后由 paulhyde 于 2014-9-15 03:32 编辑 AD835在使用的过程中会影响结果的主要注意事项有哪些?谢谢!    …

查看全部问答>

CC2530无法下载问题!急。。

一块CC2530板子在下载时,出现“This device has been locked for debugging. To enable debugging and continue with... ”,导致无法下载,另外一块板子如此下载没有问题。 当用SmartRF Flsah pragrammer 下载.hex时,出现“Chip is locked! Not ...…

查看全部问答>