内容源自:《Linux设备驱动开发详解:基于最新的Linux 4.0 内核》.

1. 处理器

目前主流的通用处理器(GPP, General-Purpose Processor)多采用Soc(System On-chip)的芯片设计方法,集成了各种功能模块,每一种功能都是有硬件描述语言设计程序,然后在Soc内由电路实现.对于嵌入式系统而言, 使用最多也最广泛的是ARM处理器.

(ARM公司简介:ARM公司既不生产芯片也不销售芯片,只出售芯片技术授权. 1990年11月,ARM公司在英国剑桥的一个谷仓库里成立,最初只有12人. 时隔一年, 1991年10月5日, Linus Torvalds第一次正式向外公布了Linux操作系统 )

(1) 中央处理器的体系结构

冯.诺依曼结构也称为普林斯顿结构,是一种将程序指存储器和数据存储器合并在一起的存储结构.程序指令存储地址和数据存储地址是同一存储器的不同物理位置,因此程序指令和数据的宽度相同.

哈佛结构,将程序指令和数据分开存储, 因此程序指令和数据可以有不同的数据宽度, 此外哈佛结构还采用了独立的程序指令总线和数据总线,具有较高的执行效率.

改进的哈佛结构, 相比较于哈佛结构,改进的哈佛结构具有独立的地址总线和数据总线,两条总线由程序指令存储器和数据存储器分时共用.

CISC(Complex Instruction Set Computer). 特点: 指令能力强,减少目标代码的数量,但是指令复杂,指令周期长.

RISC(Reduced Instruction Set Computer). 特点: 指令集尽可能少,指令单周期执行,但目标代码更大.

2. 存储器

存储器主要分为只读存储器(ROM),随机存储器(RAM), 闪存(Flash), 光/磁介质存储器.

ROM还可以再细分为不可编程ROM,可编程ROM(PROM),可擦除编程ROM(EPROM),电可擦除ROM(EEPROM).

NOR(或非)和NAND(与非)是市场上两种主要的Flash闪存技术.NOR Flash的特点是片内可执行(XIP, eXcute in place).

存储器这里不展开讲, 厂商大多已经做好了驱动. 就目前的高通,MTK平台的LPDDR,不是一两个工程师可以成功完成其初始化的.

3. 接口与总线

3.1 串口(UART, Universal Asynchronous Receiver Transmitter)

UART是一种通用的数据通信协议, 它包括了RS232, RS499, RS422和RS485等接口标准规范和总线标准规范, UART是异步串行通信接口的总称.而RS232, RS499, RS422和RS485等, 是对应各种异步串行通信的接口标准和总线标准,它规定了通信接口的电气特性,传输速率, 连接特性和接口的机械特性等内容, 这些东西都是物理层的概念.

UART用一条传输线将数据一位位地顺序传送, 以字符为传输单位. 数据传输的速率用波特率来表示,指每秒钟传输的二进制位数.

起始位: 先发一个逻辑"0"信号, 表示传输字符的开始.

数据位: 可以是5~8位逻辑"0"或者"1". 如ASCII码(7位).

校验位: 数据位加上这一位后, 使得"1"的位数为偶数(偶校验)或奇数(奇校验).

停止位: 它是一个字符数据的结束标志. 可以是1位, 1.5位, 2位的高电平.

空闲位: 处于逻辑"1"的状态, 表示当前线路上没有数据传输.

RS232C, PC机上串行接口标配, 有DB9和DB25两种.下图是DB9:

Signal Description
DCD 数据载波检测(Data Carrier Detect), DCE向DTE指示, 线路上检测到载波
RI 振铃指示(Ring Indicator), DCE向DTE指示, 有呼叫接入
RTS 表示DTE请求DCE发送数据
CTS 表示DCE准备好接收DTE发送的数据
RxD DTE通过RxD接收DCE发来的数据
TxD DTE通过TxD发送数据到DCE
DSR 有效(On 状态)表明DCE可以使用
DTR 有效(On 状态)表明DTE可以使用
GND Ground

 

 

 

 

 

 

 

 

RS232将设备分为:

数据终端设备(DTE, Device Terminal Equipment) --> 譬如PC

数据通信设备(DCE, Device Communication Equipment)

上图是单片机与PC DB9接口的连接示意图.可以看到中间增加了一个MAX232A的芯片. 为什么需要增加这颗芯片呢? 这是因为单片机UART使用的是TTL电平是3.3V的, 而RS232C采用的是负逻辑电平, 它定义+5~+12V为低电平, 而-12 ~ -5V为高电平.

 3.2 SPI(Serial Pheripheral Interface)串行外设接口

SPI总线是一种同步串行外设接口, 它可以使CPU与各种外围设备以串行的方式进行通信以交换信息. 一般主控SoC作为SPI的“主”, 而外设作为SPI的"从".

SPI 接口一般使用4条线: 串行时钟线(SCLK), 主机输入/从机输出数据线MISO, 主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS

特别注意:

SPI从设备支持的SPI总线最高时钟频率(决定了SCLK的频率)以及外设的CPHA和CPOL模式,这决定了时钟与数据之间的便宜,采样的时刻以及触发的边沿是上升沿还是下降沿.

SPI模块为了和外部设备进行数据交换, 根据外设工作要求,其输出串行同步时钟极性(CPOL)和相位(CPHA)可以进行配置.如果CPOL=0, 串行同步时钟空闲状态下是低电平;如果CPOL=1,串行同步时钟空闲状态为高电平.如果CPHA=0, 在串行同步时钟的第一个跳变沿(上升或下降)数据被采样.如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样.

 3.3 I2C(内置集成电路)

组成I2C总线的两个信号为数据线(SDA)和时钟(SCL). 总线空闲时,上拉电阻使得SDA和SCL线都保持高电平. I2C设备上的串行数据线SDA接口电路是双向的, 输出电路用于向总线上发送数据,输入电路用于接收总线上的数据.同样地, 串行时钟线SCL也是双向的, 作为控制总线数据传送的主机要通过SCL输出电路发送时钟信号, 并检测总线上SCL上的电平以决定什么时候发送下一个时钟脉冲电平; 作为接收主机命令的从设备需按总线上SCL的信号发送或接收SDA上的信号.

当SCL稳定在高电平时, SDA有高到低的变化将产生一个开始位, 而由低到高的变化则产生一个停止位. 开始位和停止位都有I2C主设备产生. 在选择从设备时, 如果从设备采用7位地址, 则主设备在发起传输过程前, 需先发送1字节的地址信息, 前7位为设备地址, 最后一位为读写标志位. 之后, 每次传输的数据也是以字节, 从MSB开始传输. 每个字节传完后, 在SCL的第9个上升沿到来之前, 接收方应该发出一个ACK位. SCL上的时钟脉冲由I2C主控方发出,在第八个时钟周期之后, 主控方应该释放SDA.

posted on 2017-05-02 15:11  HughXu  阅读(528)  评论(0)    收藏  举报