计算机三级嵌入式(三)——嵌入式系统硬件组成

news2024/9/17 7:14:06

目录

考点1 嵌入式最小硬件系统

考点2 基于 ARM 内核的典型嵌入式应用系统硬件组成

考点3 ARM 的 AMBA 总线体系结构及标准

考点4 基于 ARM 内核的嵌入式芯片的硬件组成

考点5 存储器层次结构

考点6 存储器分类

考点7 存储器主要性能指标

考点8 片内存储器

考点9 外部辅助存储设备

考点10 通用 I/0 接口 GPIO

考点11  集成电路互连总线接口

考点12 串行外设接口SPI

考点13 串行通信接口通用接口UART

考点14 通用串行总线 USB

考点15 高清多媒体接口HDMI

考点16 常用简单输入设备

考点17 常用简单输出设备


23考纲

考点1 嵌入式最小硬件系统

        嵌入式最小系统是嵌入式系统的最小硬件系统,它主要包括的硬件有嵌入式处理器、时钟电路、电源电路、复位电路、存储器以及调试测试接口。

①电源电路

常用的电源模块
        嵌入式系统常用的电源模块是交流变直流(AC-DC)模块、直流到直流(DC-DC)模块以及低压差稳压器(Low Dropout Regulator, LDO)。

选择和设计电源电路时主要考虑因素
第一,输出的电压、电流(按嵌入式硬件系统需要的最大功率来确定电源输出功率)。
第二,输入的电压、电流(是直流还是交流,输入电压和电流有多大)。
第三,安全因素(是否需要不会因火花或热效应而点燃爆炸性环境的本安型电源)。
第四,电磁兼容
第五,体积限制。
第六,功耗限制。
第七,成本限制。

②时钟电路
         几乎所有的嵌入式处理器本质上均为同步时序电路,需要时钟信号才能按照节拍正常工作大多数嵌入式处理器内置了时钟信号发生器,因此时钟电路只需要外接一个石英晶体振荡器和两只电容就可以工作了。但有些场合(如为了减少功耗、需要严格同步等)需要使用外部振荡源提供时钟信号。

晶振
        晶体振荡器,简称晶振。根据系统需求选择合适的晶振,既要考虑嵌入式处理器的最高工作频又要保证系统在一定的功耗范围内。晶振是无极性的,通常分为无源和有源两种。
③复位电路
        复位电路的作用嵌入式处理器都有一个系统复位引脚为nRESET或RESET,n表示低电平复位,不带n的表示高电平复位。一般情况下,nRESET必须至少保持若干个处理器时钟周期的低电平,系统才能可靠复位,并且考虑可以人工干预复位。目前嵌入式系统常使用外接典型复位芯片以保证系统能可靠复位。ARM复位后PC指针指向唯一的地址 0x00000000,而在此地址处通常放一条无条件转移指令BRESET,转向RESET开始的系统初始化程序,在这个系统初始化程序中就可以对系统进行初始化操作,以保证系统有序工作。

考点2 基于 ARM 内核的典型嵌入式应用系统硬件组成


        典型的嵌入式系统硬件由嵌入式最小硬件系统、前向通道、后向通道、人机交互通道以及相互互联通信通道等组成。

(1)前向通道
        即输入接口,由模拟量输入接口和数字量输入接口组成,模拟输入接口包括传感器、信号调理电路(滤波器、放大器等)、A/D 转换器等。
(2)后向通道
        即输出接口,由模拟输出接口和数字输出接口组成,模拟输出接口包括 D/A 转换器、功率放大器、执行器等
(3)人机交互通道
        人机交互通道包括键盘或触摸屏输入接口以及 LED 或LCD 显示输出接口。
(4)相互互连通道
        相互互连通道包括 RS-232/RS-485 串行通信接口、CAN 通信接口、以太网通信接口、 USB 通信接口等。

考点3 ARM 的 AMBA 总线体系结构及标准


①起源        

        先进微控制器总线体系结构(Advanced Microcontroller BusArchitecture,AMBA),是用于连接和管理片上系统(SoC)中功能模块的开放标准和片上互连规范。
②作用
        有助于开发带有大量控制器和外设的多处理器系统
③规定内容

        标准规定了 ARM 处理器内核与处理器内部高带宽RAM、DMA 以及高带宽外部存储器等快速组件的接口标准(通常称为系统总线),也规定了内核与ARM处理器内部外围端口及慢速设备接口组件的接口标准(通常称为外围总线)。

a.AMBA1总线标准
         AMBA1总线标准规定了两种类型总线,即系统总线和外围总线:先进系统总线(Advanced System Bus,ASB)用于连接高性能系统模块,是第一代AMBA系统总线;先进外围总线(AdvancedPeripheralBus,APB)支持低性能的外围接口,主要用于连接系统的周边组件,APB是第一代外围总线。
        APB与ASB之间通过桥接器(Bridge)相连,希望能减少系统总线的负担。APB属于AMBA的二级总线用于不需要高带宽接口的设备互连。所有通用外设组件连接到APB总线上。
b:AMBA2 标准
        AMBA2标准增强了AMBA的性能,定义了两种高性能的总线规范 AHB 和APB2以及测试方法。系统总线改为先进高性能总线(Advanced High-performance Bus,AHB),用于连接高性能系统组件或高带宽组件。
c:AMBA3总线
        AMBA3总线包括先进的可扩展接口(Advanced eXtensible Interface,AXI)、先进的跟踪总线(Advanced TraceBuS,ATB)、AHB-Lite及APB3 四个总线标准。
d.AMBA4总线
        AMBA4在 ATB 基础上增加了5个接口协议:AXI一致性扩展(AXICoherency Extensions,ACE)、ACE-Lite、AXI4、AXI4-Lite 及AXI4-Stream。

考点4 基于 ARM 内核的嵌入式芯片的硬件组成

        基于 ARM 内核的嵌入式芯片正是以ARM 内核为基础,通过 AMBA 总线技术将其他硬件组件连接在一起以片上系统(SoC)的形式构成的。

①系统总线
        系统总线主要用于连接高带宽快速组件,连接到系统总线上的高带宽组件主要包括:电源管理与时钟控制器测试接口如JTAG、外部存储器控制接口、DMA控制器、USB主机、片上SRAM及Flash、Ethemet、高速 GPIO中断控制器、LCD 控制器等。
②外围总线

        外围总线主要连接低带宽组件以及与外部相连的硬件组件。系统总线通过桥接器与外围总线互连,外围总线连接的硬件组件包括:GPIO、UART、SPI、C、USB设备、CAN、ADC、DAC、WDT、Timer、RTC、PWM等:
(2)存储器及控制器
①存储器及控制器介绍
        ARM 处理芯片内部硬件中除ARM内核外,最重要的组件就是存储器及其管理组件,用于管理和控制片内的 SRAM、ROM 和 Fash ROM,通过外部存储器控制器对外部扩展存储器如Flash 存储器及 DRAM 等进行管理与控制。
②片内程序存储器和片内数据存储器
        片内程序存储器通常用的是FIashROM,一般配有几KB到几MB不等。片内数据存储器通常使用的是SRAM,一般配置有几KB到几百KB不等。
③外部存储器控制接口
        高带宽外部存储器控制接口为外部存储器扩展提供了接口,可以扩展程序存储器和数据存储器。目前程序存储器大都采用Flash存储器,而数据存储器可采用SRAM和DDR或DDR2或普通的 DRAM。

(3)中断控制器
①中断控制器的作用

        中断控制器负责对其他硬件组件的中断请求进行管理和控制,一般采用向量中断(VIC)嵌套向量中断(NVIC)方式管理中断。
        当一个外设或组件需要服务时,会向处理器提出一个中断请求,中断控制器提供一套可编程的管理机制,软件通过设置,可以决定什么时刻允许哪一个外设或组件中断处理。

②处理中断的形式
        处理中断有两种形式:标准的中断控制器和向量中断控制器(VIC)。
a.标准中断控制器

        标准中断控制器在一个外设设备需要服务时,发送一个中断请求信号给处理器核。中断控制器可以通过编程设置来忽略或屏蔽某个或某些设备的中断请求。中断处理程序通过读取中断控制器中与各设备对应的表示中断请求的寄存器内容,从而判断哪个设备需要服务。
