当前位置: 首页 > article >正文

STM32-按键光敏传感器----原理(待补充)

1.GPIO

1.1 GPIO的基本结构

  在每个GPIO模块内,主要包含了寄存器和驱动器,寄存器就是一段特殊的存储器,内核可以通过APB2总线对寄存器进行读写,这样就可以完成输出电平和读取电平的功能了,寄存器的每一位对应一个引脚,其中,输出寄存器写1,对应的引脚就会输出高电平,写0就会输出低电平,输入寄存器读取为1,就证明对应的端口目前是高电平,读取为0,就是低电平;

STM32是32位单片机,所以STM32内部的寄存器都是32位的,但这个芯片的端口只有16位,所以这个寄存器只有低16位有对应的端口,高16位是没有用的;

驱动器是用来增加信号的驱动能力,寄存器只负责存储数据,如果要进行点灯这样的操作,还是需要驱动器来负责增大驱动能力。

1.2 GPIO位结构

左边三个是寄存器,中间部分是驱动器,右边是某一个IO口的引脚,如下图。

整体结构可以分为两个部分,上面是输入部分,下面是输出部分。

1.2.1 输入部分

     首先是IO引脚,这里接了两个保护二极管,是对输入电压进行限幅的,上面二极管接VDD,3.3V,下面二极管接VSS,0V;如果输入电压比3.3v还要高,那上方这个二极管就会导通,输入电压产生的电流就会直接流入VDD而不会流入内部电路,这样就可以避免过高的电压对内部电路产生伤害。

如果输入电压在0-3.3v之间,那两个保护二极管均不会导通,这时二极管对电路没有影响,这就是保护二极管的用途。

1.2.2 上拉和下拉电阻

上拉和下拉的作用:是为了给输入提供一个默认的输入电平,因为对应一个数字的端口,输入不是高电平就是低电平;如果输入引脚哈都不接,这时输入就会处于一个浮空状态,引脚的输入电平极易受外界干扰而改变;为了避免引脚悬空导致的输入数据不稳定,我们就需要在这里加上上拉或下拉电阻

上拉电阻至VDD,下拉电阻至VSS,这个开关是可以通过程序进行配置的。

上面导通、下面断开,就是上拉输入模式;上面断开、下面导通,就是下拉输入模式;上面断开、下面断开,就是浮空输入模式。

如果接入上拉电阻,当引脚悬空时,还有上拉电阻来保证引脚的高电平,所以上拉输入是默认为高电平的输入模式,下拉也是同理。

上拉电阻和下拉电阻的阻值都是比较大的,是一种弱上拉和弱下拉 ,目的是尽量不影响正常的输入操作。

2.GPIO输入

按键简介

按键:常见的输入设备,按下导通,松手断开

按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动.

传感器模块简介

传感器模块:传感器元件(传感器模块就是利用传感器元件,比如光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化(比如光线越强,光敏电阻的阻值就越小),通过与定值电阻进行串联分压即可得到模拟电压输出,再通过电压比较器进行二值化(二值化就是要么是高要么是低)即可得到数字电压输出。

这个N1就是传感器元件所代表的可变电阻,它的阻值可以根据环境的光线、温度等模拟两进行变化

N1上面的R1,是和N1进行分压的定值电阻,R1和N1串联,一端接VCC一端接VSS,这就构成了基本的分压电路,AO电压就由R1和N1两个电阻的分压得到。 

N1左边的C2是一个滤波电容,是为了给中间的电压输出进行滤波的,用来滤除一些干扰,保证输出电压波形的平滑。一般我们在电路中遇到一端接到电路中,另一端接地的电容,都可以考虑一下是不是滤波电容的作用,它并不是电路的主要框架,在进行分析电路时,就可以先把这个电容抹掉,这样就可使我们的电路分析更加简单。

二值化输出是通过这个LM393芯片来完成,是一个电压比较器芯片,里面由两个独立的电压比较器电路,然后剩下的是VCC和GND供电,里面电容是一个电源供电的滤波电容,这个电压比较器其实就是一个运算放大器,当同向输入端的电压大于反向输入端的电压时,输出就会瞬间升高为最大值也就是输出接VCC;反之当同向输入端的电压小于反向输入端的电压时,输出就会瞬间降为最小值,也就是输出接GND,这样就可以对一个模拟电压进行二值化了,DO就是最后数字电压的输出。

知识点:

上拉输入:若GPIO引脚配置为上拉输入模式,在默认情况下(GPIO引脚无输入),读取的GPIO引脚数据为1,即高电平。

 下拉输入:若GPIO引脚配置为下拉输入模式,在默认情况下(GPIO引脚无输入),读取的GPIO引脚数据为0,即低电平。

参考:江协科技


http://www.kler.cn/a/501068.html

相关文章:

  • C语言---函数和数组实践:扫雷游戏
  • 小程序textarea组件键盘弹起会遮挡住输入框
  • 如何用SQL语句来查询表或索引的行存/列存存储方式|OceanBase 用户问题集锦
  • scala代码打包配置(maven)
  • Formality:两种等价状态consistency和equality
  • HTML5 网站模板
  • 三台Centos7.9中Docker部署Redis集群
  • Avalonia 入门笔记(零):概述
  • 性能工具之 JMeter ActiveMQ 脚本开发实践
  • AIGC:开启内容创作的新纪元
  • maven发包because “server“ is null
  • 基于单片机的数字电能表(论文+源码)
  • 2024年度漏洞态势分析报告,需要访问自取即可!(PDF版本)
  • 激活conda
  • models/ gitignore是根目录下的models目录,不包括子目录的models目录,怎么写
  • 人工智能之基于阿里云快速搭建Llama-3.2-11B-Vision-Instruct
  • 用 Python 从零开始创建神经网络(十九):真实数据集
  • 【Cocos TypeScript 零基础 7.1】
  • Android Compose 显示底部对话框 (ModalBottomSheet),实现类似BottomSheetDialog的效果
  • (五)ROS通信编程——参数服务器
  • 多 Agent 框架入门:开启智能协作新时代(24/30)
  • 2025年01月11日Github流行趋势
  • 通义文生视频模型升级,天工推理模型正式上线,微软开源小模型Phi-4!AI Weekly『1月6-1月12日』
  • CV 图像处理基础笔记大全(超全版哦~)!!!
  • 什么是PHP?
  • MR30分布式 IO 在物流分拣线的卓越应用