STM32的GPIO模式设置两只三极管常见组合电路

2023-10-10 14:59

本文主要是介绍STM32的GPIO模式设置两只三极管常见组合电路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、STM32的GPIO模式设置
    • 1.STM32的GPIO八种模式及选择
    • 2.八种模式对应的电路图
  • 二、两只三极管
    • 1.串接组合成达林顿管
    • 2.并接组合成输出电路
  • 总结


前言

读书破万卷,下笔如有神----杜甫

STM32的GPIO八种模式设置起来很简单,根据使用GPIO是需要输入还是输出来确定,一行代码即可设置一种模式。通常,我们只需会调用代码即可,无需深究其实现电路,但对于还没学过模数电的可以稍微学习一下。此外,本文还讲解了两只三极管的“爱情故事”,即两只三极管六只引脚的不同组合会形成哪几种有用的电路。


一、STM32的GPIO模式设置

1.STM32的GPIO八种模式及选择

首先在标准固件库里的stm32f10x_gpio.h文件里可以找到八种模式的枚举定义:

typedef enum
{ GPIO_Mode_AIN = 0x0,GPIO_Mode_IN_FLOATING = 0x04,GPIO_Mode_IPD = 0x28,GPIO_Mode_IPU = 0x48,GPIO_Mode_Out_OD = 0x14,GPIO_Mode_Out_PP = 0x10,GPIO_Mode_AF_OD = 0x1C,GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

由输入和输出两大类可分为:
4种输出模式:
普通推挽输出(GPIO_Mode_Out_PP )、普通开漏输出 (GPIO_Mode_Out_OD)及复用推挽输出(GPIO_Mode_AF_PP )、复用开漏输出(GPIO_Mode_AF_OD )。
4种输入模式:
上拉输入(GPIO_Mode_IPU ) 、下拉输入模式(GPIO_Mode_IPD )、浮空输入模式(GPIO_Mode_IN_FLOATING) 模拟输入模式(GPIO_Mode_AIN )。

显然,这些模式对应的电路和功能大多数学过模电的人都记得滚瓜烂熟,所以这里重温一下这些模式的适用场合。
见名知意:
普通推挽输出(GPIO_Mode_Out_PP ):一般应用在输出电平为 0 和 3.3 伏,在STM32 使用GPIO来输出时,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式,如点灯操作。与51单片机的引脚相比,此模式可以高速切换高低电平状态。
复用推挽输出(GPIO_Mode_AF_PP ):输出电平效果同上,但此模式用于STM32 的其它片上外设对 GPIO 引脚进行控制,此时 GPIO 引脚用作该外设功能的一部分。

普通开漏输出 (GPIO_Mode_Out_OD):该引脚具有“线与”特性,即有很多个开漏模式引脚连接到一起时,若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平。当所有线与器件都为高阻态或者高电平时,该线路才为高电平。相当于51单片机的P0引脚。
复用开漏输出(GPIO_Mode_AF_OD ):输出电平效果同上,同样,此模式也是用于用于STM32 的其它片上外设对 GPIO 引脚进行控制。

上拉输入(GPIO_Mode_IPU ) :该引脚默认对外显示高电平,故默认读入也是高电平。
下拉输入(GPIO_Mode_IPD ):该引脚默认对外显示低电平,故默认读入也是低电平。

浮空输入(GPIO_Mode_IN_FLOATING) :浮空输入的电平是不确定的,完全由外部的输入决定,一般检测按键的时候用的是这个模式。
模拟输入(GPIO_Mode_AIN ): GPIO 引脚用于 ADC 采集电压的输入通道时使用此模式,此引脚得到得是未经处理的原始电压。

那么问题来了,如何知道某些功能(设备通信)使用的GPIO引脚要使用哪一种模式呢?
在这里插入图片描述
当然是查看STM32F10x–中文参考手册中8.1.11外设的GPIO配置一栏,这里只copy了几个常见的通信功能的GPIO配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.八种模式对应的电路图

到这里就差不多了吧。
在这里插入图片描述
其实对于很多人而言,看到这里基本上已经可以解决编程的问题了,已经可以正确选择GPIO的模式了,以至于可以不了解对应的电路图都行,因为没必要啊😁。所以接下来的内容,大家随便看一看就行了。

同样是查看STM32F10x–中文参考手册中8.1中出现下图:
在这里插入图片描述
此图清晰的描绘了一个GPIO引脚的基本结构概念图,由图可知,通过选择开关可以使该引脚得到8种不同的功能。
以下为STM32F10x–中文参考手册中8.1中原文,清晰地说明了不同模式下,图中各个器件的动作:

当I/O端口配置为输入时:
● 输出缓冲器被禁止
● 施密特触发输入被激活
● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 对输入数据寄存器的读访问可得到I/O状态

当I/O端口被配置为输出时:
● 输出缓冲器被激活
─ 开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(PMOS从不被激活)。
─ 推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态
● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。

当I/O端口被配置为复用功能时:
● 在开漏或推挽式配置中,输出缓冲器被打开
● 内置外设的信号驱动输出缓冲器(复用功能输出)
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器
● 开漏模式时,读输入数据寄存器时可得到I/O口状态
● 在推挽模式时,读输出数据寄存器时可得到最后一次写的值

当I/O端口被配置为模拟输入配置时:
● 输出缓冲器被禁止;
● 禁止施密特触发输入,实现了每个模拟I/O引脚上的零消耗。施密特触发输出值被强置
为’0’;
● 弱上拉和下拉电阻被禁止;
● 读取输入数据寄存器时数值为’0’。

好吧,匆匆瞄过上文,接着便开始正文了😀。

二、两只三极管

众所周知,三极管分为N型和P型,一只三极管有3个引脚,当用于放大作用时,发射结正偏,集电结反偏。当用作开关作用时,发射结正偏,集电结正偏。。。。以下谈论都使用双极性三极管举例。先问大家2个问题:就单纯的连线把两只三极管连接起来有多少种组合?你学习过哪几种组合呢?
显然,由排列组合可知,考虑其中的一只三极管的3个引脚,每一个引脚可以选择另一个的B,C,E任一脚,当然还可以选择悬空,有2X3X4=24种,使两个管子分离的连接:1种,再考虑三极管P型和N型号,有4种组合,综上,两只三极管共有(24-1)X4=92种连接。。(不知道是不是这样计算的🤣,不过反正组合有很多种)
在这里插入图片描述
可以把这些组合分为串接和并接两大类,下面来看一下其中有实际用途的组合:(在模电书中都可以找到)

1.串接组合成达林顿管

达林顿管是两个三极管接在一起,极性只认前面的三极管。
在这里插入图片描述
复合管组成原则:
在正确的外加电压下,每只晶体管均工作在放大区。
第1个元件的集电极电流或射极电流作第2个元件的基极电流,电流方向一致。
等效晶体管的类型是第一个原件的类型。
复合管的特性:
高电流增益; 
电压增益约等于1(小于1); 
高输入阻抗; 
低输出阻抗; 
放大倍数等于两管之积,漏电流影响极大,造成电路不稳定。

串接主要使用到其叠加起来的电流特性,做出大功率的复合(功率)管。

2.并接组合成输出电路

请看下图:
在这里插入图片描述

这几个电路是不是感觉很熟悉,从左到右依次是:乙类功率放大器,TTL与非门,上N下P型推挽电路,上P下N型推拉电路。

乙类功率放大器:
两只三极管在无驱动信号时,处于低电流状态,当加上驱动信号时,一对管子中的一只在半周期内电流上升,而另一只管子则趋向截止,到另一个半周时,情况相反,由于两管轮流工作,必须采用推挽电路才能放大完整的信号波形。(注意是放大信号)优点是效率较高(模电考试内容将优点二字改为其特点,注意别填成甲乙类功放去了!!!),理论上可达78%,缺点是失真较大。

TTL与非门的输出级:
输出级有较强的负载能力,为此将三极管的集电极负载电阻Rc换成由三极管T4、二极管D和Rc4组成的有源负载。由于T3和T4受两个互补信号Ve2和Vc2的驱动,所以在稳态时,它们总是一个导通,另一个截止。这种结构,称为推拉式输出级。(注意是当做开关来使用)

关于后两种电路的区别和联系,大家可以参考电子大佬的文章,我直接粘贴出其结论:
在这里插入图片描述
大家可以回过头看一下STM32的GPIO采用推挽输出是哪一种。。。

在这里插入图片描述
这里区分几个概念,细心地人已经发现:
推挽输出: 推挽电路使用两个参数相同的三极管,以并接方式存在于电路中,其中他们的射极连接成输出端。电路工作时,两只对称的三极管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。

互补输出: 互补电路也是一种推挽功放电路,不同之处是互补电路用两种极性不同的晶体管,各自工作在输入信号的正、负半周,所以不再需要倒相电路进行倒相。而用同极性晶体管构成的推挽功放,则需要倒相电路来得到两个幅度相等、相位相反的推动信号。

推拉输出: 以并接方式存在于电路中,其中他们的集电极连接成输出端。其实质只有一只管子起到开关作用,另一只作为其有源负载,推拉式输出级既提高电路的负载能力,又提高开关速度。


总结

没有任何的计算,没有电路的具体分析,大体上还是浅显易懂的。其实这是我早就想写出来的文章,因为去年复习模数电时,遇到很多长得差不多的电路图,就比如这里的几个输出级电路,当时还是比较懵逼的,明明就两只三极管,为此也查看了一些大佬的文章,颓然发现不是电路图难,原来是我太菜了😅。。。看来还是要多多学习啊,反正知识学到了就是自己的东西了,别人也拿不去,何乐而不为呢。

问大家一个问题:在梦里梦到一个好几年不见的人代表着什么?

这篇关于STM32的GPIO模式设置两只三极管常见组合电路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/181190

相关文章

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,