【电子基础】总结·嵌入式硬件基础

嵌入式系统硬件基础

By 成鹏致远

 


第一章 常用硬件

——>嵌入式系统常用的硬件器件,主要包括分立器件、光电半导体、逻辑IC、模拟IC以及存储器共五大类

——>分立器件主要有:二极管、三极管、电阻、电容、电感以及场效应管等

——>二极管的主要特性是单向导电性

——>二极管按其用途可分为:整流二极管、稳压二极管、开关二极管、发光二极管等

——>整流二级管是一种将交流电转变为直流电的半导体器件,主要用于各种低频整流电路

——>稳压二极管是利用PN结反向击穿特性所表现出的稳压性能制成的器件,在电路中起稳定电压作用

——>在脉冲数字电路中,用于接通和关断电路的二极管叫开关二极管,它的特点是反向恢复时间短,能满足高频和超高频应用的需要

——>发光二极管,能直接将电能转变成光能的发光显示器件,长脚为正,短脚为负

——>三极管,是一种控制电流的半导体器件,主要作用是把微弱信号放大成幅度值较大的电信号

——>三极管的三种工作状态

1.截止状态当加在三极管发射极的电压小于PN结的导通电压,基极电流为零,集电极电流和发射极电流都为零

2.放大状态当加在三极管发射结的电压大于PN结的导通电压,并处于某一恰当的值,这时基极电流对集电极电流起着控制作用

3.饱和状态:当加在三极管发射结的电压大于PN结的导通电压,并当基极电流增大到一定程度,集电极与发射极之间的电压很小,集电极和发射极之间相当于开关的导通状态

——>电阻:阻值越大的电阻对电流阻碍作用越大,电流通过它时,电压下降也越多。电阻主要应用于限流、分流、降压、分压、负载与电容配合作滤波器及阻匹配等

——>0电阻主要功能

1.做为跳线使用

2.在数字和模拟等混合电路中使用

3.做保险丝用

4.为调试预留的位置

5.作为配置电路使用

——>电容由两个金属级,中间夹有绝缘材料(介质)构成。电容在电路中具有隔断直流电,通过交流电的作用,常用于级间耦合、滤波、去耦、旁路及信号调谐

——>电感:电感是用线圈制作的,它的作用是通直流阻交流、滤波、振荡、延迟等

——>线圈圈数越多,绕制的线圈越密集,电感量就越大;有磁心的线圈比无磁心的线圈电感量大;磁心导磁率越大的线圈,电感量也越大

——>场效应管:也称为单极型晶体管,是电压控制元件,而晶体三极管是电流控制元件

——>在只允许从信号源取较少电流的情况下,应选用场效应管;而在信号电压较低、又允许从信号源取较多电流的条件下,应选用晶体三极管

——>场效应管作用

1.可应用于放大

2.可作电子开关

3.可作可变电阻

4.可用作恒流源

——>译码器:多输入、多输出的电路。从输入码字到输出码字之间有一对一的映射关系

——>选择器:多路选择器又称数据选择器或多路开关,常用MUX表示。它是一种多路输入、单路输出的组合逻辑电路

——>多路选择器的构成思想相当于一个单刀多掷开关

——>锁存器:锁存,就是把信号暂存以维持某种电*状态。所谓锁存器,就是输出端的状态不会随输入的状态变化而变化,仅在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号到来时才改变

——>锁存器的最主要作用是缓存其次完成高速的控制其与慢速的外设的不同步问题再其次是解决驱动的问题最后是解决一个I/O口既能输出也能输入的问题

——>如果单片机的总线接口要作两种用途,就要用两个锁存器

——>微处理器MPU:微处理器是将计算机所需的运算、控制功能集成到一块芯片上的lSI(大规模集成电路)

——>微控制器MCU:微控制器是将除了执行运算及控制的MPU功能以外,还有存储功能、输入输出控制功能集成在一块芯片LSI上的器件

——>数字信号处理器DSP:DSP是设计用来执行算术密集型算法的专用处理器;DSP处理器通常应用于音频、视频或图像的处理,另外在通信、雷达、声纳系统,以及生物医学方面也有着很广泛的应用

——>DSP是将数字信号处理加以特殊化的处理器,重要特征有:

1.拥有高速乘法器

2.具有哈佛型结构

3.将程序存储器和数据存储器进行分享、独立

4.拥有高速化数据地址计算单元

——>模拟IC:模拟IC是将模拟信号处理的数字信号处理集成在一起的IC,主要分为通用模拟IC和专用模拟IC两大类

