【硬件操作入门】2--GPIO与门电路、二极管三极管、LED电路与操作

2024-08-27 04:36

本文主要是介绍【硬件操作入门】2--GPIO与门电路、二极管三极管、LED电路与操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【硬件操作入门】2–GPIO与门电路(二极管&三极管)、LED电路与操作

文章目录

  • 【硬件操作入门】2--GPIO与门电路(二极管&三极管)、LED电路与操作
    • 一、GPIO与门电路
      • 1.1、GPIO的应用
      • 1.2、GPIO引脚操作
        • 1.2.1 设置引脚为GPIO功能(io_mux)
        • 1.2.2 设置引脚方向(gpio0_dir_reg)
        • 1.2.3 设置引脚数值(gpio0_data_reg)
    • 二、二极管&三极管
      • 2.1、二极管
        • 2.1.1 二极管的特性
        • 2.1.2 二极管的结构
        • 2.1.3 二极管的作用
      • 2.2、三极管
        • 2.2.1 NPN三极管
        • 2.2.2 PNP三极管
    • 三、LED电路与操作
      • 3.1. LED实物
      • 3.2. LED电路

一、GPIO与门电路

1.1、GPIO的应用

功能例子
输出功能LED、发射红外信号、电机控制、蜂鸣器、数码管等
输入功能按键、接收红外信号、人体感应
实现各类协议读取温湿度传感器数据、UART

1.2、GPIO引脚操作

怎么用一个GPIO来控制LED?换句话说,怎么让一个GPIO输出高、低电平?

在这里插入图片描述

GPIO内部寄存器 名称功能
io_mux选择引脚 GPIO/UART 功能
gpio0_dir_reg控制引脚 输入/输出 方向
gpio0_data_reg设置引脚 输入输出 数值
1.2.1 设置引脚为GPIO功能(io_mux)

​ 芯片内部有很多模块,比如GPIO、UART(串口)。

​ 一个引脚,可以接到模块A,也可以接到模块B,比如上图中的引脚gpio0_0,可以接到GPIO group 0,也可以接到UART。可以设置某些寄存器(比如io_mux),选择引脚的功能。

1.2.2 设置引脚方向(gpio0_dir_reg)

​ 当一个引脚被设置成GPIO功能,那么它既有可以作输入,也可以作输出,如何控制是输入还是输出呢?

​ 在GPIO模块内部,一般都有一个方向选择寄存器,里面每一位用来控制一个引脚的方向。
比如GPIO group 0中有一个gpio0_dir_reg寄存器,

  • 它的bit 0写入1,表示gpio0_0被设置为输出
  • 它的bit 0写入0,表示gpio0_0被设置为输入

在这里插入图片描述

1.2.3 设置引脚数值(gpio0_data_reg)

个GPIO引脚被设置成输出,那么怎样设置它的输出电平?
一个GPIO引脚被设置成输入,那么怎样读取它的输入电平?
在GPIO模块内部,一般都有一个数据寄存器,里面每一位用来控制一个引脚的输出电平。
比如GPIO group 0中有一个gpio0_data_reg寄存器,

  • 写数据
    • 它的bit 0写入1,表示gpio0_0输出高电平
    • 它的bit 0写入0,表示gpio0_0输出低电平
  • 读数据
    • 如果bit 0等于1,表示gpio0_0为高电平
    • 如果bit 0等于0,表示gpio0_0为低 电平

在这里插入图片描述


二、二极管&三极管

2.1、二极管

在这里插入图片描述

2.1.1 二极管的特性

​ 在模电中,大家都有学过,二极管是一种用或者半导体材料做成的,半导体材料导电性能在常温下介于导体和绝缘体之间,一百多年前就有这个东西了,是半导体器件家族中的元老了。

  • 二极管最大的特性就是 单向导通性,也就是说,二极管的电流具有单向性;
  • 假设正极、负极之间的电压差为ΔV
    • 当ΔV > 某个阈值(比如0.7V),二极管就导通,导通时电阻约等于0
    • 当ΔV < 0,二极管不会导通,电阻无穷大,相当于电路断路;
2.1.2 二极管的结构
  • 内部结构如下:由PN节组成,P代表正极(positive),N代表负极(negative)

    在这里插入图片描述

​ 二极管的电流方向是由正极流向负极(P==>N),电子的流向与电流的流向相反,为什么会这样呢?

  • P极 参杂“硼”原子;N极参杂”磷“原子,学过初中化学的朋友都知道:“硼”原子是三价元素,外围有3个电子环绕;”磷“原子是五价元素,外围有5个电子环绕;然而硅和锗有外层有四个电子。因此,硼原子周围少了个电子,”磷“原子周围多了个电子,我们把少了个电子的情况,形成空穴;多了个电子,形成自由电子
  • 为了方便理解,可以把空穴抽象成正电荷,自由电子抽象成负电荷;这样一来,P极 正电荷多,N极 负电荷多,自然可以推测出电流的流向,是P==>N的,电子的方向是N==>P的。