b.向量中断控制器
        VIC 比标准中断控制器的功能更为强大些,因为它区分中断的优先级,简化了判断中断源的过程。每个中断都应有相应的优先级和中断处理程序地址(称为中断向量),只有当一个新的中断其优先级高于当前正在执行的中断处理优先级时,VIC才向内核提出中断请求。根据中断类型的不同,VC可以调用标准的中断异常处理程序该程序能够从 VIC中读取设备的处理程序的地址,也可以使内核直接跳转到设备的处理程序处去执行。
c.嵌套向量中断
        NVIC比VIC更进一步,可以进行中断的嵌套,即高优先级的中断可以进入低优先级中断的处理过程中,待高优先级中断处理完成才去继续执行低优先级中断,也称之为抢占式优先级中断Conex-M系列就支持嵌套的向量中断

(4)DMA 控制器
①DMA 控制器的作用
        ARM 处理芯片内部的DMA控制器(直接存储器访问控制器)是一种硬件组件,使用它可将数据块从外设传输至内存、从内存传输至外设或从内存传输至内存。
②DMA 控制器的特点

        数据传输过程中不需要 CPU参与,因而可显著降低处理器的负荷。通过将CPU设为低功率状态并使用 DMA控制器传输数据,也降低了系统的功耗。在ARM 处理芯片中有许多与外部打交道的通道,它们既可以由ARM内核控制其数据传输,也可以通过 DMA控制器控制数据传输,这样可以把ARM内核从繁杂的数据传输操作中解放出来,提高数据处理的整体效率。
(5)电源管理与时钟控制器
①电源管理的模式
        ARM 处理芯片内部的电源管理主要有正常工作模式、慢时钟模式、空闲模式、掉电模式、休眠模式、深度休眠模式等以控制不同组件的功耗。
②)时钟控制器
        时钟信号是 ARM 芯片定时的关键,时钟控制器负责对时钟的分配,产生不同频率的定时时钟供片内各组件作为同步时钟使用。
(6)GPIO端口

        GPIO(General Purpose Input Output)即通用输入/输出端口,作为通用的输入或输出端口使用。作为输入时具有缓冲功能,而作为输出时则具有锁存功能,GPIO也可以作为双向IO使用。在ARM 处理芯片中,GPIO弓脚通常是多功能使用的,目的是减少芯片引脚数,缩小PCB面积,以减少功耗。有的引脚是双功能的,也有三功能甚至四功能的引脚,不同厂家的ARM 处理芯片其具体引脚的定义不同。
(7)定时计数组件
①看门狗定时器
        在嵌入式应用中,处理器必须可靠工作。但系统由于种种原因,程序运行时会不按指定指令运行,导致死机,系统无法继续工作下去,这时必须使系统复位才能使程序重新投入运行。这个能使系统定时复位的硬件或软件称为看门狗定时器,简称看门狗。看门狗的主要功能是当处理器在进入错误状态后的一定时间内复位,保证系统的稳定运行。

②Timer
        Timer 是通用定时器,可用于一般的定时。
③RTC
        RTC 可直接提供年月日时分秒,使应用系统具有自己独立的日期和时间。

④PWM
        PWM 用于脉冲宽度的调制,比如电机控制、变频调整等多种场合。所有与定时有关的组件的一个共同特点就是,对特定输入的时钟通过分频后接入计数器进行加1或减1计数,计数达到预定的数值后将引发一个中断并置一定的标志位。对于WDT定时达到后将产生系统复位信号,对于PWM 定时达到后会产生特定波形。

(8)模拟通道组件
①ADC
        ADC 是模拟到数字的转换器,可完成从模拟信号到数字信号的变换。对于嵌入式系统而言,它是一个模拟输入的组件,ARM 芯片内置的 ADC大部分是多通道通过模拟开关形式切换通道的 ADC,内部只有一个 AD变换单元,分辨率一般为10位和12位居多。
②DAC

        DAC 是数字到模拟的变换器,可完成从数字信号到模拟信号的变换。对于嵌入式系统而言它是一个模拟输出组件。一般内置 DAC有10位、12位、14位等分辨率。DAC主要应用于需要模拟信号输出的场合,一般在后级还需要加功率放大才能接到实际应用系统中。
③比较器

        比较器可方便地对模拟电压信号等与基准信号相比较,可监测电源电压、芯片温度等,通过比较采样值与基准值,就可以判断是否欠压、温度是否超高等。比较器的主要功能是当比较器正端电压高于负端电压时,输出电压值接近正电源电压,反之输出电压接近负电源电压。
(9)互联通信组件
①通用异步收发器介绍

        通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)为标准的串行通信接口,字符格式按照低位在前、高位在后的次序进行传输,1位起始位,8位数据位,1位奇偶校验位,1~2位停止位。它是应用最为广泛的串行通信接口,可完成全双工的串行异步通信。外接电平和逻辑转换收发器后可做成RS-232、RS-422、RS-485 等标准的串行接口。
②ARM 处理芯片内部常用的可互联通信组件
a. I2C(Inter-Integrated Circuit)
        I2C是集成电路互连的一种总线标准,只有两根信号线,一根是时钟线 SCL,一根是数据线SDA(双向三态),即可完成数据的传输操作。具有特定的起始位和终止位,可完成同步半双工串行通信方式,常用于板级芯片之间的短距离低速通信。
b. I2S(Inter-Integrated Circuit Sound Bus)

       I2S是一种面向多媒体应用的音频串行总线,是 SONY、PHILIPS 等公司共同推出的接口标准,主要针对数字音频设备如便携 CD机、数字音频处理器等,专用于这些音频设备之间的数据传输。
c.SPI(Serial Peripheral Interface )

        SPI是串行外设接口,总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信。通常用四线制,包括MISO(主输入从输出)、MOSI(主输出从输入)、SSL(芯片选择)和SCK(时钟)。可完成全双工的同步串行通信,用于板级芯片之间的短距离通信。
d. CAN(Controller Area Network)

        CAN 是控制器局域网,仅有CANH和CANL两根信号线,采用差分传输的方式,可以进行远距离(1200m)多机通信。主要用于要求抗干扰能力强的工业控制领域,可组成多主多从系统。
e.USB(Universal Serial Bus)
        USB 是一种通用串行总线,主要应用于与外部设备的短距离通信,也采用差分方式传输数据,速度快,效率高,是目前应用最广的串行总线接口形式。
f. Ethernet
        Ethernet是以太网通信接口,在许多新型ARM 芯片(如Corex-M3 系列)中均集成了这一接口,把以太网MAC层做到芯片内部,有的连物理层也做进去了,使连接以太网变得非常容易,外部仅需要连接一个RJ-45连接器即可。

考点5 存储器层次结构

(1) 三层次结构的存储器结构
        对于CPU使用最频繁的少量的程序代码和数据用SRAM作为高速缓冲存储器(Cache)存放正在运行中的程序的大部分数据和代码存放在主存储器(内存)中,尚未启动运行的其余程序或数据则存放在容量大的外部存储器如磁盘(虚拟内存)中待命。图中,最上层是处理器内部的通用寄存器,是速度最快的一层,其次就是处理器内部的 Cache,其下就是主存储器,最后一层是容量最大、速度最慢的外部存储器。

(2)Cache 的作用
        使用Cache的优点是只需要增加少许成本,整个系统的性能将会得到显著提高,因此目前嵌入式系统采用SRAM 作为 Cache,Cache 又分为嵌入式处理器内部一级Cache(L1)和二极Cache(L2)

考点6 存储器分类


(1)存储器的分类
①按照其存取特性可分为随机存取存储器(RAM)和只读存储器(ROM);

②按照所处物理位置可分为片内存储器(芯片内置的存储器)和片外存储器(外部扩展的存储器)以及外部存储设备;
③按照存储信息的不同可分为程序存储器和数据存储器。
④在嵌入式系统中把片内存储器及片外扩展的存储器简称主存储器或主存,而把外部存储设备简称辅助存储其器。
⑤嵌入式系统的存储器以半导体存储器为主。也出现了新型存储器,主要包括铁电随机存取存储器(Ferroelectric Random Access Memory,FRAM)和磁性随机存取存储器(Magnetic Random Access Memory,MRAM),尤其是FRAM 被广泛应用于嵌入式应用系统中并越来越受到重视。