——>存储器:半导体存储器是具备可以储存图像数据或文字数据、程序等信息,在必要时取出的功能的器件

 

 


第二章 电源

——>对于嵌入式系统而言,交流电或者很高电压的直流电都无法直接使用在这样的数字系统之中。因此,为其提供电源,我们必须使用电压较低的直流电

——>如果你的嵌入式系统不需要考虑便捷性,也不会要求低功耗的话,选择使用插座直接供电便是最佳的供电方式之一

——>对于一部分便捷性能要求较高的嵌入式系统而言,使用电池作为系统电源合适

——>稳压器:稳压器即是稳定电压的一种器件

——>使用稳压器不仅可以为系统提供恒压电源,还可以有效去除电源噪声,给从外部电源供电的嵌入式系统提供一定程度的保护和隔离

——>是交流稳定器,还是直流稳压器,要看稳压器的输出电压是交流还是直流

——>变压器、整流器、滤波器通常被看成是稳压器的一部分

——>线性稳压器体积小、便宜、噪声低且非常易于使用

——>电容有利于去除电源里的瞬间短时脉冲波形干扰

 

 


 

第三章 最小系统

——>在测试一块新板时,也是先只焊最小系统部分,确保晶振能振起来,芯片可以工作了,然后再焊各种接口模块并一一测试,这样有利于异常的定位

——>最小系统:是指用最小的元件组成的单片机可以工作的系统,是最基本的、也是小得不能再活力掉任何部分的系统。

——>一般单片机的最小系统主要包括:MCU、电源电路、晶振电路、复位电路、写入电路以及指示灯

——>由于系统上电是会产生交流电波动,电源与地之间一般要加滤波电容将这些波动传入GND

——>晶振电路为MCU提供时钟信号,即芯片内各种微操作的时间基准,分为有源晶振(oscillator)和无源晶振(crystal)

——>无源晶振需要借助于时钟电路才能产生振荡信号,自身无法振荡起来

——>PLL电路PLL电路兼有频率放大和信号提纯的功能因此,系统可以以较低的外部时钟信号获得较高的工作频率

——>复位电路系统复位的用途就是错误恢复

——>四种事件可以触发系统复位

1.外部复位

2.加电复位

3.计算机工作正常复位,为了防止定时器过期,用户程序必须周期地给看门狗喂食,以清除COP计数器

4.时钟监控复位

 

 


第四章 外围设备

——>通过I/O口控制外部设备绝不像有些读者想像的去驱动一组发光二极管那么简单。在单片机的后向通道控制系统中,常用断电器控制器件功率

——>测量和控制是单片机系统一个非常重要的应用领域。典型的应用模式是通过传感器采集现场的微弱信号参数,经过数据处理后再通过A/D模数转换送到单片机系统进行各种工业调节和控制。

——>在单片机系统中,与传感器的接口通常称之为前向通道接口

——>继电器:单片机应用中,开关量都通过单片机I/O口或扩展I/O口输出来的,这些I/O口的驱动电流往往不足以驱动一些功率开关往往需要用到一些特殊的设备来控制大功率的器件

——>继电器一种器件,它们响应小的电流或者电压变化,激活电路中的开关或者其他设备。可以用于远程地切换信号或电源

——>继电器分为机械继电器和固态继电器

——>机械继电器驱动器的选择要根据继电器的吸合电流而定,即驱动器的电流一定要大于继电器的吸合电流。继电器的选择是根据的需要,结合负载电流,负载功率选择合适的继电器

——>固态继电器固态继电器是一种新型的无触点电子继电器,输入端只需极小的控制电流,输出则用双向的晶闸管控制负载,输入、输出均通过内部光电耦合器隔离;具有外界元器件少、控制电压低、电流小、搞干扰性强、易于与单片机接口的特点

——>继电器的实际使用中,我们需要注意的关键问题主要有两点:一是功率驱动,二是抗干扰

——>A/D转换器传感器将自然界获得的模拟信号转换成MCU能识别的电信号也就是我们常说的AD转换;除了要选合适的传感器以外,还要将传感器采集来的微弱的信号放大

——>设计软件的时候要注意:片选(CS)脉冲要在每次的开始处,或者在转换时序的开始处变化一次后保持CS为低,直到时序结束

——>信号量可以分为模拟信号量和数字信号量。模拟信号量是连续变化的信号,在自然界中,存在着大量的信号量

——>传感器能够感知外界的信息并能按照一定的规律将这些转换成可用的信号装置。简单地说就是一种将物理量或化学量转化成可利用的电信号器件