在这里插入图片描述

至于扩散运动和漂移运动,以及二极管的伏安特性曲线图,想要了解的朋友可以看看这篇博客:图文详解二极管原理

2.1.3 二极管的作用
  • 根据二极管的单向导通特性 可以用来设计保护电路;比如防止电源接反,扫坏电路。

在这里插入图片描述

2.2、三极管

可以使用二极管的特性制作成三极管,组成开关电路

三极管实物图:

在这里插入图片描述

三极管可以分为:NPN三极管、PNP三极管。

2.2.1 NPN三极管

在这里插入图片描述

注意:三极管的箭头,是电流流向方向;

  • 扩散

    • 物质会从浓度大的地方扩散到浓度低的地方
    • 比如墨水滴入水中,墨水会四处散开
    • 比如臭味会四处散开
    • 电子也会有扩散作用
  • 三极管原理

    • 当基极(b) 和发射极(e) 之间的PN节加上正向电压,也就是be的电势差:Vb - Ve > 截止电压时。 b ==P > Ne 的PN结导通,电流:基极(b) ==> 发射极(e),电子与电流呈反方向,由 发射极(e) ==> 基极(b);
    • 电子在’P’大量聚集,一部分通过基极(b) 极流走,另一部分通过集电极© 扩散出去,(集电极c 起收集作用,所以被称为集电极)
      • 电子流动方向如图中红色箭头所示
      • 电流方向与电子流动方向相反:be之间电流从b到e,ce之间电流从c到e
  • 三极管的使用

    Vconbe 之间的 PN结V2
    0.7V打通(c极相当于直接连接e)0V(同GND)
    0V未打通V(同Vcon)
    • 所以,可以用Vcon来控制V2 (相当于 一个反相器)
2.2.2 PNP三极管

在这里插入图片描述

  • 扩散

    • 物质会从浓度大的地方扩散到浓度低的地方
    • 比如墨水滴入水中,墨水会四处散开
    • 比如臭味会四处散开
    • 电子也会有扩散作用
  • 三极管原理

    • 当发射极(e) 和 基极(b)之间的PN节加上正向电压,也就是eb的电势差:Ve - Vb > 截止电压时。 e ==P > Nb 的PN结导通,电流(空穴):发射极(e) ==> 基极(b),电子与电流呈反方向,由 基极(b) ==> 发射极(e) ;
    • 空穴在’N’大量聚集,一部分通过b极流走,另一部分通过c极扩散出去 (c起收集作用,所以被称为集电极)
      • 空穴流动方向如图中红色箭头所示
      • 电流方向与空穴流动方向相同:eb之间电流从e到b,ec之间电流从e到c
  • 三极管的使用

    Vconeb 之间的 PN结V2
    3.3V打通(c极相当于直接连接e)3.3V(同Vcon)
    0V未打通0(GND)
    • 所以,可以用Vcon来控制V2

三、LED电路与操作

3.1. LED实物

在这里插入图片描述

3.2. LED电路

在这里插入图片描述

  • 可以注意到 电路都加了 限流电阻,目的是 防止电流过大(I = U/R)烧坏发光二级管

  • 方式1

    • 芯片引脚LED状态
      低电平LED熄灭
      高电平LED点亮
    • 缺点:芯片发出来的 i 太小了,芯片引脚的驱动能力可能不够,LED亮度低;

  • 方式2

    • 芯片引脚LED状态
      低电平LED点亮
      高电平LED熄灭
    • 缺点:电流进入芯片过大时,可能烧毁芯片;

  • 方式3

    • 默认LED熄灭(芯片引脚低电平)

    • 芯片不需要输出很大的电流就可以让发光二极管点亮,经常使用

    • 芯片引脚三极管状态LED状态
      高电平导通点亮
      低电平不导通熄灭
  • 方式4

    • 默认LED点亮(芯片引脚低电平)

    • 芯片引脚第一个三极管状态第二个三极管状态LED状态
      低电平不导通导通点亮
      高电平导通不导通熄灭


欢迎大家一起交流讨论。

这篇关于【硬件操作入门】2--GPIO与门电路、二极管三极管、LED电路与操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

【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

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

MySQL入门到精通

一、创建数据库 CREATE DATABASE 数据库名称; 如果数据库存在,则会提示报错。 二、选择数据库 USE 数据库名称; 三、创建数据表 CREATE TABLE 数据表名称; 四、MySQL数据类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串类型 4.1 数值类型 数值类型 类型大小用途INT4Bytes整数值FLOAT4By