|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、单片机串行扩展概述
9 S" ?6 @; V) ~8 Q3 I单片机串行扩展实现方法,常用的串行总线标准主要有:I2C总线、串行总线SPI和通用串行总线USB等。本章将重点讲述I2C总线。, m/ Z4 o+ K5 V) D
1. 通过专用串行标准总线实现: X% ?6 d+ _3 m$ K+ N; v1 m7 L! F
(1)串行外围设备接口总线SPI
7 P+ N- C& I8 s9 \SPI(Serial Peripheral InteRFace)是一个同步串行接口标准,3线结构,使用时只需4条线就可以与多种标准的外围设备进行接口。它采用全双工3线同步数据传输方式,多主从机结构形式。. d" q1 S) f3 g+ B$ G! t4 ~5 N6 w
(2)通用串行总线USB. W% r5 t5 h; p! z
USB(Universal Serial Bus)标准是由Intel公司为主,联合几家世界著名的计算机和通信公司共同制订的串行接口总线标准。其特点: p& [& D/ S6 w, e0 f9 s1 v
①连线简单,使用方便。
5 i! O6 n+ ?) e0 [8 O! k. F( ~②传输速率从几kbps到几Mbps,适用于中低速设备接口。
6 S% B- k0 K/ a; G8 h. y8 v③具有较强的纠错功能,所以可靠性高。, A9 _2 q) ?6 m4 x
(3)存取(访问)总线access
9 x. U- C. i& M( W8 MACCESS总线由DEC公司开发,是一种双向总线,最多可把125台外部设备接入系统。凡支持该总线的外部设备都具有一种与电话接插头类似的端口连接器,并以菊花型连接方式接入设备。/ B, g7 m: L- A* e/ M5 g- Y
r& l R6 Z' t3 H; ^2. 通过串行通信口UART实现
3 D& }. c1 M! ]3 p6 z使用80C51的串行通信口UART的工作方式0可以实现串行I/O接口功能,在单片机与外部设备或控制设备之间进行数据传输。
4 F8 d& C" s5 t& i9 B; m& ?- O- |8 p: u0 N
3. 通过软件模拟实现
2 A& ]/ {7 X# {通过并行口线使用软件模拟方法也可以实现串行接口。但接口功能会受到限制,所以只适用于最简单的串行接口应用。
' m" K) n& n! @1 z6 j( K" u2 l4 v+ j4 M0 g% j0 I
二、 I2C总线
( f1 y! _* }- H% dI2C(Inter Integrated Circuit)总线是一种串行同步通信技术,是Philips公司针对单片机需要而研制的,用于实现单片机串行外围扩展。I2C总线通过两条线以及两组信号的相互配合,就可以实现串行数据传输。
- F$ g I* {; m1、 I2C总线结构和信号
* b) r% B7 ^+ t+ Z0 Z6 pI2C总线具有严格的规范,具体表现在接口的电气性能,信号时序,信号传输的定义,总线状态设置和处理,以及总线管理规则等方面。- Q5 A0 f, E3 u- V, ]
(1) I2C总线结构
5 a6 A% U; }( x" uI2C总线是由串行时钟线SCL(Serial Clock Line)和串行数据线SDA(Serial DataLine)构成的双向数据传输通路,其中SCL用于传送时钟信号,SDA用于传送数据信号。通过I2C总线构成的单片机串行系统中,挂接在总线上的单片机以及各种外围芯片和设备等统称为器件,其系统结构如下图所示。
: y8 w; ?5 G. H一个I2C总线系统允许接入多个器件,传输速率不同也可以,甚至还可以是另一个远程I2C系统的驱动电路,从而形成两个I2C系统的相互交接。! O3 p/ m$ F8 q9 k! W3 Y; y
(2)I2C总线器件接入
- A: Z/ V, X% |3 O+ Y+ b @( t7 u6 pI2C总线的两条线SCL和SDA都是通过上拉电阻(一般为10 kΩ)以漏极开路或集电极开路输出的形式接入I2C总线的,2 p5 ?( y7 V! C4 w& B
器件与I2C总线的连接I2C总线如此连接产生如下硬件关系:总线系统中各器件对SCL线是逻辑“与”的关系,对SDA线也是逻辑“与”关系。反之,对于低电平是逻辑“或”的关系,即系统中任一器件输出低电平都会使与之相连的总线变低。这种关系使得I2C总线具有一大优点,即器件可以随时接入或移出,而不会对系统产生任何不良影响。此外,从图中还可以看出SCL和SDA均为双向传输线,因为各器件中都有输入和输出控制。. ~2 l9 l, Z0 g* }) b* u" `
(3)I2C总线的状态和信号
$ p2 Z/ {. Z* X f1)总线空闲3 b2 a( g' k3 @; ^- `) |
SCL和SDA均处于高电平状态,即为总线空闲状态。8 M3 l" v! g6 c4 @2 r! s- D4 d
2)占有总线和释放总线: b# }! \( P3 I0 J" R' f/ _
器件若想使用总线应当先占有它,占有总线的主控器件向SCL线发出时钟信号。数据传输完成后应当及时释放总线,即解除对总线的控制(或占有),使其恢复为空闲状态。
. G M6 k7 X! O4 Y3)时钟信号和数据信号9 _$ X! ~* V; T9 i. z$ g; n
时钟信号出现在SCL线上,而数据信号在SDA线上传输。数据传输以位为单位,一个时钟周期只能传输一位数据。SDA线上高电平为数据位1,低电平为数据位0。时钟信号和数据信号的配合关系是:在时钟信号高电平期间数据线上的电平状态必须保持稳定,只有在时钟信号为低电平时,才允许数据位状态发生变化。如下图。
1 p7 D% |6 O8 |+ K9 L" x4)启动信号和停止信号
% f; J# f# C; u* r9 _' O启动信号和停止信号只能由主控器件发出,它们所对应的是SCL的高电平与SDA的跳变。当SCL线为高电平时,主控器件在SDA线上产生一个电平负跳变,这便是启动信号。当SCL线为高电平时,主控器件在SDA线上产生一个电平正跳变,这便是总线的停止信号。停止信号出现后要间隔一定时间,才能认为总线被释放并返回空闲状态。
" m" i' ^% { r; J" Z3 c* T通常启动信号用S表示,停止信号用P表示。# p- z2 W3 o. ~9 } ], C- k/ a s
此外,在数据传输过程中也可能出现启动信号,但这个启动信号称为重复启动信号,用Sr表示,发出重复启动信号是为了开始一次与前面不同的新的数据传输。1 t; K7 D0 |/ s }+ u
5)应答信号和非应答信号9 R, N% Y8 F" A% j; O
应答信号是对字节数据传输的确认,每当一个字节数据传输完成后,应当由接收器件返回一个应答信号。0 a; |- }1 v" L: L& h4 t
应答信号和非应答信号对应于第9个时钟脉冲,SDA线仍保持高电平,则为非应答信号。在使用时,应答信号以ACK(或A)表示,非应答信号以ACK(或NA)表示。
1 V' h6 \! P' a9 s2 A6)等待状态
4 h* X% v7 {5 F4 N! q+ g* g- d, M在I2C总线中,赋予接收数据的器件使系统进入等待状态的权力,但等待状态只能在一个数据字节完整接收之后进行。; f( F0 W `: F9 V) Q
在等待状态下,发送方不能发送数据,直到接收器件认为自己能继续接收数据时,再释放SCL线,使系统退出等待状态,发送方才可以继续进行数据发送。! |# E, Q* Z; B _7 H
等待状态也称为延时状态,其实质是通过延长时钟脉冲周期而改变数据传输速率。设置等待状态有两个作用:一是为接收器件留出进行其他操作的机会,二是允许系统接入速度不同的器件。正因为如此, I2C总线系统对接入器件的速度没有要求。" S/ H$ n# F. i I
4 q4 [: t: |$ ^0 b# F2、 I2C总线数据传输方式* D: `0 y* T" b8 r3 h9 Y
(1)基本数据传输格式
0 w3 z! D7 B. L6 h7 s+ bI2C总线上的数据传输按位进行,高位在前,低位在后,每传输一个数据字节通过应答信号进行一次联络,传送的字节数不受限制。其传输格式如下图所示。! O3 c7 k1 @0 k1 c* |: [# r3 K
(2)主发送方式
1 F& P3 z* u4 [1 `) i7 r) G主发送方式是指主控器件向被控的从器件发送数据。主发送方式的数据传输格式如下图所示。+ q3 `& t8 `7 o( ^ [7 h6 E. S
(3)主接收方式
1 d/ a$ X; p1 O4 Y" R主控器件接收被控从器件发送来的数据,就是主接收方式,其数据传输格式如如下图所示。, s; {% B0 [+ a* X
6 D& F& Z# A: b3 、器件与器件寻址" H( Z% a7 f. Z# c& l' V- \) F# X
(1)器件分类
# r% }& a- ?, M0 `, w6 d按控制关系划分,器件之间存在着控制与被控制的关系(或主从关系)。其中起控制作用的称为主器件(或主控器件),而被控制的则称为从器件(或被控器件)。
/ G2 x8 }) T6 d" v4 S按数据的传输关系划分,器件之间存在着发送与接收的关系,其中发送数据的器件称为发送器,而接收数据的器件则称为接收器。
. n+ l' E8 C, Q4 E(2)器件工作方式
. H, a0 `' R9 h% h5 V) e% k J总线系统中的器件有4种工作方式,即主发送方式(该器件作为主控器件发送数据)、主接收方式(该器件作为主控器件接收数据)、从发送方式(该器件作为被控器件发送数据)以及从接收方式(该器件作为被控器件接收数据)。
' M# I. ?& H& [. q0 R(3)在I2C总线系统中,由于没有地址线可供使用,地址只能通过串行线SDA传送。用户关心的是器件寻址,即如何找到从器件。; c; n$ O& V" J ~: l& a
1)器件编址
. L7 A$ C" ^$ \: t在I2C总线中,器件编址也称为器件从地址。I2C总线启动后主控器件发送的第一个字节是寻址字节,以SLA+R/表示,其中SLA表示的前7位即为器件从地址。I2C器件编址由“I2C 总线委员会”统一分配,并且遵循一定的规则。
8 l' Q9 W9 V0 A0 x! s如:PCF8574( I2C总线到8位并行总线转换器)
$ I, N k" j2 P2)引脚地址% N5 ?0 N$ M0 Y7 O& M9 ~
编址位中的A2A1A0、A1A0和A0表示其对应位的编码是通过外接电平得到的。这几位器件编码是通过引脚设定的,所以就称为引脚地址。芯片的引脚地址总是从最低位开始安排。
2 t# w8 z! b8 i- t. s! z$ }# a6 P, @3 v* `; b
. r" N$ S. p9 ~% E$ `
|
|