完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在进行1个IO口控制两个LED灯的实验前,先了解一下GPIO的特性(以STM32为例)
一、推挽输出与开漏输出的区别 1.推挽输出 推挽输出,顾名思义就是既可以输出高电平,又可以输出低电平。以stm32为例,stm32官方手册的GPIO电路图如下: 当输出寄存器为1时(高电平),控制输出为1,此时P-MOS管导通,N-MOS管不导通,这时候输出电压就以VDD为基准; 控制输出为0时,P-MOS不导通,N-MOS管导通,这时候电压就以VSS为基准。 PS:(MOS知识自己去百度学习学习,MOS管是电压驱动型的,和电流驱动型的三极管不一样,如若不清楚,在这里可以将P-MOS管假想为NPN,N-MOS假想为PNP,这样就比较好去理解这个电路) VDD ,D==device器件的意思,指的是器件内部的工作电压 VSS, S==series公共端的意思,通常电路中的公共端接地,即为地端电压 VCC,C==Circuit电路的意思,指整个供电回路的电压,(接入电路的电压) VBAT,BAT==battery电池的意思,一般指电池电压。 注意:从上面电路图来看,输出的同时,也可以通过输入数据寄存器查看端口的电平变化,但是该电平不一定是你当前输出的电平值 2.开漏输出 开漏输出,即只能输出低电平,输出高电平时需要外接上拉电阻。(在stm32F4中,大部分GPIO口都配置了弱上拉和下拉),但在使用其他芯片的时候,在设计电路的时候就要得注意了。 从上图可以看出,输出寄存器中的“0”,可以激活N-MOS管,而输出“1”时,P-MOS管不导通,会使端口保持高阻态(PS:高阻态顾名思义就是电阻很大,或者说是趋向无穷大。在上面说的推挽输出中,一个门电路中通过上拉管和下拉管来输出高低电平,如果当上拉管和下拉管都截止时,输出端就相当于浮空(没有电流流动),其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制,这样的话,外接上拉电阻,则输出高电平时,其电平由VCC直接供给)。 由于内部VDD的电压是要比VCC的电压要低(可能低很多),推挽输出时,其输出高电平电流值是比较小的,而接了上拉电阻的开漏输出高电平时,其输出电流是比较大的,因而开漏输出比较适合用来做大电流控制。 二、输入模式 stm32中输入模式有四种,即浮空输入、上拉输入、下拉输入、模拟输入,在本文中,只讲解浮空输入和上拉输入这两种模式。 1.浮空输入 浮空输入顾名思义就是无上下拉,从下面原理图进行分析 浮空输入时,输入的电压通过TTL施密特触发器转换为0或1的数字电平存入寄存器中。由于该电压是外部提供的,所以会有很多不稳定的因素,那么stm32如何判断该输入电压是高电平还是低电平呢? 下图示从stm32f407的芯片手册中截取到的图,是使用外部时钟源(一般都使用外部时钟源)所测出的值,其判断输入高电平信号的电压为0.7VDD~VDD(差不多是2.1~3.3V),低电平信号输入电压是VSS~0.3VDD(0~~0.9V)。 那么0.3~0.7VDD这一部分输入电压怎么办???顾名思义,这一部分是属于浮空的,即无任何信号产生(所以在写浮空输入的程序时,注意if~else了) 2. 上拉输入 上面我们讲到浮空输入中,0.3VDD~0.7VDD这一部分输入电压会被认为是无信号产生,那么在配置成上拉输入模式后(上拉电阻开启),其这一部分被认为无信号的输入电压,就会被拉高到0.7VDD+,这样就会产生一个结果,就是符合低电平的输入电压产生的低电平信号,剩下的电压产生的是高电平信号。(当然要注意电压勿超过设定值导致被击穿)。 三、一个IO口控制两个灯的亮灭 为了加深对上面的理解,下面进行一个小实验,即设计一个电路,只用一个IO口同时控制两个LED(单独亮灭,同时亮灭) 电路分析:这是一个简单的控制电路,其IO口控制的原理是,RC0输入低电平时,LED6亮,输入高电平时,LED7亮,将RC0配置成输入 模式后(高阻态),两个灯都是灭的状态。给1ms左右(这个值根据不同LED的特性来判断)的高低电平交互,可以达到一个同时亮的效果。(二极管是防止电压过高而被击穿)。 当然,这样结果的成立条件是该IO能配置成推挽输出模式(或者开漏模式+外接上拉电阻),这样当要单独使LED7亮时,才能有一个高电平输出(如果芯片电流输出能力过弱,建议外接一个上拉电阻,保证LED7的亮度)。 |
|
|
|
只有小组成员才能发言,加入小组>>
4510个成员聚集在这个小组
加入小组3335 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4264 浏览 1 评论
4291 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 05:53 , Processed in 0.589075 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号