目录

  • 电平冲突与兼容
  • 升级带来的电平问题
  • STM32的开漏输出模式

Hello,大家好,今天和大家探讨一下,STM32能输出5V电平吗?以及STM32的开漏输出设置。

电平冲突与兼容

这是个常见的问题,比如为了减少系统的改动,在产品升级过程中,会保留上一版本的器件,而新更换的控制器或数字器件的电平与原版不同,为了兼容两种电平,需要电平之间的转换,这是设计者必须考虑的问题。

(1)最简单的变换5V到3V的电路就是电阻分压了:


图1:5V到3V的电平变换

(2)3V转5V
可以使用逻辑芯片:

图2:3V到5V的电平变换

升级带来的电平问题

笔者刚刚做完一个产品升级的项目,为了提高人机交互的性能,并且为以后的升级预留空间,将单片机从原来的51换成了ARM。其中有几处蜂鸣器和LED涉及到了电平的变换,如图3所示:

图3:ARM的IO口与5V电平的冲突

图3为一个嵌入式控制+无线通信平台,其中使用ARM的PA11口控制晶体管Q2,实现反相器,并控制LED的点亮与关闭。在之前的版本中是用51单片机的IO口控制Q2的,当IO口输出高电平(5V)时,Q2不导通,LED不发光,信号K2为低电平,不存在电平不兼容的问题。

现在换成ARM,问题来了,当PA11输出高电平(3.3V)时,Q2实际上是导通了,和原来的版本不一样了。事实上由于ARM采用的是3.3V的电平,导致无论PA11输出高电平还是低电平,Q2都导通,LED都发光,K2一直处于高电平状态。

在测试阶段,笔者发现LED一直发光,经检查做出了上述的分析,怎么解决呢?

STM32的开漏输出模式

我们知道单片机的IO口有一种开漏输出的结构,比如大家熟悉的51单片机的P0口就是开漏的结构,如图4所示:

图4:单片机开漏结构IO示意图

对于开漏结构的IO口最重要的就是,需要在单片机外部使用“上拉电阻”。如果上拉电阻接5V,那么就是5V逻辑电平了。重点来了:因此我们可以使用STM32 IO口的开漏模式,使用上拉电阻使其输出5V的逻辑电平。

STM32 IO口支持多种模式,通过配置寄存器可以选择不同的模式。STM32的固件库中定义了如下的结构体类型:

typedef struct
{uint16_t GPIO_Pin;            GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode;  }GPIO_InitTypeDef;

其中GPIOMode_TypeDef GPIO_Mode;一行用来设置IO口的模式,我们可以定义这样一个结构体:
GPIO_InitTypeDef GPIO_Structure;
然后将结构体中的GPIO_Mode定义成开漏输出:
GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_OD;

在初始化GPIO口之后就可以配合外置的上拉电阻实现5V的输出了。(为了解决LED一直亮的问题,笔者将图3中原来设计的备用不焊接的电阻R32焊接上了)

后记:尽管通过许多方法可以完成不同电平之间的兼容,但是在条件允许的情况下,还是不建议使用这样的结构,这样的系统增加了复杂度,需要更多的电源管理,也增加了硬件BUG的可能性。

水平有限,请多指教

STM32输出5V电平相关推荐

  1. stm32管脚不能正常输出高低电平?

    问题: 芯片:stm32f103rbt6,其中有PB3.PB4不能输出高低电平控制风扇, 程序代码没有问题.使能了GPIOB的时钟.使用了官方的库函数.寄存器操作都不能输出高电平. 分析: 1.开始以 ...

  2. STM32 IO口输出高低电平

    IO.h文件 #ifndef __IO_H #define __IO_H#include "stm32f10x.h"void IO_Init(void); void SetBite ...

  3. MiniFly微型四轴学习开发日志(四)——关于四轴硬件知识以及如何通过STM32输出PWM方波控制电机

    目录 四轴硬件知识 通过STM32输出PWM方波 一.四轴硬件知识 四轴无人机需要的硬件大致有以下几种:电子调速器(俗称电调),螺旋桨,电子(一般用无刷电机),飞行控制板,机架,电池,充电器,遥控器等 ...

  4. LPC单片机IO口默认状态、复位状态、未初始化时输出高电平处理

    众所周知,STM32当复位以后,gpio默认是高阻状态,也就是浮空输入. 由STM32切换到LPC1788,发现LPC的IO未初始化时输出高电平,初始化后才能拉低,这样和STM32的设计就不兼容了. ...

  5. STM32输出比较模式和PWM模式 比较

    STM32 输出方波的方法有两种比较类似的,一个是PWM模式,一个是输出比较模式.下面来看看这两种模式的不同处在哪. 先看看官方对两种模式的介绍 PWM模式: 输出比较模式 通过两种模式的介绍,好像不 ...

  6. 32 开漏输出 高电平_关于各种IO输出类型详解

    集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路;左边的三极管为反相之用,使输入为"0"时,输出也为"0". 对于图 1,当 ...

  7. STM32输出PWM波形以及实现LED呼吸灯

    目录 一.PWM的简介 1.PWM的定义 2.PWM的优点 3.PWM的几种控制方法 (1)等脉宽PWM法 (2)随机PWM (3)SPWM法 4.PWM的主要参数 (1)PWM占空比 (2)PWM的 ...

  8. STM32输出PWM信号(库函数版本)

    什么是PWM信号? 官方解释:PWM信号一般指脉冲宽度调制.脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳 ...

  9. (ESP32学习1)IO的输出高低电平与上下拉输入

    使用的是Arduino IDE , 函数非常简单,但有一些需要注意的地方,我第一篇文章是给IDE换主题,大家有不喜欢目前IDE配色主题的可以去看看 先给大家看看ESP32的外设图 开启输出模式的关键字 ...

最新文章

  1. pandas画时间序列图
  2. rtop – 通过SSH监控远程主机
  3. LINQ to SQL 在 Visual Studio 2008 中的简单应用
  4. directshow c++ 设置 曝光_DirectShow 接口访问相机参数设置方法
  5. java 矩阵题目_一些数学分析不错的题目
  6. 27、jdbc操作数据库(4)
  7. python3 Crypto环境
  8. Python学习 Week2 part1
  9. R+工业级GBDT︱微软开源 的LightGBM(R包已经开放)
  10. C++网络编程实例(初识多线程)
  11. Hibernate的双向1-1关联(七)
  12. scrapy_redis 相关: 将 jobdir 保存的爬虫进度转移到 Redis
  13. Linux系统常用命令(一)
  14. [转载]Mapx常见问题
  15. 尚学堂马士兵 Struts2 笔记心得修改版
  16. Unity Editor 画地面贴图工具
  17. 【WEb数据采集之js埋码】
  18. android语音动画,Android逐帧动画的简单使用-语音播放效果的实现
  19. Springboot具有智能推荐功能的外卖点餐系统bia14计算机毕业设计-课程设计-期末作业-毕设程序代做
  20. 德国计算机课程匹配度,匹配度对于德国留学有多重要

热门文章

  1. VM VirtualBox虚拟机添加虚拟硬盘
  2. Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)
  3. 源码-Spring中对bean的@Order注解的处理过程
  4. 搭建全民K歌TV运行环境
  5. 对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,( )是正确的。
  6. Python 安装skimage
  7. libvirt 介绍
  8. Myeclipse下PHP开发环境搭建及运行
  9. 【新闻背后】美团外卖商家Android版强杀竞争对手App
  10. oracle集群断电重启,Oracle10.2.0.4 RAC 2节点集群节点被驱逐导致系统异常重启