0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32单片机I/O的工作模式

h1654155282.3538 来源:HACK实验室 作者:HACK实验室 2020-11-03 15:47 次阅读

最近有个朋友在设计低功耗设备,用的是STM32的主控,他知道我做过很多类似的超低功耗项目,于是向我咨询了一些问题,其中就包括I/O口的几种工作模式。今天我就详细的来总结一下这几种工作模式,让大家在以后的设计中知其然也知其所以然。

先说说GPIO

在聊这8种工作模式之前,我想先说一下GPIO的概念—通用输入输出GeneralPurposeInputOutput简称GPIO,就是芯片引脚可以通过它们输出高、低电平,也可以通过他们输入、读取引脚的电压、电平状态。

下面的8种工作模式我将围绕下图进行分析介绍,读懂这一张图大家基本就可以完全理解STM32的GPIO了。希望大家仔细的看一看。

四种不同的输出模式

推挽输出:该模式下引脚可以输出高低电平,可连接、驱动数字器件。对于推挽有部分小伙伴可能不知道是啥意思,其实很简单,就是两个参数相同的NPN、PNP三极管或者NMOS、PMOS管以推挽方式存在于电路中,各负责正负半周波形放大的任务。两只对称管每次只有一个导通,损耗小效率高,既可以提高电路的带负载能力,又可以提高开关速度。电路如下图所示,大家可以到IO内部图里面对比着找一找。

开漏输出:该模式下引脚就相当于连接到了上图NMOS的漏极,PMOS关闭去掉不存在。这时该引脚只能输出低电平,不能输出高电平,需要引脚加上拉电阻,才能得到高电平。这时一定有小伙伴疑惑,这东西没有推挽输出好用啊,错!开漏输出是有一些特别的优点的,比如:1、可用于连接与主控电平不匹配的器件,只需要将上拉电阻的上拉端连接到对方电平即可;2、以小博大,利用外部电路的驱动能力,减小内部电流,内部只需要很小的栅极驱动电流。缺点就是会有上升沿的延时,因为有上拉电阻的原因,这一点大家可以去阅读一下我的上一篇关于电平匹配的文章,里面有介绍。

复用推挽输出、复用开漏输出:顾名思义该模式下就是将引脚复用为其他功能,不再是简单的GPIO。像我们常用的UART、SPI等的输出引脚就是复用的推挽输出,而我们常用的I2C就是复用的开漏输出,这时大家就应该知道为什么我们在用I2C的时候需要上拉电阻了吧。这里给大家埋个伏笔——用I2C时为什么要开漏呢?知道的小伙伴可以在留言区回复,后面有机会分析I2C时我会详细和大家来说。

四种不同的输入模式

浮空输入:这种输入模式一般多用于检测外部高低电平状态,比如按键等。大家结合下面的IO内部图来看,浮空输入时上下拉电阻都没有连接,引脚电平状态不确定,如果引脚悬空时这种模式下读出来的数据是没意义的。

上拉、下拉输入:基本看名字大家就已经知道这种模式是怎么回事了,上图中如果上面红圈电阻接入就是上拉输入,下面红圈电阻接入就是下拉输入。上一段我说过按键输入检测用浮空输入模式,如果用上拉、下拉模式就更简单了,就可以省掉外部的上下拉电阻节约项目成本。

模拟输入:这个模式也是我们非常常用的了,那就是引脚设置为STM32内部ADC的模拟信号输入。值得注意的是这种模式就不是所有的IO都有的功能了,需要带ADC的IO口才可以设置。

补充说明些东西

关于IO引脚内部的两个保护二极管,很久以前看到有人说是用来钳位的,后来我在参加ST的研讨会时问过官方,官方答复说并不是用于钳位的而是用于做ESD保护的。当引脚作为ADC输入的时候我们必须保证输入模拟信号不超过3.6V,5V是不可以的。

