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

【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识(3)

文章目录

  • 4. 嵌入式系统I/O接口
    • 4.1 GPIO与PWM接口
      • 4.1.1 GPIO接口(General-Purpose Input/Output)
      • 4.1.2 PWM接口(Pulse Width Modulation)
    • 4.2 A/D与D/A接口的基本原理与结构
      • 4.2.1 DA转换(数模转换,Digital-to-Analog Conversion)
      • 4.2.2 AD转换(模数转换,Analog-to-Digital Conversion)
      • 4.2.3 分辨率
      • 4.2.4 精度
    • 4.3 人机交互接口
    • 4.4 输入输出控制
      • 4.4.1 直接程序控制
      • 4.4.2 中断方式
      • 4.4.3 直接存储器存取方式(DMA)
      • 4.4.4 输入输出处理机(IOP)
  • 5. 定时器与计数器
    • 5.1 定时器(Timer)

4. 嵌入式系统I/O接口

4.1 GPIO与PWM接口

4.1.1 GPIO接口(General-Purpose Input/Output)

作用:通用输入/输出接口,用于数字信号的简单控制或检测。
特点

  • 可编程方向:可配置为输入(读取信号)或输出(控制外设)。
  • 电平信号:输出高电平(如3.3V/5V)或低电平(0V),输入检测高低电平。
  • 无协议:直接控制,无需复杂通信协议。
    在这里插入图片描述

典型应用

  • 控制LED开关、读取按键状态。
  • 与传感器(如红外、超声波)简单交互。

4.1.2 PWM接口(Pulse Width Modulation)

作用:通过调节脉冲宽度模拟模拟量输出(如电压、转速)。
特点

  • 周期与占空比
    • 周期(Frequency):脉冲重复频率(如1kHz)。
    • 占空比(Duty Cycle):高电平时间占周期的比例(如50%)。
  • 数字信号模拟模拟量:通过快速开关等效输出中间电压(如电机调速)。

在这里插入图片描述

典型应用

  • 电机速度控制(如无人机电调)。
  • LED调光、舵机(Servo)角度控制。

4.2 A/D与D/A接口的基本原理与结构

4.2.1 DA转换(数模转换,Digital-to-Analog Conversion)

DA转换器(DAC)将数字信号转换为模拟信号。数字信号由一系列的二进制数字表示,而模拟信号则是一个连续变化的物理量,如电压或电流。在DAC中,输入的是一个二进制数,输出是一个与该数值成比例的模拟电压或电流。

  • 工作过程: DAC接收一个n位的二进制数作为输入,并将其转换为相应的模拟输出。这个过程通常通过电阻网络、电容网络或者使用脉冲宽度调制等技术实现。
  • 例子: 如果DAC是8位的,那么它可以表示2^8=256个不同的电压等级。如果参考电压是5V,则最小可分辨的电压变化约为5V/256≈19.5mV。

下面这张图片展示了一个典型的数模转换(DA转换,Digital-to-Analog Conversion)电路图:
在这里插入图片描述

根据图片中的电路图,我们可以看到以下关键组成部分:

(1)数字输入

  • 图中左侧的Bit 0, Bit 1, Bit 2, Bit 3表示数字输入信号,这些信号通常来自微控制器或其他数字设备。

(2)输出运算放大器

  • 在电阻网络的末端,通常会有一个运算放大器作为缓冲器和输出级。
  • 运算放大器的作用是提供低阻抗输出,并确保输出电压稳定。
  • 输出电压Vout是所有电阻分支电流的总和,经过运算放大器后输出。

(3)输出电压计算

对于一个理想的DAC,输出电压Vout可以通过以下公式计算:

V o u t = − ( D 2 n ) ⋅ V r e f V_{out} = -\left(\frac{D}{2^n}\right) \cdot V_{ref} Vout=(2nD)Vref

其中:

  • D 是输入的二进制数(以十进制表示)。
  • n 是DAC的位数。
  • Vref 是参考电压。

4.2.2 AD转换(模数转换,Analog-to-Digital Conversion)

AD转换器(ADC)将连续的模拟信号转换为离散的数字信号。这一过程涉及采样、量化和编码三个主要步骤。

  • 采样: 对模拟信号进行周期性的测量,采样的频率必须至少是信号最高频率的两倍(奈奎斯特定理),以避免混叠现象。
  • 量化: 将每个样本映射到最接近的可能值,这些值来自于有限集合中的数字级别。
  • 编码: 将量化后的值转换为对应的二进制代码。