(2)随机存取存储器
        随机存取存储器包括静态和动态两种形式,即SRAM和DRAM,它们都是易失性存储器,即掉电后信息丢失。在计算机组成原理中已知,SRAM是靠双稳态电路的两个稳定状态来记录信息0和1的,而DRAM 是靠存储单元的晶体管极间电容的充放电状态来存放信息0和1的。由于电容容易漏电,因此必须定时进行刷新以保持原来的信息不变,使用时外部需要提供刷新电路。因此目前嵌入式处理器内嵌的数据存储器基本都采用 SRAM,而外部扩展的存储器大都采用 DRAM 及其改进型。
        DRAM 比 CPU速度慢很多,除了改进其电路和工艺外,人们还不断地对 DRAM 的存储控制技术进行改进开发出了 DRAM 的许多新品种。近几年大多数嵌入式系统使用的是DDR(DualDataRate)SDRAM(双倍数据速率同步 DRAM)和性能更加优越的 DDR2SDRAM、DDR3 SDRAM和 DDR4 SDRAM。DDR SDRAM 是新的内存标准之一,它在系统时钟触发沿的上、下沿都能进行数据传输,从而把数据传输速率提高了一倍。
        DDR2(或DDR3)SDRAM与DDR相比,除了保持原有的双边沿触发传送数据特性外,还提高了存储器内部时钟工作频率,扩展了数据预读取能力,使原来DDR可预读取2位变成可预读取4位(或8位)数据,把DDR的数据传输速率又提高了两倍(或四倍),因此称为DDR2(DDR3)。

        DDR4是DDR3的改进,其数据传输速率是DDR3的2倍。DDR4内存拥有两种规格,一种使用Single-endedSignaling 信号,其传输速率为 1.6~3.2GB,而基于差分信号技术的 DDR4 内存其传输速率则将可以达到 6.4GB/s。
        DDR及 DDR2以上的DRAM 主要应用在高端应用场合,如应用在Cortex-A8/A9/A15等ARM 处理器的应用系统的外部存储器中。

(3)只读存储器
①MROM(MaskROM)
        MROM 是基于掩膜工艺技术的只读存储器,出厂时已决定信息0和1,因此一旦生产出来,信息是不可改变的。这种ROM主要用于不可升级的成熟产品存储程序或不变的参数等信息。②PROM(Programmable ROM)
        PROM一次可编程的只读存储器,只能一次编程,通过外接一定的电压和电流来控制内部存储单元上节点熔丝的通断以决定信息0和1,一旦编程完毕则无法修改。
③EPROM(Erasable Programmable ROM)

        EPROM紫外线可擦除可编程的只读存储器,通过内部浮置栅场效应管是否充满足够的电荷决定信息0和1,这种电荷的稳定性非常好,可长久不变,除非用紫外线照射一段时间,电荷才会重新分布,从而进行信息的擦除。擦除编程次数十万次以内。编程速度慢,擦除时间长
④EEPROM(Electrically Erasable Programmable ROM)

        EEPROM 是一种可以电擦除可编程的只读存储器,可以在线改写和擦除信息,无需紫外线照射。而且可以多次擦除和编程,可擦除和编程1百万次以内。EEPROM通常写成E2PROM。

⑤Fash ROM
        Flash ROM 是近些年应用最广、速度最快的只读存储器,原理是从 E2PROM 基础上改进发展来的,特点是擦除和编程速度快,因此得名为闪速(或闪烁)存储器,简称闪存
        NOR Fash和NAND Fash是两种主要的闪存技术。
a. NAND Flash ROM
        NAND Fash ROM 以页(行)为单位随机存取,在容量、使用寿命和成本方面有较大优势。但是它的读出速度稍慢,编程较为复杂,因此大多作为数据存储器使用。嵌入式产品中包括数码相机、MP3 随身听记忆卡、体积小巧的U盘等均采用 NAND Flash ROM。
b. NOR Flash ROM

        NOR Flash ROM 的特点是以字节为单位随机存取。这样,应用程序可以直接在 Fash ROM 中执行,不必再把程序代码预先读入到RAM 中。NORFash ROM 的接口简单,与通常的扩展存储器一样,可以直接连接到处理器的外围总线上(而 NAND Fash ROM 必须配置专用的 NAND Fash ROM 控制器或采用通常的 I/O 接口才能使用)。但是,NOR FashROM 写入和擦除速度较慢,影响了它的性能。

(4)铁电存储器
①FRAM 的原理
        FRAM 利用铁电晶体的稳定性,通过对施加电场到铁电品体时让铁电品体迅速移动,从而引发铁电电容的击电场移走后,中心原子保持不动,从而存储信息不变。
②FRAM 的特点
        铁电晶体的稳定性极高,且可读/写100亿次,有的可以读/写无数次。这样一来,它就既具有只读存储器非易失性的特点,、又具有随机存储器可快速随机读/写的特点,而且速度快、功耗低,已被应用到嵌入式微处理器内部以取代SRAM 和Flash存储器,在其他嵌入式应用领域也越来越被重视,应用越来越广泛。
(5)磁性存储器
        MRAM 是一种非挥发性(或非易失性)的磁性随机存储器,具有静态随机存储器(SRAM)的高速存取能力以及动态随机存储器(DRAM)的高集成度,而且基本上可以无限次地重复写入。它存储的数据具有永久性,直到受外界磁场作用才会发生改变。因为运用磁性存储数据,所以MRAM 在成本上有了很大的降低
 

考点7 存储器主要性能指标

(1)容量
①概念
        存储器容量是指每一个存储芯片或模块能够存储的二进制位数。

②单位
        存储器容量以存储1位二进制位为最小单位(b),容量单位有字节(Byte,B)、千字节(Kilo-Byte,KB)、兆字节(Mega-Byte,MB)、吉字节(Giga-Byte,GB)、太字节(Tera-Byte,TB)、拍字节(Peta-Byte,PB)、艾字节(Exa-Byte,EB)、泽字节(Zetta-Byte,ZB)以及尧字节(Yotta-Byte,YB)等。

③单位换算
        对于内存容量而言,这些容量单位之间的相互关系均以 2^{10}=1024倍表示;对于外存容量而言,这些容量单位之间的相互关系却以10^{3}=1000倍表示。

④计算
        内存储器有多大容量取决于存储单元的个数和存储器各单元的位数。

内存容量=单元总数x数据位数/单元

        单元个数与存储器的地址线有密切关系,因此存储芯片的容量完全取决于存储器芯片的地址线条数和数据线的位数。假设单元个数为L,数据线位(条)数用n表示,地址线条数用m表示,则单元个数与地址关系为m=log_{2}L,因此存储容量V与m、n之间的关系为

V=2^{m}*n

(2)存取时间
        存取时间是指从CPU给出有效的存储器地址开始到存储器读出数据(或者是把数据写入存储器)所需要的时间。存储器芯片的工作速度通常用存取时间来衡量。
        由于现在的存储器都较快,内存的存取时间通常以ns为单位。s、ms、us和 ns之间的关系为:
1s=10^{3}ms=1000ms,1ms=10^{3}\mu s=1000\mu s,1\mu s=10^{3}ns=1000 ns
(3)带宽
①存储器概念
        存储器的带宽指每秒可传输(读出/写入)的最大数据总量,通常以Bs、KB、MBs和 GBs 表示。存储器带宽与存储器总线频率有关,也与数据位数(宽度)和每个总线周期的传输次数有关。

②存储器带宽的计算
a.并行总线的存储器带宽

带宽=总线频率x数据宽度/8x传输次数/总线周期(B/s)

b:串行总线的存储器带宽
        由于目前串行总线非常流行且为今后发展的主流趋势,而串行总线按位顺序传输,因此其带宽的计算公式如下:

带宽=总线频率x\frac{1}{10}(B/s)

通常串行总线以10位为一个数据帧(含一字节数据)。
 

考点8 片内存储器

(1)片内 Cache
①片内 Cache 的集成
        嵌入式微处理器内部集成了几KB到几百KB,有的达到几MB的Cache,有的嵌入式微处理器内部有片内一级Cache,还有二级Cache。