上面说了芯片引脚内部有二极管保护,但是我建议大家在做设计时如果引脚引出板外最好格外再加TVS二极管来做加强保护,因为引脚连出板外很容易受静电等外界因素伤害。比如下载接口,我在空间充足的时候都会放上一个SOT-23的TVS二极管来做保护。

总结

到这里大家会发现我今天所讲的都是硬件层面的,而非软件层面上的具体设置。其实如果大家从硬件层面搞懂这几种模式,软件上就简单了,按照datasheet上面的说明进行配置就可以了。

最后来说一下近况,临近年底工作上比较忙,之前说的几个项目都跳票了,实在抱歉。但是大家不要担心,忙过这会我会腾出更多时间投身于开源项目,2020年我给自己制定的目标之一就是做更多的开源项目与大家分享。
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5997

    文章

    43948

    浏览量

    620549
  • STM32
    +关注

    关注

    2239

    文章

    10665

    浏览量

    348518
收藏 人收藏

    评论

    相关推荐

    单片机技术分享之“I/O口封装技术”

    好多人学单片机都是从51开始,学习一款新的单片机,都会想学51单片机一样控制I/O口。就像P1=0x00;整组输出口的变成低电平,一款新的
    发表于 08-07 22:52

    单片机I/O口输出0-5V

    使用的单片机型号STM32F030C8T6,工作电压为+3.3V, I/O输出的最大电压就是+3.3V吧;有没有办法让
    发表于 06-22 21:37

    请教各位大神,单片机进入掉电模式和空闲模式时,I/O口的状态是高电平还是低电平?

    请教各位大神,单片机进入掉电模式和空闲模式时,I/O口的状态是高电平还是低电平?
    发表于 07-16 17:17

    一.(四). 直接单片机I/O口驱动:多个I/O口并行工作驱动喇叭:

    一.(四). 直接单片机I/O口驱动:多个I/O口并行工作驱动喇叭:元件参数:1,电阻阻值R1~
    发表于 04-28 14:47

    掌握STM32单片机工作原理

    本文以STM32F103R6为测试单片机我们经常使用单片机完成一些工作,今天我写出的几个较为经典的例子希望能够帮助大家更好的认识单片机,更好
    发表于 08-11 08:01

    AT89S51单片机I/O端口及工作原理是什么?

    AT89S51单片机I/O端口及工作原理是什么?
    发表于 11-04 08:00

    51单片机并行I/O口的工作原理是什么

    51单片机并行I/O工作原理51单片机并行I/O
    发表于 11-18 06:17

    STC15单片机I/O口有哪几种模式

    STC15单片机I/O口的四种模式以及配置方法STC15官方手册的第280页,开始介绍I/O口各
    发表于 12-02 06:40

    单片机i/o口控制电机

    在使用单片机的时候,难免有时候会遇到过压或者过流把单片机i/o引脚打坏,特别是在单片机i/
    发表于 01-18 08:39

    利用单片机I/O与中断系统

    回顾之前编程教程,第1篇是I/O篇,I/O主要说明I/O的引脚特性以及如何通过C51控制
    发表于 01-27 07:26

    STM32单片机I/O简介

    STM32单片机---(二)I/O应用stm32I/O简介GPIO的8种
    发表于 02-16 07:04

    单片机的并行I/O口与工作模式介绍

    目录2.5 单片机的并行I/O口2.5.1 单片机的并行I/O口与
    发表于 02-18 06:20

    I/O口的缺省工作模式是哪种呢

    STC15单片机的用户手册中,对其I/O做了如下描述:可以看出要改变I/O工作方式,必须改变配
    发表于 02-18 07:38

    STM32单片机之按键程序

    给大家介绍了 STM32 单片机的 8 种工作模式的原理,通过一个小小的 LED 闪烁实验让大 家掌握了 IO 口作为输出的使用方法,这一节课给朋友们介绍一下如何使用
    发表于 11-11 17:17 69次下载

    STM32单片机GPIO口的工作模式解析

    STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入
    发表于 08-20 15:07 1767次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>GPIO口的<b class='flag-5'>工作</b><b class='flag-5'>模式</b>解析