嵌入式硬件设计必备基础知识
By greg 发表于 2006-6-4 14:56:53
一、嵌入式计算机体系结构
计算机能用来干什么?它必须完成什么任务?它是如何实现与人和其他系统交互的?这决定了这台计算机的功能,进而决定了其体系结
构、存储器和 I/O。
计算机系统大致分为两类。第一类就是您目前手上用的计算机,最常见的台式计算机。再就是,您最近有没有用全自动洗衣机洗衣服,
把衣服往里面一扔(别忘了放洗衣粉,我就常常忘),只消按一个键便高枕无忧了,这里面就有一个第二类计算机:嵌入式计算机,这
种计算机往往作为控制和/或监控目的的而集成到另外的系统中(比如洗衣机)。那这样说来我们身边岂不满是计算机?电视
机、DVD、遥控器、手机、甚至玩具?就是他们!
一台专用的台式计算机(不一定是 PC)有很大的主内存来支持操作系统、应用程序和数据,以及一个大容量存储设备(硬盘、DVD/C
D-ROM 等)的接口。这种台式计算机带有各种各样的 I/O 设备以便用户输入(键盘、鼠标和话筒)、输出(显示器及耳机)以及互联
(网络和外设)。快速的处理器需要一个系统管理器来监视其核心温度、供给电压以及进行系统重启。
大规模嵌入式计算机也可能采用上述的形式。例如,它可能作为一个网络路由器或网关从而需要一个或多个网络接口、大容量内存以及
快速操作。它们也可能需要某种形式的用户界面来作为嵌入式应用的一部分。或者在许多情况下,它们也可能只是专用于某一特定任务
的常规计算机。因此,单就硬件而言,许多高性能嵌入式系统与常规台式机没有什么大的差别。
较小的嵌入式系统使用微控制器作为它们的处理器,这样做的优点在于处理器可以将很多的计算机功能包含在一个芯片上。
微控制器至少有一个 CPU,一个小容量的内部存储器(ROM 和/或 RAM)以及作为子系统模块在微控制器内部实现的某种 I/O。这些子
系统为处理器提供了附加功能,许多处理器通常都有这种子系统。你经常可以在微处理器里发现这些子系统,这些子系统最普通的 I/O
是数字 I/O,它们都是端口,可以以引脚为基础,由软件配置成数字输入或输出。作为数字输入,这些端口可以用来读取开关或按钮的
状态以及读取另外一个设备的数字状态;作为数字输出,它们可以用来开启或关闭外部设备,也可以向外部设备传达工作状态。例如,
一个数字输出端口可以为一个电机激活控制电路,开/关灯,或者可能的话还可以触发诸如花园浇灌系统的水压阀这样的设备,当然也
控制洗衣机。将数字输入/输出端口结合在一起可以用来合成对其他芯片的接口和协议。除了数字 I/O 外,大多数控制器还有其他子系
统。而如果不需要其他子系统的功能,那么微控制器本身也能将其他子系统转换到通用数字 I/O。作为一个系统设计者,这就为您在所
设计的应用里如何使用微控制器提供了多种选择。
许多微控制器也有模拟输入,允许为监控或记录目的的传感器进行采样。这样,一台嵌入式计算机就可以用来测量光强、温度、震动或
加速度,大气或水的压力,湿度或者磁场之类的项目。或者,这些模拟输入可以用来监测简单的电压,或许用来确保较大规模系统的可
靠操作。
有些微控制器有串口,通过串口,嵌入式计算机可以与一台主机、另外的嵌入式系统或者也许是一个简单的网络进行连接。诸如 SPI 和
I2C 这样的专用形式的串行接口,为扩展微控制器的功能提供了一种简单的方法。这些串口允许外部设备与微控制器连接起来,为诸如
片外存储器(用于数据或参数存储)、时钟/日历芯片、带数字接口的传感器、外部模拟输入或输出,甚至音频芯片及其他微处理器提
供了访问途径。
大多数微控制器都带有计时器和计数器,用来在固定的时间间隔里为多任务处理产生内部中断,为片外系统提供外部触发,或者为电机
提供控制脉冲。或者用来为来自其他设备的外部触发(脉冲)计数。