②片内 Cache 的作用

        借助于内部 Cache,系统就可以不必每次都访问外部存储器,一次可以把批量的指令或数据复制到 Cache中,这样 CPU 直接读取 Cache 中的指令,读/写 Cache 中的数据,减少了访问外部存储器的次数,提高了系统运行效率。在性能高的嵌入式处理器中都会集成内部Cache
(2)片内Fash ROM
        大部分嵌入式微控制器内部集成有一定容量的 Fash ROM 作为程序存储器,从几 KB 到几 MB 不等。有了内置Flash,嵌入式系统就可以以最小系统形式(无需外接程序存储器)应用到各个领域。
(3)片内SRAM
        嵌入式微控制器内部除了有一定容量的 Flash ROM 作为程序存储器外,还集成了从几 KB 到几 MB 不等的SRAM 作为数据存储器,用来临时存放系统运行过程中的数据、变量、中间结果等。由于 SRAM 是易失性存储器,因此,系统复位后要对 SRAM进行初始化操作
(4)片内E2PROM

        相当一部分嵌入式微控制器内部除了 Fash ROM 和 SRAM 外,还配备了从几 KB 到几 MB 不等的 E2PROM作为长期保存重要数据的存储器。因为是非易失性存储器,掉电后信息保持不变,因此常用于存放系统的设置和配置信息以及希望长期保存且很少改写的一些数据
(5)片内FRAM
        目前已有部分嵌入式微控制器内部集成了FRAM,由于它具有RAM和ROM的全部特点,因此既可当作RAM用,又可当作 ROM用,是当前嵌入式微控制器内部的主要存储器之一。

考点9 外部辅助存储设备


        基于 Flash 的闪存卡(Flash Card),是利用闪存技术达到存储电子信息的存储设备。它如同一张卡片,所以称之为闪存卡或存储卡。
(1)SM 卡
        SM卡一度在数码机和 MP3播放器上非常流行,现在已经被 SD卡和 MMC卡所取代。
(2)CF卡
        CE卡为兼容 Fash 卡,最初是使用 Fash 存储技术的一种用于便携式电子设备的数据存储设备。CF 卡实际上是使用了 NOR Flash 和 NAND Flash,只是封装成一个标准的形式而已。目前新 CF 卡均采用NAND Flash ROM 作为存储器。
(3)MMC        

      MMC的发展目标主要是针对数码影像、音乐、手机、PDA、电子书、玩具等产品。MMC 也是把存储单元和控制器一同做到了卡上,智能的控制器使得MMC 保证了兼容性和灵活性。
(4)SD卡
①SD 卡
        SD卡为安全数字存储卡,也是基于 Fash,它被广泛地应用于便携式装置。大小如一张邮票的 SD记忆卡,重量只有2克,但却拥有高记忆容量快速数据传输率、极大的移动灵活性以及很好的安全性。

②miniSD卡
        SD卡对于手机等小型数码产品略显臃肿,为此又开发了一种,其封装尺寸是原来 SD卡的 44%,通过转接卡也可以当作 SD卡使用。在手机上有广泛的使用。

③microSD
        还有一种 TF 卡又称 microSD,是一种更加小巧的 SD卡,主要用于手机。随着容量的不断提升,它慢慢开始用于 GPS 设备、便携式音乐播放器和一些闪存盘中。它是目前为止最小的存储卡。它亦能够以转接器来接驳于 SD 卡插槽中使用。

(5)记忆棒
        记忆棒是由日本索尼(SONY)公司最先研发出来的移动存储媒体。记忆棒用在SONY的PMP、PSX系列游戏机、数码相机、数码摄像机、索爱的手机以及笔记本电脑上,用于存储数据。
(6)XD卡
        XD卡是由富士和奥林巴斯联合推出的专为数码相机使用的小型存储卡,采用单面18针接口,在奥林巴斯、柯达、富士胶卷的数码相机上使用。目前市场上见到的XD卡有16MB、32MB、64MB、128MB、256MB 等不同的容量规格。
(7)U盘
        U盘,全称 USB 闪存盘,英文名为USB fash disk。它是一种使用 USB 接口的无需物理驱动器的移动存储产品,通过 USB接口与系统连接,实现即插即用。
(8)微硬盘
        微硬盘最早是由IBM 公司开发的一款超级迷你硬盘机产品。其最初的容量为340MB和512MB,现在的产品容量有1GB、2GB、4GB、8GB、16GB、30GB、40GB和60GB,甚至 240GB等。与以前相比,目前的微硬盘降低了转速(由4200rpm降为3600rpm),从而降低了功耗,增强了稳定性。

微硬盘的主要特点:
①超大容量
        微硬盘的盘片面积只有1英寸,整体也不过电话卡 1/3 面积,主流容量却达到了 1~4GB 级水平,还有 15GB(1英寸)和60GB(1.8英寸)的产品,无论是用作相机拍摄,还是数据存储,都是绰绰有余。目前1.8英寸的微硬盘最大容量已经达到240GB。
②使用寿命长
        采用比硬盘更高技术来制作,保证了它的使用寿命,可反复抹写30万次以上,通常能稳定工作5年。

③带有缓存
        缓存是提高数据传输率的重要保证,一般产品都配有128KB容量数据缓存。

④无须外置电源
        微硬盘的功耗极小,连接 USB 就可以用了。
⑤高速传输
        现在微硬盘转速都有 3600~4200r/min,最快的已经达到4500r/min。当然,由于盘片体积小,相同转速时数据传输率比普通硬盘要低。由于拥有自动省电模式,能主动降低发热量,让高速传输可以更加持久。

⑥接口多样,兼容性好
        微硬盘与普通硬盘一样,都有兼容工业标准的多种硬盘接口,这主要由控制芯片来决定,使其适用于多种手持装置。有基于 CF卡、PCMCIA、USB 2.0、ATA并口的微硬盘,还有SATA串口的微硬盘。特别是 USB2.0接口可实现60MB/s的高速数据传输。
⑦高防振性

        由于微硬盘的特殊设计,它的防振能力比一般笔记本硬盘强许多,其特殊的磁头载入载出技术使抗冲击能力高达1500g(非工作状态)和175g(工作状态)。即使配合低端读取设备使用,读取器和硬盘的双重保护也能避免硬盘内部受到撞击。

考点10 通用 I/0 接口 GPIO

(1)通用输入输出(GeneralPurpose Input Output,GPIO)
①应用范围

        所有嵌入式处理器内部均集成了GPIO,GPIO 接口提供的输入具备缓冲功能,而输出均具有锁存功能。有的嵌入式处理器芯片通过设置端口的方向来确定是输入功能还是输出功能,也有的嵌入式处理器直接根据读/写命令自动控制输入或输出的方向。
②三态
        GPIO 一般具有三态,即0态、1态和高阻状态
③引脚功能
        为了节省引脚条数,通常有些GPIO引脚有多种功能以供选择,如有两功能的,有三功能的,也有四功能的,等等,可以通过设置相关控制寄存器的位来确定引脚功能。
(2)典型的1位 GPIO的输入/输出接口示例输入
        输入时通过 IO 引脚将数据0或1经 S1施密特触发器进入输入数据寄存器,在输入操作指令的作用下即可将外部 IO引脚的数据读入处理器内部。
②输出
a.输出状态结果
        输出时,处理器将数据送到输出数据寄存器,如果输出为逻辑 0,则输出控制使 N-MOS 管导通,而此时 P-MOS管截止,使输出电平被下拉到接近 VSS 而输出逻辑为 0:如果输出为逻辑1,则输出控制使 P-MOS 导通而 N-MOS截止,使输出电平被上拉到接近 VDD 而输出逻辑为1。且只要输出控制不变,输出状态结果也保持不变(锁存功能)。
b.二极管的输入保护功能
        输出引脚的两个上下拉二极管具有输入保护功能,一旦输入信号高于VDD或低于 VSS,则通过二极管使引脚信号被钳位在 VDD与 VSS之间,保护了引脚内部相关部件(输入引脚的电平不能超过电源电压的范围,这是基本要求)。通常可通过配置为上拉(即引脚对电源接一 100kΩ左右的电阻)或下拉(即引脚对地接一个100kΩ左右的电阻)。