——>MCU相当于人的大脑,传感器就相当于人的各式各样的感觉器官。传感器将从自然界中获取到的信息传给大脑。然后大脑进行分析、判断、决断

——>自然界中物体只要它本身温度高于绝对零度又低于500度,就会成为红外线辐射源;许多物质对可见光是透明体,但对有些红外光是不透明体,反过来也一样。

——>红外传感器红外传感器主要用来检测是否有障碍物,一般由两只红外管构成的,一只发射,一只接收

——>灰度传感器所谓灰度也可认为是亮度,简单的说就是色彩的深浅程度根据反射光的强度,可以判断出物体的灰级程度

——>亮度传感器亮度传感器可以是一个简单的光敏电阻,其原理与热敏电阻类似,阻值随着外界亮度的不同而发生变化使用时也必须事先确定阻值和亮度的对应关系;只要这个传感器可以“看到”LED,就表示一切正常,一旦光被挡住,你就可以知道有人或别的物体从传感器和LED之间经过

——>超声波传感器按其工作原理可分为压电式、磁致伸缩式、电磁式等,以压电式最为常用

——>温度传感器温度传感器的应用范围很广,最显著的例子就是环境监控或气象站,不过也可以拿来感应室内的温度,并对加热或制冷系统进行适当的控制,将其和数据记录仪相连,你就拥有一个温度记录器

——>最常用的电阻温度传感器,电阻的阻值随着温度的变化而变化

——>根据原理的不同主要分为半导体热电偶传感器、PN结温度传感器和集成温度传感器

——>热电偶传感器要原理是:两种不同的材质连在一起,对这个连接点进行加热,在它们的不加热部位就会出现电位差,而这种电位差与它们在不加热点的温度和它们的材质有关

——>PN结温度传感器利用半导体材料和器件的某些性能参数的温度依赖性,实现对温度的检测,控制和补偿的功能

——>随着外界温度的不同,热敏电阻的阻值会发生相应变化,这时输入MCU的A/D转换通道的电压值也跟着发生变化;热敏电阻只能作为精度不高的温度测试工具

——>温度传感器最简单的温度传感器为湿敏电阻或者湿敏电阻

——>湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空气中的水蒸气吸附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量温度。而湿敏电容一般是高分子薄膜电容制成的,当环境发生改变时,湿敏电容的介电常数发生变化,使其电容量也发生变化,其电容变化量与相对温度成正比

——>磁卡(Magnetic Card)是一种卡片状的磁性记录介质,与各种读卡器配合作用

——>以前在磁卡上应用的安全技术,如水印技术、全息技术、精密磁记录技术等,随着时间的推移其相对安全性已大为降低

——>IC卡(芯片型智能卡的一种)则是通过芯片上写有的密钥参数进行识别的。IC卡在使用时,必须要通过与读写设备间特有的双向密钥认证。

——>把适合的存储卡当作一个可移动存储器,从而可以通过读卡器读写存储卡

——>按所兼容存储卡的各类分可以分为CF卡读卡器、SM卡读卡吕、PCMICA卡读卡器以及记忆棒读写器等

——>液晶显示器(Liquid Crystal Display,LCD)基本特点

1.低电压微功耗,液晶显示器件为电池供电的电子设备的首先显示器件

2.*板型结构

3.使用寿命长

4.被动显式。对LCD来说,环境光线越强显示内容越清晰。人眼所感受的外部信息90%以上是外部物体对光的反射,而不是物体本身发光,所以被动显式更适合人的视觉习惯,更不容易引起疲劳。这在信息量大、显示密度高、观看时间长的场合显得更重要

5.显示信息量大且易于彩色化

6.无电磁辐射

——>从程序员角度来说,LCD的显示接口与编程是面向HD44780的,只在了解HD44780的编程结构即可进行LCD的显示编程

——>键盘是由若干个热键组成的开关矩阵,它是最简单的MCU的数字量输入设备。键盘的基本电路为接触开关

——>独立方式:独立方式是指将每个按键按一对一的方式直接拉到I/O输入线上;读键值时直接读I/O口,每一个键的状态通过读入键值来反映,所以也称这种方式为一维直读方式,按习惯称为独立式;这种方式查键实现简单,但占用I/O资源较多,一般在键的数量较少时候使用

——>矩阵方式:矩阵方式是用n条I/O线组成行输入口,m条I/O线组成列输出口,在行列线的每一个交点上设置一个按键;这种方式占用I/O线较少,在实际应用系统中采用较多