逐次逼近ADC是一种常用的AD转换方法,它通过逐步逼近的方式将模拟信号转换为数字信号。下面结合图片内容详细说明AD转换过程:
在这里插入图片描述
图片中的电路图关键组成部分:

  • V_in:输入的模拟电压信号。
  • Comparator:比较器,用于比较输入电压和参考电压。
  • AND gate:与门,用于控制计数器的时钟信号。
  • Counter:计数器,生成逐次逼近的二进制代码。
  • DAC:数模转换器,将计数器输出的二进制代码转换为相应的模拟电压。
  • Latch:锁存器,用于保存最终的转换结果。
  • Control:控制单元,负责整个转换过程的协调和控制。

逐次逼近ADC的转换过程可以分为以下几个步骤:

(1) 初始化

  • 在转换开始之前,计数器被清零,DAC输出为0V。
  • 控制单元发出启动信号,开始转换过程。

(2) 比较和计数

  • 计数器从最高位开始,逐位进行逼近。
  • 计数器首先将最高位设为1,其余位设为0,生成一个初步的二进制代码。
  • DAC将这个二进制代码转换为相应的模拟电压V_DAC
  • 比较器将输入电压V_inV_DAC进行比较:
    • 如果V_in > V_DAC,则保持当前位为1,并继续处理下一位;
    • 如果V_in < V_DAC,则将当前位设为0,并继续处理下一位。

(3) 逐次逼近

  • 计数器依次处理每一位,每次都将当前位设为1,然后进行比较。
  • 如果比较结果表明V_in大于或等于V_DAC,则保持该位为1;否则,将该位设为0。
  • 这个过程一直持续到最低有效位(LSB)被处理完毕。

(4) 锁存和输出

  • 当所有位都被处理完毕后,计数器输出的二进制代码即为最终的转换结果。
  • 锁存器将这个结果保存下来,并通过控制单元输出。
  • 控制单元还可以发出完成信号,表示转换过程结束。

4.2.3 分辨率

分辨率是指转换器能够区分的最小输入变化量。对于DAC来说,它决定了输出电压可以有多少个不同的等级;对于ADC而言,则决定了它可以区分的最小模拟电压差。

  • 计算方法: 分辨率通常用比特数来表示。例如,一个10位的ADC/DAC可以提供2^10=1024个不同的等级。
  • 影响: 较高的分辨率意味着更精确的转换能力,但也可能导致更高的成本和复杂性。

4.2.4 精度

精度指的是转换器的实际输出与理论理想值之间的偏差程度。它包括线性误差、增益误差、偏移误差等多种因素。

  • 线性误差: 转换器输出与其理想直线响应之间的最大偏离。
  • 增益误差: 实际满量程输出与理论值之间的差异。
  • 偏移误差: 当输入为零时,输出不为零的情况。

4.3 人机交互接口

接口类型基本原理结构概述
键盘键盘通过按下的按键改变电路状态来发送信号给计算机。每个按键对应一个特定的字符或命令。由按键矩阵、微控制器、接口电路组成。按键按下时,对应的行列交叉点形成闭合电路,微控制器识别并转换为相应的ASCII码或指令集发送给主机。
显示(如LCD/LED屏幕)显示器接收来自计算机的数据,并将其转换为可视信息展示给用户。基于像素点发光或遮光实现图像显示。主要包括显示面板(LCD/LED等)、驱动电路、背光源(对于非自发光面板)、以及控制逻辑单元。控制逻辑将接收到的数据解码成像素点的亮度和颜色值。
触摸屏触摸屏检测用户手指或触控笔的位置,通过电容变化、电阻变化或其他技术感知接触点,然后将位置信息传送给控制系统。通常分为电容式、电阻式等多种类型。结构上包含触摸感应层、透明导电层、支撑基板等。当触摸发生时,感应层捕捉到触摸点的位置信息并通过接口传输给处理器。
声控屏(语音交互系统)利用麦克风收集用户的语音指令,经过音频处理和语音识别算法转化为可执行的命令或文本输入。包括麦克风阵列用于拾音、音频预处理模块(降噪、增益调整)、语音识别引擎(ASR)和自然语言理解模块(NLU)。首先将语音转化为数字信号,然后识别出具体的词汇或短语,最终解释用户的意图。

4.4 输入输出控制