考点11  集成电路互连总线接口I^{2}C

(1)集成电路互连(Inter IC,I2C)总线的介绍
①概念
        PC总线用于连接嵌入式处理器及其外围器件,它是广泛采用的一种串行半双工传输的总线标准,可以方便地用来将微控制器和外围器件连接起来构成一个系统。许多处理器芯片和外围器件均支持了I2C总线,这些器件各有一个地址,该器件可以是单接收的器件(如LCD驱动器),也可以是既能接收也能发送数据的器件(如 Pash存储器)。主动发起数据传输操作的I2C器件是主控器件(主器件),否则它就是从器件。
②)优点
a.PC 总线接口线少;
b.控制方式简单;
c.器件封装紧凑:
d.通信速率较高(100kb/s,400kb/s,高速模式可达3.4 Mb/s)。

(2)I2C总线的操作时序
        I2C总线只有两条信号线,一条是数据线SDA,另一条是时钟线SCL,所有操作都通过这两条信号线完成。数据线SDA 上的数据必须在时钟的高电平周期保持稳定,它的高/低电平状态只有在SCL,时钟信号线是低电平时才能改变。
①启动和停止条件

        总线上的所有器件都不使用总线时(总线空闲),SCL线和 SDA 线各自的上拉电阻把电平拉高,使它们均处于高电平。主控器件启动总线操作的条件是当 SCL,保持高电平时 SDA 线由高电平转为低电平,此时主控器件在SCL,产生时钟信号,SDA 线开始数据传送。若SCL为高电平时 SDA 电平由低转为高,则总线工作停止,恢复为空闲状态。

②数据传送格式
        数据传送时高位在前,低位在后,每次传送的字节数目没有限制。传输操作启动后主控器件传输的第一字节是地址,其中前面7位指出与哪一个从器件进行通信,第8位指出数据传输的方向(发送还是接收)。

③应答(ACK)信号传送
        为了完成一字节的传送,接收方应该发送一个确认信号ACK给发送方。ACK信号出现在SCL线的第9个时钟脉冲上,有效应答 ACK在SDA 上呈现低电平。
        主控器件在接收了来自从器件的字节后,如果不准备终止数据传输,它将会发1个ACK信号给从器件。从器件在其接收到来自主控器件的字节时,总是发送个 ACK 信号给主控器件,如果从器件还没有准备好再次接收,它可以保持 SCL为低电平(总线处于等待状态),直到它准备好为止。
④读/写操作
        在发送模式下,数据被发送出去后,I2C接口将处于等待状态(SCL线将保持低电平),直到有新的数据写入I2C数据发送寄存器之后,SCL线才被释放,继续发送数据。
        在接收模式下,I2C接口接收到数据后,将处于等待状态,直到数据接收寄存器内容被读取后,SCL线才被释放,继续传输数据。
⑤总线仲裁
        I2C总线属于多主总线,即允许总线上有一个或多个主控器件和若干从器件同时进行操作。
a.总线仲裁的原理
        总线被启动后多个主机在每发送一个数据位时都要对自己的输出电平进行检测,只要检测到电平与自己发出的电平相同,就会继续占用总线。假设主机 A 要发送的数据为“1”,主机 B要发送的数据为“0”,如图所示,由于“线与”的结果使 SDA 上的电平为“0”,主控器A检测到与自身不相符的“0”电平,只好放弃对总线的控制权。这样主机B 就成为总线的唯一主宰者。仲裁发生在SCL为高电平时刻。

b.总线仲裁的特点

        由仲裁机制可以看出:总线控制遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权;主控器通过检测 SDA 上自身发送的电平来判断是否发生总线仲裁。因此,I2C总线的“总线仲裁”是靠器件自身接口的特殊结构得以实现的。
⑥异常中断条件

        如果没有一个从器件对主控器件发出的地址进行确认,那么SDA 线将保持为高电平。这种情况下,主控器件将发出停止信号并终止传送。
        如果主控器件涉入异常中断,在从器件接收到最后一个数据字节后,主器件将通过取消一个 ACK 信号的产生来通知从器件传送操作结束。然后,从器件释放SDA,允许主器件发出停止信号,释放总线。
(3)I2C总线接口的连接
        ARM 芯片内部集成了I2C总线接口,因此可直接将基于了I2C总线的主控器件或被控器件挂接到了C总线上。每个器件的 IC总线信号 SCL和 SDA 与其他具有 I2C总线的处理器或设备同名端相连,在 SCL 和 SDA 线上要接上拉电阻。基于I2C总线的系统构成如图所示。

        在 ARM 芯片中内置了I2C总线控制器,I2C总线在主器件和从器件之间进行数据传输之前,必须根据要求设置相应的I2C的有关功能寄存器,包括I2C总线控制寄存器、I2C总线状态寄存器、I2C总线地址寄存器以及I2C总线接收/发送数据移位寄存器等。

考点12 串行外设接口SPI

(1)串行外设接口SPI介绍
①定义
        串行外设(SPI)接口是一种同步串行外设接口,允许嵌入式处理器与各种外围设备以串行方式进行通信、数据交换。
②外围设备
        基于 SPI接口的外围设备主要包括 Fash ROM、RAM、A/D 转换器、网络控制器、MCU 等。

③连接线
        SPI系统可直接与各个厂家生产的多种标准外围器件直接相连,一般使用4条线:串行时钟线 SCK、主机输入/从机输出数据线 MISO、主机输出/从机输入数据线 MOSI和低电平有效的从机选择线 SSEL,有的 SPI接口芯片带有中断信号线INT,有的SPI接口芯片没有主机输出/从机输入数据线MOSI。
(2)SPI的操作过程
        将数据写到SPI发送缓冲区后,在时钟信号SCK作用下,一位一位按位传输;在主机中数据从移位寄存器中自左向右发出送到从机(MOSI),同时从机中的数据自右向左发到主机(MISO),经过8个时钟周期完成1字节的发送。输入字节保留在移位寄存器中,然后从接收缓冲区中读出1字节的数据。操作过程如图所示。

(3)SPI接口的连接
        SPI 总线可在软件的控制下构成各种简单的或复杂的系统,如图所示。大多数应用场合中,使用1个MCU 作为主机,它控制数据向一个或几个从机(外围器件)传送。从机只能在主机发命令时才能接收或向主机传送数据。其数据的传输格式通常是高位(MSB)在前,低位(LSB)在后

①一主一从式的系统
        一主一从式的系统,指SPI总线上只有一个主机和一个从设备,接收和发送数据是单向的,主机 MOSI发送,从机 MOSI接收,主机MISO接收,从机 MISO 发送。主机 SCK作为同步时钟输出到从机,主机选择信号SSEL接高电平,由于只有一个从机,从机的SSEL接低电平,始终被选中。

②互为主从的系统
        对于互为主从的系统,MISO和 MOSI以及 SCK都是双向的,视发送或接收而定,SSEL电平不能固定。如果作为主机,则设置SSEL为低电平,迫使对方作为从机。

③一主多从式系统
        大部分应用场合使用比较多的是一主多从式SPI结构,SPI的所有信号都是单向的,主机的 MOSI和 SCK 都为输出,MISO为输入,主机的SSEL接高电平,作为主机使用。由于系统中有多个从机。因此使用主机的IO引脚去选择要访问的从机,即GPIO的某些引脚连接从机的SSEL端。


④多主多从系统
        对于多主多从的SPI系统,MOSI、MISO及SCK视何时作为主机使用而定,主要考虑的是SSEL选择信号的接法,即每个主/从机的 SSEL被其他主/从机选择,其他主/从机的 GPIO 引脚都参与主/从机的选择。这是最复杂的情况,实际应用系统中,尤其是嵌入式系统用得不多。


        对 SPI的操作,首先要选择让基于 SPI接口的从设备的SSEL,处于被选中状态,表示将要对该从设备进行操作,然后才能按照 SPI时序要求进行数据操作,视通信协议的不同有差异。一般的外部器件 SPI时序多使用高位在先,低位在后的传输方式,一位一位进行移位操作。操作完毕再将SSEL释放。

考点13 串行通信接口通用接口UART