——>设计键盘的时候,通常小于4个按键的应用,可以使用独立式接口。如果多于4个按键,为了减少处理器的I/O端口的占用,可以使用矩阵式键盘

——>键的识别若键盘上闭合键的识别由专用硬件实现,称为编码键盘;而靠软件实现的称为未编码键盘

——>识别是否有键被按下,主要有查询法、定时扫描法与中断法等。而要识别键盘上哪个键被按下主要有行扫描法与行反转法

——>抖动问题:当手按下键时,会出现所按的键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况,当释放一个按键时也会出现类似情况,这就是抖动问题

——>在软件上,解决抖动的方法通常是延迟等待抖动的消失或多次识别判定

——>重键问题所谓重键问题就是有两个及两个以上按键同时处于闭合状态的处理问题,在软件上,处理重键问题通常有连锁法与巡回法

——>当键盘上某一个闭合时,则该所对应的行线与列线短路

——>把列线n1~n4拉到MCU的输入口,行线m1~m4拉到MCU的输出口

——>逐行逐列检查键盘状态的过程称为对键盘的一次扫描。

——>CPU可随时响应键输入请求。也可以采用中断方式,当键盘上有键闭合时,向CPU请求中断

 

 


第五章 总线

——>异步传输标准接口。通常RS-232接口以9个接脚(DB-9)或是25个接脚(DB-25)的型态出现,一般个人计算机上会有两级RS-232接口,分别称为COM1和COM2;RS是英文“推荐标准”的缩写

——>RS232C传输的数据位的电压电*是相对于本地的地,它的高电*是负电压,而低电*是正电压

——>目前几乎所有计算机上的串行口都是9芯接口

——>精简的RS-232通信,通信时仅使用3根线:RxD(接收线)、TxD(发送线)和GND(地线)

——>若用RS-232C总线进行串行通信,则需外接电路实现电*转换

——>RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等优点使其成为首选的串行接口

——>USB是一种高速总线。设备能够自动向计算机主机表明身份,而且可以热切换

——>USB网络的基本拓扑结构是星型的,一个USB系统由一个或多个USB设备(外设)、一个或多个集线器(hub)和一个主机(控制计算机)组成。计算机主机有时又叫做主控制器,在一个USB网络中只能有一个主机;集线器用来扩展USB网络

——>每个USB连接头内拥有4个引脚:其中2个用作传递差动数据,另2个为USB设备提供电源

——>LIN(Local Interconnect Network 局域互连网络)是一种低成本的总线网络。主要用于汽车中某些对通信速率需要不高的场合,能够解决汽车内因导线过多所带来的许多问题

——>RJ45接口(又称水晶头)常用于数据传输,共有八芯做成

——>做水晶头时,使水晶头的弹片朝外,入线口朝下,从左到右,遵循上面的线序,充分插入线,然后用驳线钳夹一下,就可以了

——>成对扭绞的作用是尽可能减少电磁辐射与外部电磁干扰的影响

——>在数据的传输中,为了减少和抑制外界的干扰,发送和接收的数据均以差分方式传输,即每一对线互相扭在一起传输一路差分信号(这也是双绞线名称的由来)

——>所谓的差分信号:是指一根线以正电*方式传输,另外一根线以负电*方式传输同一信号,当线路中出现干扰信号时,其对两根线的影响是相同的,因而在接收端还原差分信号时就可以屏蔽掉该干扰信号

——>每对线进行双绞的目的是为了抑制干扰信号,提高传输质量;因而我们的制作双绞线的接头时,一定不要将传输差分信号的一对线分开,否则将大大影响网络的传输质量

 

 


第六章 规范

——>从本质上讲,在一个电路原理图上有两类对象:元件和网标(net)。网标表明元件之间是如何连接的。有元件名和元件类型;注意:在电路原理图在元件的元件类型可省,但元件名不能省略并且不可重名

——>对同种类型的元件命名时常用的做法是冠以同前缀。例如,电阻的前缀为R,电容的前缀为C,电感的前缀为L,二极管的前缀为D,晶体管为O,连接器和跳线器为J,半导体的前缀通常为U,但也常用元件名来直接命名

——>电源部分:在计算电源总功率时要考虑一定的余量,可取2倍;考虑使用电源模块还是外接电源的方式提供工作电源

——>开关量输入:开关量输入一定要保证高低电压分明,理想情况下高电*就是电源电压,低电*就是地的电*

——>开关量输出:开关量输出的基本原则是保证输出高电*接*电源电压,低电*接*在电*