4.4.1 直接程序控制

直接程序控制是最基本的I/O控制方式,它包括无条件传送方式和程序查询方式。

  • 无条件传送方式:这种方式假设外设总是准备好进行数据传输,CPU可以直接读取或写入数据。这种方法简单但效率低,因为如果外设没有准备好,可能会导致数据丢失或错误。

  • 程序查询方式:在这种方式下,CPU通过不断查询外设的状态来判断是否可以进行数据传输。当外设准备好时,CPU才进行数据的读取或写入。虽然避免了数据丢失的问题,但CPU需要频繁地查询外设状态,浪费了大量的处理时间。

4.4.2 中断方式

中断方式是一种改进的I/O控制方法,它允许外设在准备好数据后向CPU发出中断请求,通知CPU进行数据传输。这种方式提高了CPU的利用率,因为它可以在等待外设准备数据的过程中执行其他任务。

  • 当外设准备好数据后,会向CPU发送一个中断信号。
  • CPU暂停当前任务,保存现场信息,然后跳转到中断服务程序中处理数据传输。
  • 数据传输完成后,CPU恢复现场,继续执行被中断的任务。

4.4.3 直接存储器存取方式(DMA)

DMA方式进一步减少了CPU在数据传输过程中的干预,适用于大量数据块的快速传输。

  • 在DMA方式下,数据直接在内存和外设之间传输,不需要CPU的介入。
  • DMA控制器负责管理数据传输的过程,包括设置传输地址、传输长度等参数。
  • 当数据传输完成后,DMA控制器会向CPU发送一个中断信号,通知数据传输完成。

4.4.4 输入输出处理机(IOP)

IOP是一种专门用于管理和控制I/O操作的处理器,它可以独立于CPU执行复杂的I/O任务。

  • IOP具有自己的指令集和存储空间,可以运行专门的I/O程序。
  • 它可以从CPU那里接收I/O命令,然后独立地与外设进行数据交换。
  • 使用IOP可以大大减轻CPU的负担,提高系统的整体性能。

5. 定时器与计数器

5.1 定时器(Timer)

作用:用于时间管理,如延时、周期性任务调度、PWM信号生成等。
工作原理

  • 时钟源:由CPU时钟或外部晶振提供基准频率(如1MHz)。
  • 计数寄存器:递增或递减计数,达到设定值后触发中断或输出信号。
  • 工作模式
    • 单次模式(One-shot):计数到设定值后停止,需手动重启。
    • 自动重载模式(Auto-reload):计数到设定值后自动重置,实现周期性触发。

示例

  • 在STM32中,配置定时器实现1ms延时:
    • 时钟源=72MHz,分频后1MHz → 计数值=1000(1ms)。

相关文章:

  • 18.应用聚合、指标显示、应用状态,从Heimdall说起(二)
  • JavaScript 实现继承及 Class 本质详解
  • 上篇:深入剖析 BLE 底层物理层与链路层(约5000字)
  • 链表-两两交换链表中的结点
  • Halcon 的基础用法
  • C语言基础(day0424)
  • AI打开潘多拉魔盒?当深度伪造成为虚假信息的核动力引擎
  • 仓库体系结构风格-笔记
  • Unity 资源合理性检测
  • 数据完整性的守护者:哈希算法原理与实现探析
  • Python中random库的应用
  • ​Janus Pro
  • C++跨平台开发要点
  • 面试题:Java程序CPU 100%问题排查指南
  • Mermaid 绘图指南(二)- 使用 Typora 与 Mermaid 绘制专业图表
  • Qt 使用 MySQL 数据库的基本方法
  • redis集群的三种部署方式
  • 《ATPL地面培训教材13:飞行原理》——第1章:概述与定义
  • unity Animation学习,精准控制模型动画播放
  • Android PackageManagerService(PMS)框架深度解析
  • 推进“即买即退”服务试点,上海静安离境退税商店近400家居全市首位
  • 与包乐史驾帆航行|航海、钓鱼和写书:一个记者的再就业之路
  • 接棒路颖,国泰海通证券副总裁谢乐斌履新海富通基金董事长
  • 荣盛发展:拟以酒店、代建等轻资产板块业务搭建平台,并以其股权实施债务重组
  • 上海市统计局:经济运行开局平稳,高质量发展扎实推进
  • 洛阳白马寺的墓主人是狄仁杰?其实这个误解从北宋就开始了