(1)串行异步通信接口通用异步收发器的介绍
        串行异步通信接口通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)常用于全双工串行异步通信。所有嵌入式处理芯片内部均集成了兼容标准UART功能的组件,有的集成了多个UART,以下n表示 UART 编号,如4个UART 分别表示为UART0/UART1/UART2/UART3,用 UARTn 表示。

(2)UART的组成
        UART 由发送器、接收器、控制单元、波特率发生器等构成。

①发送器
a.发送模式
        发送器负责字符的发送,可采用先进先出(FIFO)模式,也可采用普通模式发送。发送的字符先送到发送缓冲寄存器,然后通过移位寄存器,在控制单元的作用下,通过 TXDn 引脚一位一位顺序发送出去。在 FIFO 模式下,当I个字节全部到位后才进行发送。不同嵌入式处理芯片内部设置的Ⅳ值不同。
b.发送方式
        查询发送方式时必须要等待发送缓冲器为空才能发送下一个数据。中断发送方式时当发送缓冲器已经空了才引发发送中断,因此可以直接在发送中断服务程序中继续发送下一个或下一组数据(FIFO模式)。
②接收器
        接收器负责外部送来字符的接收,可以是FIFO模式接收,也可以是普通模式接收。外部送来的字符通过RXDn 引脚进入接收移位寄存器,在控制单元的控制下,一位一位移位到接收缓冲寄存器中。在 FIFO 模式下,只有缓冲器满才引发接收中断并置位接收标志,在普通模式下,接收到一个字符就引发接收中断并置标志位。
③控制单元
        接收和发送缓冲器的状态被记录在 UART的状态寄存器如 UTRSTATn 中,通过读取其状态位即可了解当前接收或发送缓冲器的状态是否满足接收和发送条件。
        一般接收和发送缓冲器的 FIFO 字节数N是一样大小的,均可编程选择长度,如4B、8B,12B、16B、32B、64B 等。不同 ARM 芯片,FIFO 缓冲器最大字节数N不同,如ARM9的S3C2410和Cortex-M3的LPC1766为168,而ARM9的S3C2440为64B。接收和发送 FIFO 的长度由 UART FIFO 控制寄存器如 UFCONn 决定。

④波特率发生器
        波特率发生器在外部时钟的作用下,通过编程可产生所需要的波特率,最高波特率为115200b/。波特率的大小由波特率系数寄存器如 UBRDIVn 决定。
(3)UART的信息传输
①UART 字符格式
        UART 的信息传送按位进行,因此有一定的字符格式的约定。

        字符总是以起始位为开始,以停止位为结束,并且数据以低位在前、高位在后按次序传输。数据位可为5位、6位、7位和8位,由编程决定。数据位之后是校验位,可为奇校验或偶校验,也可以没有校验。起始位以逻辑0为标志,停止位以逻辑1为标志,停止位可为1位、1.5位和2位。字符格式由线路控制寄存器如 ULCONn决定。
②UART 信息接收和发送的方式
        通常情况下接收采用中断方式,发送采用查询方式。这是因为发送由程序直接控制,而接收时对方的信息是随机的。
a.在中断接收情况下,当外部有数据到接收缓冲器时,会自动置位接收就绪标志并引发UART接收中断,这时只需要在中断服务程序中读取接收的数据即可。
b.如果是查询方式接收,需要先读取并判断接收就绪标志(如接收缓冲器满标志),当已经就绪时方可读取接收数据寄存器中的值,接收完毕必须清除原来的就绪标志。
(4)UART的连接方法
        直接用 UART 进行通信仅限于板间或芯片间通信,连接方式仅需三根线TXD、RXD及 GND

考点14 通用串行总线 USB


(1)通用串行总线(UniversalSerialBUS,USB)的介绍
        USB 是一种外部总线接口标准,用于规范系统与外部设备的连接和通信,是嵌入式应用领域最常用的总线接口之一。USB总线接口支持设备的即插即用和热插拔功能。
(2)USB总线的通信方式

        USB 总线通信采用主从方式,它有一个主机,负责管理所有USB 设备的连接与删除、发起与 USB 设备的通信等。目前许多高性能的嵌入式处理芯片内部都集成了 USB 控制器,包括 USB 主机、USB 设备以及 USB OTG(On The Go)。一般情况下嵌入式系统或 PC为USB 主机,U盘、照相机等为 USB 设备,它们在主机的控制之下完成基于 USB 总线的数据传输操作。而USB OTG的作用是可以摆脱主机,直接在具有 OTG的 USB 总线上完成点对点通信,实现在没有主机的情况下从设备之间直接进行数据传送。
(3)USB的主要特点
①使用方便
        一个端口可以连接多个不同的设备,支持热插拔。
②速度快
        目前USB2.0的速度为480Mb/s,USB3.0达到5 Gb/s即 640 MB/s

③连接灵活
        连接方式既可以使用串行连接,也可以使用USB集线器(Hub)把多个USB设备连接在一起;理论上可以连接127个USB设备。每个外设线缆长度可达5m。USB能智能识别USB链上外围设备的接入或拆卸。
④独立供电

        USB 接口提供了内置电源。USB 电源能向低压设备提供5V的电源,提供500mA(USB3.0提供900mA)电流。

(4)USB 硬软件构成
①USB 硬件

        USB 硬件中的 USB 主控制器包括一个根集线器(Root Hub),它提供一个或多个 USB 下行端口,每个端口可以连接一个USB 集线器(USB Hub)或一个USB 设备,使一个 USB 端口扩展为多个端口,最多可以支持127个外部设备。目前支持 USB 的设备越来越多,键盘、鼠标、打印机、扫描仪、移动存储设备(U 盘、硬盘、光驱)等大部分外部设备均可以采用 USB总线接口。
②)USB 软件

        USB 软件主要是相关的驱动程序,包括USB 设备驱动程序、USB 驱动程序以及 USB 主控制器驱动程序。

a.USB设备驱动程序
        通过 IO请求包(IRPS)将请求发送给USB 设备。这些IRPs 初始化一个给定的传输,这个传输或者来自于个USB设备,或者是发送到USB设备。
b.USB驱动程序
        USB 驱动程序在设备设置时读取描述器以获取USB 设备的特征,并根据这些特征,在请求发生时组织数据传输。根据操作系统环境的不同,USB驱动程序可以捆绑在操作系统中,也可以以可安装的设备驱动程序形式加入到操作系统中。
c.USB主控制器驱动程序
        USB 主控制器驱动程序完成对 USB 交换的调度,并通过根 Hub 或其他 Hub 完成对交换的初始化。
(5)USB的信号编码方式
        USB 采用翻转不归零制(Non-ReturtoZero,Inverted,NRZI)编码方式对数据进行编码。NRZI的编码中,电平保持时传送逻辑1,电平翻转时传送逻辑0。
(6)USB总线的接口信号

        USB总线(1.1和2.0)有4根信号线,采用半双工差分方式,用来传送信号并提供电源。其中,D+和D-为差分信号线,传送信号,它们是一对双绞线:另两根是电源线和地线,提供电源。

考点15 高清多媒体接口HDMI

(1)高清晰度多媒体接口的介绍
①概念

        高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)是一种数字化音频/视频接口,适合影像传输,可同时传送音频和视频信号而无需在信号传送前进行数/模或者模/数转换,最高数据传输速度为 10.2Gb/s。可以用一个电缆分别连接 DVD 播放器和接收器。
②应用

        HDMI在嵌入式视频监控系统中应用广泛。目前已有多个ARM芯片内置了HDM控制器接口,如基于Codex-M3的STM32F100系列等,HDMI在STM32F100中也被称为CEC(Consumer Electronics Control)接口,即消费电子控制接口。
(2)HDMI的接口形式

        HDMI有两种连接器接口形式,一种是19针(TpeA),另一种是29针(TypeB)。29针支持双通道连接,目前还没有厂商使用。HDMI有 1.0、1.1、1.2、1.3、1.4几个版本,1.0~1.2最高传输率为5Gb/s,1.3 版本以后达 10.2Gp/s。目前支持1.2版本的设备和接口比较普遍。1.4a 加入了用于广播系统中的强制 3D 画面传输格式标准。