——>绘制原理图的基本要求

1.A4纸

2.不使用网格,底色为白色

3.每个模块独立画出,用虚线框框好,分清输入输出,左侧输入右侧输出

4.每个模块要标注模块名

5.MCU最小系统不能做任何更改,各系统中的相同MCU的最小系统保持一致

6.以MCU为中心扩展其它模块,形成分级结构

7.对外接口的设计,尽可能采用防止反插的接口

8.每个电路板都应该设计有电源指示灯,运行指示灯,故障指示灯等表达电路的运行状态

9.电路绘制完成后,不要忘记要填写版权框中的有关信息

——>PCB(Printed Circuit Board),中文名称为印刷线路板,简称印制板

——>电路板最佳形状是矩形,长宽比为3:2或4:3

——>元件封装:是指实际的电子元器件或集成电路的外型尺寸、管脚的直径及管脚的距离等,它是使元件引脚和印刷电路板上的焊盘一致的保证

——>元件放置的顺序:先放置与结构有紧密配合的固定位置的元器件;接着放置线路上的特殊元件和大的元器件;最后放置小器件

——>*放:当电路元件数量不多,而且电路板尺寸较大的情况下,一般是采用*放比较好

——>竖放:当电路元件较多时,而且电路板尺寸不大的情况下,一般采用竖放

——>集成电路座应该尽可能将定位槽放置方向一致

 

 


6.4 面向硬件构件底层驱动程序要求

——>独立编程的实体就是硬件构件,硬件构件分为内部构件和外部构件,内部构件如系统初始化、定时器、Flash、串口等,外部构件如LED、形状、按钮、电机等

——>对每个硬件构件编写独立的驱动程序:每个构件对应一个头文件和源文件,如果构件是外部构件,则要在头文件中用宏定义构件接在哪个脚上,头文件只声明供外部调用的功能函数;也就是说,其他人只要看头文件函数声明就知道如何使用此构件而无需去看源文件去阅读代码

——>一般函数的命名规则是:构件_功能

——>如果一个函数只供构件功能函数内部调用,则此函数在源文件里面声明和实现,不出现在头文件里,并声明为static函数

——>如果一个全局变量只供某模块使用,则可以把此全局变量定义为static

——>模块函数就实现此模块要实现的功能,模块内部之间不能相互调用;可以通过返回值告诉高端,让高端根据返回值来决定是否调用串口子程序

——>返回值问题:如果只返回一个基本类型的返回值,则用返回值返回此值也可;如果返回一个复杂类型的返回值,比如一个struct结构体,则用返回值返回的话要进行复制,开销很大,此时用传地址方式返回;如果返回的值很多,可以把这些值定义在一个struct里面,通过指针形式返回

——>函数命名要合理,所有的函数代码编写方式有一个统一的风格,注意对齐

——>尽量用效率高的方式编码,比如乘除可以用移位来实现

——>驱动程序一般在两个地方调用:一个是main函数,一个是中断处理函数

——>变量分为全局变量、堆栈变量、函数内静态变量、文件内静态变量和寄存器变量

——>寄存器变量当某个变量频繁使用很多次的时候为了避免每次从内在中读它,而把它放在寄存器中来改变性能

——>如果一个变量只有函数中使用,并且要一直存在,则命名为函数内静态变量,如果一个函数只在某个源文件中使用,此源文件各个函数通过此变量来通信,则此变量命名为文件内静态变量

——>全局变量前面加前缀g,静态变量前面加前缀s,寄存器变量前面加前缀r;不管使用何种命名写法,全局要统一一致,不能两种混合使用

 

 


6.5 硬件驱动模块的测试要求

——>对于已经设计好的驱动模块,必须经过严格的测试后才能使用;同时,测试过程要以目录的形式保留下来,用于备案

——>对于有可视结果的模块先行测试

——>测试只能证明错误的存在,而不能证明错误的不存在

——>不能简单的直接在无可视执行结果的模块的测试中直接修改

——>用于测试驱动模块的工程中,必须要有一个用于记录测试信息的文本文件,记录的内容包括测试人,测试时间、测试结果及意见等相关信息

——>通过把测试用例放到静态变量中,然后不断修改静态变量,实现了自动对测试用例的覆盖测试

——>可使用辅助测试工具测试

 

本文出自 “成鹏致远” 博客,请务必保留此出处http://infohacker.blog.51cto.com/6751239/1155418

posted @ 2013-06-27 17:35  Leo.cheng  阅读(1311)  评论(0编辑  收藏  举报