(3)HDMI的特点
        HDMI不仅可以满足 1080P视频显示格式的分辨率,还能支持DVDAudio 等数字音频格式,支持八声道 96kHz或立体声192kHz数码音频传送。
        HDMI的设备具有“即插即用”的特点,信号源和显示设备之间会自动进行“协商”,自动选择最合适的视频/音频格式。
(4)HDMI与DVI的比较

        与 DVI相比 HDMI 接口的体积更小,DVI的线缆长度不能超过 8m,否则将影响画面质量,而 HDMI 最远可达 15m。只要一条 HDMI缆线就可以取代最多13条模拟传输线,能有效解决家庭娱乐系统背后连线杂乱的问题。

考点16 常用简单输入设备

(1)键盘
①非编码键盘(线性键盘)
        线性键盘是指一个按键占用一个引脚,利用读该引脚的状态确定按键的状态。图所示为典型按键接口,利用 GPIO引脚连接按键。图中KEY1与R1和R7构成完整的一个按键。

a.引脚电平
        当没有键按下时,由于R7接到电源端,因此引脚GPF1为高电平(逻辑1),当KEY1按下时,由于 KEY1一端接R1,另一端接地,经过R1、R7分压,GPF1引脚的电压为0.33V,为低电平(逻辑 0)。因此程序只要读取 GPF1引脚的状态就可以知道KEY1是否被按下。KEY2~KEY6的工作原理相同,都是通过普通 IO 口确定按键动作与否。
b.引脚中断功能
        如果引脚还具备中断功能,比如S3C2410和S3C2440的GPF1~GPF6正好是EINT1~EINT6 这六个外部中断引脚,因此除了可以通过查询方式读按键之外,还可通过中断读取按键结果。将中断打开,设定边沿触发之后。只要有按键按下,立即进入相应中断,在中断服务程序中做相应的处理,无需等待按键,提高了效率。
矩阵键盘
        矩阵键盘则采用行列矩阵形式构成键盘,利用行扫描法或反转法读取按键的特征值来决定按键的结果。该键盘接口的设计方法是采用行列矩阵式键盘设计方法,即行扫描法。
a:行扫描法的键盘电路设计

        行扫描方法的键盘电路设计如图所示,采用四根I/O引脚 GPG4~GPG7作为行扫描输出,四根 IO引脚 GPFO~GPF3 作为输入检测,同时这四个输入引脚接一四输入与门(如 74HC21/74AS21 等),与门输出接外部中断2即 EXINT2引脚。这样可以采用中断方式,读取键盘值(0~F),在中断服务程序中判断GPFO~GPF3哪个引脚为低电平,然后结合输出扫描的行号即可合成对应的键值。

b.键盘去抖动

        不论是何种方式,只要不采用专用键盘接口,都必须考虑键盘去抖动问题。读取键盘的程序应采用延时消抖的方法来消除键盘抖动,这也是最为常用的一种方式,即确定有按键按下后,延时几十ms以上(一般抖动时间为5~30 ms),再去读键,看是否仍有键按下,如果是,则确认是真正有键被按下,否则视为干扰信号所致,不予理睬。

(2)触摸屏
①电阻式触摸屏
a.电阻式触摸屏的特点

        电阻式触摸屏是一种电阻传感器,它将矩形区域中触摸点(X,Y)的物理位置转换为代表 X 坐标和 Y 坐标的电压。这种屏幕可以用四线、五线、七线或八线来产生屏幕偏置电压,同时读回触摸点的电压。电阻式触摸屏结构简单,价格低。用专用硬笔写字的触摸屏属于电阻式。
b:电阻式触摸屏的原理

        电阻技术触摸屏的最基本的原理是利用压力感应进行控制。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层,它的内表面也涂有一层涂层,它们之间有许多细小的(小于11000英寸)的透明隔离点把两层导电层隔开以绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出X、Y,的位置,再根据位置确定动作。
c.电阻式触摸屏的接口
        电阻式触摸屏接口通常利用专用的电阻触摸屏转换芯片如T的 ADS7843,它是一种四线同步串行 SPI接口的 12位 ADC,目的是将X、Y,对应的模拟电压变换成数字量,变换的结果通过同步串行接口传输给处理器。基于 ADS7843的四线触摸屏接口如图所示,四线包括 X+、Y+、X-、Y-,同步串行通信接口 SPI信号有 DCLK、DIN、DOUT、CS、PENIRO等,其中PENIRO为触摸屏中断引脚。

        图中ARM9S3C2410利用SPI总线与ADS7843相连,片选用GPG12,触摸中断用EINT5(GPF5)。当有触摸动作时,引发外部中断 EINT5,在中断服务程序中通过 SPIO 总线直接读取 X、Y的坐标。要注意的是,当触摸屏的分辨率与 LCD 分辨率不一致时,要进行一定的变换。
②电容式触摸屏
a.电容式触摸屏的原理

        电容式触摸屏在触摸屏四边均镀上狭长的电极,在导电体内形成一个低电压交流电场。当触摸屏幕时,由于人体电场,手指与导体层间会形成一个耦合电容,四边电极发出的电流会流向触点。对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。这个电流分别从触摸屏的四角上的电极中流出,并且四个电极流出的电流大小与手指到四角的距离成正比,控制器通过对这四个电流比值的精确计算,得出触摸点的坐标位置。
b.电容式触摸屏的特点
        第一,电容式触摸屏结构复杂,价格高。
        第二,,一般电容式触摸屏与ARM处理芯片采用USB或IC总线方式连接

考点17 常用简单输出设备

(1)LED发光二极管及数码管
①发光二极管
a.LED发光二极管的作用
        LED 发光二极管采用常亮、常灭、闪亮(包括快闪和慢闪)等以指示系统不同的运行状态,直观且节约成本。
b.LED发光二极管与ARM芯片的连接
        LED 发光二极管与 ARM 芯片的连接仅需要一根 GPIO引脚,如 GPF3,但绝对不能直接把引脚连接到发光二极管上,因为通常 ARM 芯片 GPIO引脚提供的电流是有限的,不能直接驱动发光设备,因此要加驱动电路。
c:LED发光二极管连接 GPIO 的发光原理

        图中为利用GPIO 引脚 GPF3 来连接发光管的原理图,U1可以是专用驱动电路也可以用三极管搭建而成,驱动可以是正向驱动也可以反向驱动,图中U1为反向驱动。GPIO 引脚为高电平时,通过 U1反向后输出 0,使LED的阴极电位为 0,发光管LED通过12的电阻R上拉到电源端,这样LED 两端有电位差,并有电流流过而发光;GPIO输出0,反向后输出1,结果LED的阴极为接近电源电压,从而没有电流流过而不发光。图中R为限流电阻,可根据实际LED 发光二极管的发光电流要求选择一定的电阻值,普通发光二极管电流为5~20mA 时可正常发光,电压1.2V左右,电流大则亮度高,但寿命短。

②LED 数码管
a.LED 数码管的作用
        需要显示数字信息时还经常使用几只8段或7段LED数码管作为输出设备。八段数码管可以显示0~9十个数字,也可以带小数点显示这十个数字,也可显示 A~F等简单字母

b.LED数码管与ARM 芯片的连接
        LED 数码管如图所示,有八个段,a、b、c、d、e、f、g、dp。数码管有共阳和共阴两种接法,共阳即把 LED 发光管的所有阳极连接在一起,共阴就是把所有 LED 发光管的阴极连接在一起。数码管与ARM 处理芯片的接口与LED发光管完全类似,只是一个数码管需要八个段的驱动,因此如果直接连接处理器的话,需要八个GPIO引脚,每个引脚也同样需要加驱动电路。

(2)LCD 显示设备
①LCD 显示设备的分类
        LCD 显示设备按其完整程度可分为LCD显示屏、LCD显示模块(LCM)以及LCD显示器三种类型
a.LCD 显示屏
        LCD显示屏自身不带控制器,没有驱动电路,仅仅是显示器件(屏),价格最低。

b.LCD 显示模块
        LCD 显示模块内置了LCD 显示屏、控制器和驱动模块。这类显示模块有字符型,有图形点阵型,还有带汉字库的图形点阵型等。
c:LCD 显示器
        LCD显示器,除了具备显示屏外还包括驱动器、控制器以及外壳,是最完备的LCD显示设备,其价格也是最高的。
②LCD 显示设备的适用场景
a.嵌入式系统中使用比较多的是LCD 显示屏和 LCD 显示模块;如果嵌入式处理芯片内部已集成了LCD 控制器,则可以直接选择 LCD 显示屏,如果内部没有集成 LCD 控制器,则可选择 LCD 显示模块,通过 GPIO 以并行方式连接LCD 显示模块或通过串行方式如 SPI或PC连接 LCD显示模块(不同模块通信方式不同)。

b.通用计算机中使用的LCD显示器,包括显示屏、驱动电路、接口、电源和外壳,是完整的显示设备。它的接口有相应的标准,主要包括 VGA、DVI两种主要形式,现在又开始流行HDMI接口。
③DVI接口
a.规格
        DVI是一个 24针的接插件,有多种规格,分为DVI-A(仅用于传输模拟信号,其功能和 D-SUB 完全一样)、DVI-D(仅传送数字信号)和DVI-(模拟和数字信号均可传送),是专为LCD显示器和投影仪这样的数字显示设备设计的。
b.作用

        使用 DVI接口,计算机可直接以数字信号的形式将显示信息传送到显示设备中,避免了D/A、A/D 两次转换过程,显示的图像质量更好。DVI接口实现了真正的即插即用和热插拔,免除了在连接过程中需关闭计算机和显示设备的麻烦。所以,现在很多液晶显示器都采用该接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Perfectly Clear WorkBench中文绿色版,让每一张照片都完美无瑕

软件简介 你是否曾经为了一张不完美的照片而感到遗憾?是否曾经因为照片中的小瑕疵而不得不花费大量时间进行后期处理?现在,有了Perfectly Clear WorkBench,这些问题都将迎刃而解。作为全球领先的智能图像校正技术商推出的图像清晰…

【C++高阶数据结构】红黑树:全面剖析与深度学习

目录 🚀 前言:红黑树与AVL树的比较一: 🔥 红黑树的概念二: 🔥 红黑树的性质 三: 🔥 红黑树节点的定义和结构🚀 3.1 基本元素🚀 3.2 节点颜色🚀 3.…

Java中static静态变量--继承等相关知识

目录 static 继承: 继承的特点: 案例:自己设计一个继承体系练习: 设计思想: 代码: 子类到底能继承父类的哪些类容? 成员变量内存的继承情况: 成员方法的内存继承情况&#x…

项目经理的开源工具指南:优化您的选择过程

国内外主流的10款开源项目管理系统对比:PingCode、Worktile、禅道、Teambition、Gogs、码云 Gitee、Jira、Redmine、ProjectLibre、OpenProject。 在选择合适的开源项目管理系统时,很多团队面临诸多挑战:功能是否全面?易用性如何&…

C++初学(7)

7.1、字符串 字符串是存储在内存的连续字节中的一系列字符。C处理字符串的方式有两种,第一种是来自C语言,常被称为C风格字符串,另一种则是基于string类库的方法。 存储在连续字节中的一系列字符意味着可以将字符存储在char数组中&#xff0…

Mecanim Animation System

动画系统简介 Unity 有一个非常丰富而又复杂的动画系统,官方称其为Mecanim。该系统具有以下功能: 支持从外部导入动画剪辑,如:fbx、mb | ma(Autodesk maya 原件)、.max(3ds Max原件&#xff09…

5.仓颉编程_数组使用与异常捕捉

5.仓颉编程_数组使用与异常捕捉 数字数组与字符串数组 import std.console.*main() {var qty 10var zero2 0var array [1,2,3] //数组var str_arr:Array<String> [aa,bb]try {//qty qty / zero2//println(qty)println(str_arr[0])println(array[0])// println(arr…

rhce THE homework of first

ssh远程免密登录成功 下载httpd和nginx 关闭防火墙 查看selinux的状态 为服务器配置ip 填充网站的内容 添加服务器配置 将文本写入网站

2024电赛H题参考方案(+视频演示)——自动行使小车

目录 一、题目要求 二、参考资源获取 三、参考方案 1、环境搭建及工程移植 2、移植MPU6050模块 3、移植TB6612电机驱动模块 4、整体控制方案视频演示 总结 一、题目要求 小编自认为&#xff1a;此次H题属于控制类题目&#xff0c;相较于往年较为简单&#xff0c;功能也算单一&a…

深入解析 GZIP 压缩传输:优化网络性能的利器

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

MATLAB中“varargin”的作用

varargin是什么&#xff1f; 在MATLAB中&#xff0c;varargin是一个特殊的变量&#xff0c;用于接收函数输入参数中的可变数量的参数。它允许用户在调用函数时传递不确定数量的参数。 varargin的本质是一个包含了所有可变参数的cell数组。在函数内部&#xff0c;可以使用cell…

dpdk 响应icmp请求(Echo or Echo Reply Message)

注&#xff1a;对于"Echo or Echo Reply Message"类型的icmp报文&#xff0c;响应报文的Identiy和Sequence Number的值与请求报文的这两个字段的值要相同。 Identifier&#xff08;标识符&#xff09;字段通常由发送方设置&#xff0c;并被用于将ICMP请求与相应的回复…

Lombok注解之@SneakyThrows作用

Lombok注解之SneakyThrows作用 读法 [ˈsniːki] [θroʊz] 悄悄的 抛出顾名思义&#xff0c;它能够自动偷摸的为咱们的代码生成一个try…catch块&#xff0c;并把异常向上抛出来。 使用 SneakyThrows的使用范围&#xff1a; 只能作用在方法和构造函数之上。从源码就可以…

【C++】选择结构-多条件if语句

多条件if语句格式为 if(第一个条件) else if(若第一个条件未满足&#xff0c;执行此条件) {第二个条件满足执行此操作} else if(若第二个条件未满足&#xff0c;执行此条件) {第三个条件满足执行此操作} ...... else{若所有条件都不满足执行此操作} 下面是一个实例 #inc…

app逆向实战:某咨询6.0.4.4版本signature等参数抓包与破解

本篇博客旨在记录学习过程&#xff0c;不可用于商用等其它途径 入口 密码登录接口 抓包 根据抓包结果得知动态参数是client_timestamp&#xff0c;keyword&#xff0c;client_session&#xff0c;sig&#xff0c;sigTime&#xff0c;cursor 初步观察得出以下结论&#xff…

负债了,打死也别干的六件事!逾期了,六句谎言千万别信!

负债这事儿&#xff0c;真是一言难尽&#xff0c;稍不留神&#xff0c;就可能让情况雪上加霜。今儿咱们聊聊&#xff0c;负债后那几件打死也别干的几件事&#xff0c;尤其是针对还没有逾期的朋友们&#xff0c;免得后悔莫及。 首先&#xff0c;千万别动歪脑筋&#xff0c;拿公款…

深入剖析:GaussDB与MySQL在COUNT查询中的并行化技术

引言 数据库查询性能优化是数据库管理和开发中的一个重要议题。在处理大数据量的COUNT查询时&#xff0c;传统的单线程处理方式可能无法满足现代应用的性能需求。GaussDB(for MySQL)和MySQL作为流行的数据库系统&#xff0c;它们在并行查询优化方面有着各自的策略和技术。本文…

【C++】C++的类型的转换

目录 C语言中的类型转换 C中的类型转换 C强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast C语言中的类型转换 C语言中又两种类型转换&#xff1a;&#xff08;强制&#xff09;显示类型转换和隐式类型转换。 &#xff08;强制&#xff09;显示类型…

多线程与并发思想

问题分析 设计并发程序的目的就是为了使程序运行得更快&#xff08;时间就是金钱、生命&#xff09;&#xff0c;提高软件的性能。并发程序之所以能快&#xff0c;就在于这个“并”字&#xff0c;因为程序能并发(单核)或并行(多核、多CPU)执行&#xff0c;当然能快。这就好比工…

修改linux服务器上的mariadb/mysql数据库的密码

文章目录 一、查看数据库的状态二、修改密码 可能我们在最初安装数据库时没有设置密码或者已经设置了但是又想修改另一个密码&#xff0c;可以这样操作来修改我们的密码。 以数据库 mariadb 为例。 一、查看数据库的状态 使用命令 systemctl is-active mariadb 查看当前数据库…