单片机原理及应用(C语言版)8_第1页
单片机原理及应用(C语言版)8_第2页
单片机原理及应用(C语言版)8_第3页
单片机原理及应用(C语言版)8_第4页
单片机原理及应用(C语言版)8_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第8章章 单片机系统扩展单片机系统扩展 目目 录录 8.1 扩展并行三总线扩展并行三总线 8.2 扩展简单并行输入扩展简单并行输入/输出口输出口 8.3 扩展并行数据存储器扩展并行数据存储器 8.4 串行扩展总线接口技术串行扩展总线接口技术 第第8章章 单片机系统扩展单片机系统扩展 本章主要介绍了本章主要介绍了MCS-51单片机系统扩展的单片机系统扩展的方法。方法。通过扩展并行三总线来进行并行总线通过扩展并行三总线来进行并行总线接口扩展;通过接口扩展;通过UART或或I/O口模拟几种串行口模拟几种串行通信的特点来进行串行总线接口扩展。通信的特点来进行串行总线接口扩展。8.1 扩展并行三总线扩

2、展并行三总线 主要内容主要内容 8.1.1 片外三总线结构片外三总线结构 8.1.2 MCS-51系统扩展的实现系统扩展的实现 8.1.3 总线驱动总线驱动8.1.1 片外三总线结构片外三总线结构 通常,微机的通常,微机的CPU外部都有单独的并行外部都有单独的并行地地址总线、数据总线、控制总线址总线、数据总线、控制总线。MCS-51单片机由于引脚的限制,单片机由于引脚的限制,数据总数据总线和地址总线是复用的线和地址总线是复用的。 地址需要锁存:地址需要锁存:为了能把复用的数据总线为了能把复用的数据总线和地址总线分离出来以便同外部的芯片正确和地址总线分离出来以便同外部的芯片正确的连接,需要在单片

3、机的外部增加地址锁存的连接,需要在单片机的外部增加地址锁存器,从而构成与一般器,从而构成与一般CPU相类似的三总线结相类似的三总线结构,如图构,如图8-1所示。所示。P2ALE89C52P0PSENWRRD地址地址锁存器锁存器地址总线地址总线数据总线数据总线控制总线控制总线A8A15A0A7D0D78.1.1 片外三总线结构片外三总线结构图图8-1 89C52扩展的三总线扩展的三总线ALEP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0LE OE8D 8Q7D 7Q6D 6Q5D 5Q4D 4Q3D 3Q2D 2Q1D 1QA7A6A5A4A3A2A1A089C5274HC57

4、3图图8-2 地址总线扩展电路地址总线扩展电路8.1.1 片外三总线结构片外三总线结构 地址锁存器地址锁存器74HC573与单片机与单片机P0口连接,扩口连接,扩展地址总线,如图展地址总线,如图8-2所示。所示。 74HC573简介简介74HC573是有输出三态门的电平允许是有输出三态门的电平允许8位位锁存器。锁存器。引脚信号如下:引脚信号如下: OE:输出允许端输出允许端,为,为0时芯片有效。时芯片有效。LE:锁存控制端锁存控制端,高电平时,高电平时,锁存器的锁存器的数据输出端数据输出端Q的状态,与数据输入端的状态,与数据输入端D相同,相同,即即锁存器是透明的锁存器是透明的;当;当LE端端从

5、高电平返回从高电平返回到低电平时(下降沿后),到低电平时(下降沿后),输入端的输入端的数据就数据就被锁存在锁存器中被锁存在锁存器中,数据输入端,数据输入端D的变化不的变化不再影响再影响Q端。端。8.1.1 片外三总线结构片外三总线结构 一、地址总线一、地址总线 地址总线地址总线(Address Bus,AB)用于传送)用于传送单片机送出的地址信号,以便进行存储器单单片机送出的地址信号,以便进行存储器单元和元和I/O端口的选择。端口的选择。 地址总线是单向的地址总线是单向的,只能由单片机向外,只能由单片机向外发送信息。发送信息。 地址总线的数目决定了可直接访问的存地址总线的数目决定了可直接访问的

6、存储单元的数目。储单元的数目。 8.1.1 片外三总线结构片外三总线结构 二、数据总线二、数据总线 数据总线数据总线(Data Bus,DB)用于单片机)用于单片机与存储器或与存储器或I/O端口之间的数据传送。端口之间的数据传送。 一般数据总线的位数与一般数据总线的位数与CPU的字长一致,的字长一致,MCS-51单片机的数据总线是单片机的数据总线是8位的。位的。 数据总线是双向的数据总线是双向的,可以进行两个方向,可以进行两个方向的数据传送。的数据传送。三、控制总线三、控制总线 控制总线控制总线(Control Bus,CB)是单片机)是单片机发出的以控制片外发出的以控制片外ROM、RAM和和

7、I/O口读口读/写操作的一组控制线。写操作的一组控制线。 8.1.1 片外三总线结构片外三总线结构8.1.2 MCS-51系统扩展的实现系统扩展的实现 一、以一、以P0口作低口作低8位地址及位地址及8位数据位数据的复用总线的复用总线 复用,复用,即一段时间内作两种或两种以上即一段时间内作两种或两种以上用途。用途。 在这里指在这里指P0口在每个口在每个CPU周期的周期的前半个前半个周期周期输出低输出低8位地址,由地址锁存器锁存,位地址,由地址锁存器锁存,然后由地址锁存器代替然后由地址锁存器代替P0口输出低口输出低8位地址。位地址。后半个周期后半个周期进行进行8位数据的输入输出。位数据的输入输出。

8、 二、以二、以P2口作为高口作为高8位的地址总线位的地址总线 P0口的低口的低8位地址加上位地址加上P2的高的高8位地址就位地址就可以形成可以形成16位的地址总线位的地址总线,达到,达到64KB的寻的寻址能力。址能力。 实际应用中,往往不需要扩展那么多地实际应用中,往往不需要扩展那么多地址,扩展多少用多少口线,剩余的口线仍可址,扩展多少用多少口线,剩余的口线仍可作一般作一般I/O口来使用。口来使用。8.1.2 MCS-51系统扩展的实现系统扩展的实现 三、控制信号线三、控制信号线ALE:地址锁存信号地址锁存信号,用以实现对低,用以实现对低8位位地址的锁存。地址的锁存。PSEN:片外程序存储器读

9、选通信号片外程序存储器读选通信号。EA:程序存储器选择信号。程序存储器选择信号。为为低电平时低电平时,访问访问外部外部程序存储器;为程序存储器;为高电平时高电平时,访问,访问内内部部程序存储器。程序存储器。WR:片外数据存储器写选通信号。片外数据存储器写选通信号。RD:片外数据存储器读选通信号。片外数据存储器读选通信号。8.1.2 MCS-51系统扩展的实现系统扩展的实现8.1.3 总线驱动总线驱动 总线驱动的原因:总线驱动的原因:在单片机应用系统中,在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、扩展的三总线上挂接很多负载,如存储器、并行接口、并行接口、A/DA/D接口、显示接口等

10、,但接口、显示接口等,但总线总线接口的负载能力接口的负载能力有限,因此常常需要通过连有限,因此常常需要通过连接接总线驱动器总线驱动器进行总线驱动。进行总线驱动。 总线驱动器的作用:总线驱动器的作用:对于单片机的对于单片机的I/O口口只相当于增加了一个只相当于增加了一个TTL负载,因此驱动器负载,因此驱动器除了对后级电路驱动外,还能对负载的波动除了对后级电路驱动外,还能对负载的波动变化起隔离作用。变化起隔离作用。 在对在对TTL负载驱动时,负载驱动时,只需考虑驱动电只需考虑驱动电流的大小。流的大小。 在对在对MOS负载驱动时,负载驱动时,MOS负载的输入负载的输入电流很小,更多地要考虑对分布电容

11、的电流电流很小,更多地要考虑对分布电容的电流驱动。驱动。 8.1.3 总线驱动总线驱动 总线驱动器的选择:总线驱动器的选择: 系统总线中地址总线是单向的,因此驱动系统总线中地址总线是单向的,因此驱动器可以选用单向的,如器可以选用单向的,如74LS244,还带有三还带有三态控制,能实现总线缓冲和隔离。态控制,能实现总线缓冲和隔离。 数据总线是双向的,其驱动器也要选用双数据总线是双向的,其驱动器也要选用双向的,如向的,如74LS245。74LS245也是三态的,有也是三态的,有一个方向控制端一个方向控制端DIR。DIR=1时输出时输出(AnBn),),DIR=0时输入(时输入(AnBn)。)。 8

12、.1.3 总线驱动总线驱动8.2 扩展简单并行输入扩展简单并行输入/输出口输出口 89C52有有P0P3四组四组I/O口,但是在某些口,但是在某些特定的场合,可能会出现特定的场合,可能会出现I/O口不够用的情口不够用的情况。这时就需要通过扩展来增加况。这时就需要通过扩展来增加I/O口的数口的数量以满足使用的需要。量以满足使用的需要。 在很多应用系统中,在很多应用系统中,采用采用74系列系列TTL电电路或路或4000系列系列MOS电路芯片,扩展并行数据电路芯片,扩展并行数据输入输出。输入输出。 例例1 在图在图8-4中,当中,当P2.0=0,WR=1,RD=0时,通过时,通过74HC244(扩展

13、输入)(扩展输入)读读入按键状态,当入按键状态,当P2.0=0,WR=0,RD=1时,通过时,通过74HC573(扩展输出)(扩展输出)根据按根据按键状态驱动发光二极管发光。键状态驱动发光二极管发光。 74HC244、74HC573的操作地址设为的操作地址设为0 xfeff。8.2 扩展简单并行输入扩展简单并行输入/输出口输出口P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.789C52 WRP2.0RDD0 Q0D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6D7 Q7LE VCCQ0 D0Q1 D1Q2 D2Q3 D3Q4 D4Q5 D5Q6 D6Q7 D7G+7

14、4HC57374HC244+5V图图8-4 简单简单I/O接口扩展接口扩展 8.2 扩展简单并行输入扩展简单并行输入/输出口输出口C语言程序清单:语言程序清单:#include void main()unsigned char data tmp1, tmp2=0;unsigned char xdata *pt1;pt1=0 xfeff; /给指针赋地址值给指针赋地址值0 xfeffwhile(1) /循环循环 tmp1=*pt1;/从从74HC244输入数据输入数据 if (tmp1!=tmp2)/判断输入改变时,判断输入改变时, *pt1 =tmp1;/从从74HC573输出数据输出数据 t

15、mp2=tmp1; 8.3 扩展并行数据存储器扩展并行数据存储器主要内容主要内容 8.3.1 扩展存储器概述扩展存储器概述 8.3.2 数据存储器的扩展数据存储器的扩展8.3 扩展并行数据存储器扩展并行数据存储器 数据存储器即随机存取存储器数据存储器即随机存取存储器(Random Access Memory,RAM),用于存放可随时),用于存放可随时修改的数据信息。修改的数据信息。 单片机使用的主要是静态单片机使用的主要是静态RAM。 MCS-51系列单片机片外数据存储器的空系列单片机片外数据存储器的空间可达间可达64KB,而片内数据存储器的空间只,而片内数据存储器的空间只有有128B或或25

16、6B。如果片内的数据存储器不。如果片内的数据存储器不够用时,则需进行数据存储器的扩展。够用时,则需进行数据存储器的扩展。8.3.1 扩展存储器概述扩展存储器概述 存储器扩展的核心问题是存储器扩展的核心问题是存储器的编址问存储器的编址问题。题。所谓编址就是给存储单元分配地址。所谓编址就是给存储单元分配地址。 由于存储器通常由多个芯片组成,为此存由于存储器通常由多个芯片组成,为此存储器的编址分为两个层次:储器的编址分为两个层次: 即即存储器芯片的选择存储器芯片的选择和和存储器芯片内部存存储器芯片内部存储单元的选择。储单元的选择。 一、地址线的译码一、地址线的译码 存储器芯片的选择有两种方法:存储器

17、芯片的选择有两种方法:线选法和线选法和译码法。译码法。 1、线选法。、线选法。所谓线选法,就是所谓线选法,就是直接以系直接以系统的地址线作为存储器芯片的片选信号,统的地址线作为存储器芯片的片选信号,为为此只需把用到的地址线与存储器芯片的片选此只需把用到的地址线与存储器芯片的片选端直接相连即可。端直接相连即可。 2、译码法。、译码法。所谓译码法,就是所谓译码法,就是使用地址使用地址译码器对系统的片外地址进行译码,译码器对系统的片外地址进行译码,以其译以其译码输出作为存储器芯片的片选信号。码输出作为存储器芯片的片选信号。译码法译码法又分为又分为完全译码完全译码和和部分译码部分译码两种。两种。 8.

18、3.1 扩展存储器概述扩展存储器概述(1 1)完全译码。)完全译码。地址译码器使用了全部地址地址译码器使用了全部地址线,地址与存储单元一一对应,线,地址与存储单元一一对应,也就是也就是1 1个个存储单元只占用存储单元只占用1 1个唯一的地址。个唯一的地址。(2 2)部分译码。)部分译码。地址译码器仅使用了部分地地址译码器仅使用了部分地址线,地址与存储单元不是一一对应址线,地址与存储单元不是一一对应,而是,而是1 1个存储单元占用了几个地址。个存储单元占用了几个地址。8.3.1 扩展存储器概述扩展存储器概述译码地址线译码地址线与存储器连接的地址线与存储器连接的地址线A15 A14 A13 A12

19、 A11 A10 A9A8A7A6A5A4A3A2A1A00100图图8-5 地址译码关系图地址译码关系图8.3.1 扩展存储器概述扩展存储器概述 芯片译码地址:芯片译码地址:在设计地址译码器电路时,在设计地址译码器电路时,常采用地址译码关系图。所谓地址译码关系常采用地址译码关系图。所谓地址译码关系图,就是一种用简单的符号来表示全部地址图,就是一种用简单的符号来表示全部地址译码关系的示意图,如图译码关系的示意图,如图8-5所示。所示。 二、扩展存储器所需芯片数目的确定二、扩展存储器所需芯片数目的确定 若所选存储器芯片字长与单片机字长一致若所选存储器芯片字长与单片机字长一致,则只需扩展容量。则只

20、需扩展容量。所需芯片数目按下式确定:所需芯片数目按下式确定: 芯片数目芯片数目= =系统扩展容量系统扩展容量存储器芯片容量存储器芯片容量8.3.1 扩展存储器概述扩展存储器概述 若所选存储器芯片字长与单片机字长不一若所选存储器芯片字长与单片机字长不一致,则不仅需扩展容量,还需字扩展。致,则不仅需扩展容量,还需字扩展。所需所需芯片数目按下式确定:芯片数目按下式确定: 芯片数目芯片数目= = 系统字长系统字长存储器芯片字长存储器芯片字长系统扩展容量系统扩展容量存储器芯片容量存储器芯片容量 三、三、38译码器译码器74LS138 38译码器译码器74LS138为一种常用的为一种常用的地址译地址译码器

21、芯片。码器芯片。其中,其中,G1、G2A、G2B为控制端。只有为控制端。只有当当G1为为“1”,且,且G2A、G2B均为均为“0”时,译时,译码器才能进行译码输出。否则译码器的码器才能进行译码输出。否则译码器的8个个输出端全为高阻状态。输出端全为高阻状态。译码输入端与输出端之间的译码关系如译码输入端与输出端之间的译码关系如表表8-1所示。所示。8.3.1 扩展存储器概述扩展存储器概述Y0Y1Y2Y3Y4Y5Y6Y7CBA编码编码000001010011100101110111输出有效位输出有效位表表8-1 74LS138的译码关系的译码关系8.3.1 扩展存储器概述扩展存储器概述8.3.2 数

22、据存储器的扩展数据存储器的扩展 一、常用静态一、常用静态RAM芯片芯片 常见的静态常见的静态RAM芯片有芯片有6264(8K8位)、位)、62256(32K8位)、位)、628128(128K8位)等。位)等。二、扩展数据存储器举例二、扩展数据存储器举例 例例8-2 采用采用6264芯片在芯片在89C52片外扩展片外扩展24KB数据存储器,如图数据存储器,如图8-8所示。所示。图图8-8 62648-8 6264扩展扩展24KB24KB数据存储器数据存储器 P2.0P2.4P0ALEP2.5P2.6P2.7WERD74HC573D QLE 74LS138A Y0B Y1C Y2 A0A1262

23、64CE WE OE A0A126264CE WE OEA8A12D0D7A0A78.3.2 数据存储器的扩展数据存储器的扩展解:根据公式可得解:根据公式可得 芯片数目芯片数目= = =3片片24KB8KB A0A126264CE WE OE8.4 串行扩展总线接口技术串行扩展总线接口技术主要内容主要内容 8.4.1 常用的串行总线接口简介常用的串行总线接口简介 8.4.2 I2C总线总线 8.4.3 SPI串行外设接口总线串行外设接口总线8.4 串行扩展总线接口技术串行扩展总线接口技术 串行扩展总线技术是新一代单片机技术发串行扩展总线技术是新一代单片机技术发展的一个显著特点。展的一个显著特点

24、。 相对于并行总线接口,相对于并行总线接口,串行总线接口有着串行总线接口有着占用占用I/O口线少(一般口线少(一般34根),编程相对简根),编程相对简单,易于实现用户系统软硬件的模块化、标准单,易于实现用户系统软硬件的模块化、标准化等优点。化等优点。 随着串行总线接口技术(随着串行总线接口技术(SPI、I2C等)和等)和各种串行接口芯片的发展,串行总线接口技术各种串行接口芯片的发展,串行总线接口技术越来越受到人们的推崇。越来越受到人们的推崇。8.4.1 常用的串行总线接口简介常用的串行总线接口简介 一、一、I2C(Inter Integrated Circuit) I2C总线是总线是Phili

25、ps公司推出的芯片间串行公司推出的芯片间串行传输总线。传输总线。 I2C总线是二线制,采用器件地址的硬件总线是二线制,采用器件地址的硬件设置方法,通过软件寻址设置方法,通过软件寻址完全避免了器件的完全避免了器件的片选线寻址方法,从而使硬件系统具有简单片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。灵活的扩展方法。 二、二、SPI SPI总线是总线是Motorola公司提出的一种同步公司提出的一种同步串行外设接口。串行外设接口。 SPI总线是三线制,可直接与多种标准外总线是三线制,可直接与多种标准外围器件直接接口。围器件直接接口。 三、三、Microware Microware总线是总线是

26、NS公司提出的串行同公司提出的串行同步双工通信接口。步双工通信接口。 Microware总线是三线制,由一根数据输总线是三线制,由一根数据输出(出(SO)线、一根数据输入()线、一根数据输入(SI)线和一根)线和一根时钟(时钟(SK)线组成。)线组成。8.4.1 常用的串行总线接口简介常用的串行总线接口简介 四、单总线(四、单总线(1-wire) 单总线及应用:单总线及应用: 1-wire总线是总线是Dallas公司公司研制开发的一种协议,主要用于便携式仪表研制开发的一种协议,主要用于便携式仪表和现场监控系统。和现场监控系统。 单总线结构:单总线结构:是利用一根线实现双向通是利用一根线实现双向

27、通信,由一个总线主节点、一个或多个从节点信,由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数组成系统,通过一根信号线对从芯片进行数据的读取。据的读取。8.4.1 常用的串行总线接口简介常用的串行总线接口简介 五、五、USB(Universal Serial Bus) USB总线及应用:总线及应用:USB总线是总线是Compaq、Intel、Microsoft、NEC等公司联合制定的一等公司联合制定的一种计算机串行通信协议。种计算机串行通信协议。 USB总线的主要优点:总线的主要优点:比较于其他传统接比较于其他传统接口的一个优势是即插即用的实现,即插即用口的一个优势是即插

28、即用的实现,即插即用(Plug-and-Play)也称为热插拔()也称为热插拔(Hot Plugging)8.4.1 常用的串行总线接口简介常用的串行总线接口简介 六、六、CAN(Controller Area Network) CAN总线及应用:总线及应用: CAN总线是德国总线是德国Bosch公司最先提出的多主机局域网总线,公司最先提出的多主机局域网总线,是国际上应用最广泛的现场总线之一。是国际上应用最广泛的现场总线之一。 CAN总线的主要优点:总线的主要优点:在由在由CAN总线构总线构成的单一网络中,理论上可以挂接无数个节成的单一网络中,理论上可以挂接无数个节点。点。8.4.1 常用的串

29、行总线接口简介常用的串行总线接口简介8.4.2 I2C总线总线 一、一、I2C总线的特点总线的特点 I2C总线最主要的优点是其简单性和有效总线最主要的优点是其简单性和有效性。性。 I2C总线的特点:总线的特点:其接口直接集成在组件其接口直接集成在组件之上,因此之上,因此I2C总线占用的空间非常小,减少总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了了电路板的空间和芯片管脚的数量,降低了互联成本。互联成本。 I2C总线的其它优点:总线的其它优点:它支持多主控它支持多主控(Multimastering),其中任何能够进行发),其中任何能够进行发送和接收的设备(节点)都可以成为主控器

30、。送和接收的设备(节点)都可以成为主控器。图图8-9 典型典型I2C总线系统示意图总线系统示意图单片机单片机AA/D、D/A转换器转换器专用集成专用集成电路电路静态静态RAM或或ROMLCD显示器显示器单片机单片机BSDASCL8.4.2 I2C总线总线 I2C总线的主控器:总线的主控器:一个主控器能够控制一个主控器能够控制信号的传输和时钟频率。当然,在任何时间信号的传输和时钟频率。当然,在任何时间点上只能有一个主控器。如图点上只能有一个主控器。如图8-9所示。所示。 I2C总线支持多主和主从两种工作模式总线支持多主和主从两种工作模式多主方式:多主方式:通过硬件和软件的仲裁,主通过硬件和软件的

31、仲裁,主控器取得总线控制权。控器取得总线控制权。 主从方式:主从方式:从器件地址包括从器件地址包括器件编号地器件编号地址址和和引脚地址引脚地址两部分,器件编号地址由两部分,器件编号地址由I2C总线委员会分配,引脚地址由外界电平的高总线委员会分配,引脚地址由外界电平的高低决定。低决定。 器件内部子地址:器件内部子地址:当器件内部有连续的当器件内部有连续的子地址空间时,对这些空间进行连续读写,子地址空间时,对这些空间进行连续读写,子地址会自动加子地址会自动加1。8.4.2 I2C总线总线 CPU发出的控制信号:发出的控制信号:分为地址码和控制分为地址码和控制量两部分。量两部分。 地址码:地址码:用

32、来选址,用来选址,即接通需要控制的电即接通需要控制的电路,确定控制的种类。路,确定控制的种类。 控制量:控制量:决定该调整的类别决定该调整的类别(如对比度、(如对比度、亮度等)亮度等)及需要调整的量。及需要调整的量。这样,各控制电这样,各控制电路虽然挂在同一条总线上,却彼此独立,互路虽然挂在同一条总线上,却彼此独立,互不相关。不相关。8.4.2 I2C总线总线 二、二、I2C总线的时序总线的时序 I2C总线的信号:总线的信号:I2C总线在传送数据过程总线在传送数据过程中共有三种类型信号,中共有三种类型信号,分别是:开始信号、分别是:开始信号、结束信号和应答信号。结束信号和应答信号。 I2C总线

33、总线 开始信号:开始信号:SCL为高电平时,为高电平时,SDA由高电由高电平向低电平跳变,平向低电平跳变,开始传送数据。开始传送数据。 结束信号:结束信号:SCL为低电平时,为低电平时,SDA由低电由低电平向高电平跳变,平向高电平跳变,结束传送数据。结束传送数据。 应答信号:应答信号:接收数据的接收数据的IC在接收到在接收到8bit数数据后,向发送数据的据后,向发送数据的IC发出特定的发出特定的低电平脉低电平脉冲,冲,表示已收到数据。表示已收到数据。8.4.2 I2C总线总线SDASCL 开始信号允许数据变化开始信号允许数据变化 允许数据变化允许数据变化 允许数据变化允许数据变化 结束信号结束

34、信号图图8-10 I2C总线的时序总线的时序8.4.2 I2C总线总线 如图如图8-10所示,为所示,为I2C总线的一般时序。即总线的一般时序。即起始信号、结束信号、允许数据线改变的条件起始信号、结束信号、允许数据线改变的条件等。等。 三、三、I2C总线的数据传输过程总线的数据传输过程 数据传输时,主机先发送启动信号和时钟数据传输时,主机先发送启动信号和时钟信号,随后发送寻址字节来寻址被控器件,信号,随后发送寻址字节来寻址被控器件,并规定数据传送方向。并规定数据传送方向。 寻址字节由寻址字节由7位从机地址(位从机地址(D7D1)和)和1位位方向位(方向位(D0,读,读0/写写1)组成。)组成。

35、 从机地址包括从机地址包括器件编号地址器件编号地址和和引脚地址引脚地址两两部分。部分。8.4.2 I2C总线总线WR/DA3DA2DA1DA0A2A1A0器件识别码器件识别码器件识别码器件识别码如:如:RTC 1101RTC 1101允许在公用的允许在公用的I I2 2C C总线总线EEPROM 1010EEPROM 1010上同时接上同时接8 8个同类器件个同类器件I I2 2C C总线器件的总线器件的7 7位从器件(机)地址:位从器件(机)地址:8.4.2 I2C总线总线 从机对地址的响应:从机对地址的响应:当主机发送寻址字节当主机发送寻址字节时,总线上所有器件都将其中的高时,总线上所有器

36、件都将其中的高7位地址与位地址与自己的比较,自己的比较,若相同,则该器件根据读若相同,则该器件根据读/写位写位确定是从发送器还是从接收器。确定是从发送器还是从接收器。 对从接收器:对从接收器:在寻址字节之后,主控发送在寻址字节之后,主控发送器通过器通过SDA线向从接收器发送数据,数据发线向从接收器发送数据,数据发送完毕后发送终止信号,以结束传送过程。送完毕后发送终止信号,以结束传送过程。 对从发送器:对从发送器:在寻址字节之后,主控接收在寻址字节之后,主控接收器通过器通过SDA线接收被控发送器的发送数据。线接收被控发送器的发送数据。8.4.2 I2C总线总线 每传输一位数据,都有一个时钟脉冲相

37、对每传输一位数据,都有一个时钟脉冲相对应。应。时钟脉冲不必是周期性的,它的时钟间时钟脉冲不必是周期性的,它的时钟间隔可以不同。隔可以不同。 I2C总线的备用状态(总线的备用状态(“非忙非忙”状态):状态):SDA和和SCL都为都为“1”;只有当总线处于只有当总线处于“非非忙忙”状态时,数据传输才能被初始化。状态时,数据传输才能被初始化。I2C总线的关闭状态:总线的关闭状态:SCL箝位在低电平。箝位在低电平。 I2C总线上传输的数据和地址字节均为总线上传输的数据和地址字节均为8位,位,且高位在前,低位在后。且高位在前,低位在后。8.4.2 I2C总线总线 数据线数据线SDA上的一般情况:上的一般

38、情况:I2C总线以开总线以开始信号为始信号为启动信号启动信号;接着传输的是;接着传输的是地址和数地址和数据字节据字节,数据字节是没有限制的;每个字节,数据字节是没有限制的;每个字节后必须跟随一个后必须跟随一个应答位应答位(0);全部数据传输);全部数据传输完毕后,以完毕后,以结束信号结束信号结尾。结尾。 SCL的的“线与线与”特性:特性:任一器件的任一器件的SCL为为低电平时,便时时钟线低电平时,便时时钟线SCL变低,变低,SDA上数上数据就被停止传送。据就被停止传送。 8.4.2 I2C总线总线接收器的应答:接收器的应答:正常应答位为正常应答位为0;当接收;当接收器接收到一个字节后器接收到一

39、个字节后无法立即接收下一个字无法立即接收下一个字节时节时,便,便向向SCL线输出低电平线输出低电平而箝住而箝住SCL(SCL=0),迫使,迫使SDA线处于等待状态。线处于等待状态。被控器箝住被控器箝住SCL线为低电平,使主控发送线为低电平,使主控发送器处于等待状态的情况:器处于等待状态的情况:如图如图8-11中的中的A处,处,当接收器在当接收器在A点接收完主控器发来的一个字节点接收完主控器发来的一个字节时,需要处理接收中断而无法继续接收,则时,需要处理接收中断而无法继续接收,则被控器便可箝住被控器便可箝住SCL线为低电平,使主控发线为低电平,使主控发送器处于等待状态,直到被控器处理完接收送器处

40、于等待状态,直到被控器处理完接收中断后,再释放中断后,再释放SCL线。线。8.4.2 I2C总线总线图图8-11 I2C总线的数据传送字节格式总线的数据传送字节格式开始信号开始信号从地址从地址来自接收器来自接收器响应信号响应信号发送器等待发送器等待数据数据来自接收器来自接收器响应信号响应信号方向位方向位停止信号停止信号重复开始信号重复开始信号若传送多个字节则重复若传送多个字节则重复SCLSSDAMSBACKACKR/WP/SA8.4.2 I2C总线总线关于应答信号:关于应答信号:(1)应答信号的发送时刻:)应答信号的发送时刻:数据传输时,数据传输时,发送器每发完一个字节,都要求接收方发回发送器

41、每发完一个字节,都要求接收方发回一个应答信号(一个应答信号(0)。)。 (2)应答信号的过程:)应答信号的过程:发送时钟仍由主发送时钟仍由主控器在控器在SCL上产生。上产生。主控发送器必须在被控主控发送器必须在被控接收器发送应答信号前,预先释放对接收器发送应答信号前,预先释放对SDA线线的控制的控制(SDA1),以便主控器对),以便主控器对SDA线上线上应答信号的检测。应答信号的检测。8.4.2 I2C总线总线 正常应答:正常应答:主控器发送时,被控器接收完每主控器发送时,被控器接收完每个字节需发回应答信号个字节需发回应答信号“0”,主控器据此进行下,主控器据此进行下一字节的发送。一字节的发送

42、。 异常应答:异常应答:如果被控器由于某种原因无法继如果被控器由于某种原因无法继续接收续接收SDA上数据时,可向上数据时,可向SDA输出一个非应答输出一个非应答信号(信号(1),主控器据此便产生一个),主控器据此便产生一个Stop来终止来终止SDA线上的数据传输。线上的数据传输。 主控器接收时也应给被控器发应答信号。主控器接收时也应给被控器发应答信号。主控器接收时的结束应答:主控器接收时的结束应答:当主控器要结束当主控器要结束传输时,必须给被控器发一个非应答信号传输时,必须给被控器发一个非应答信号“1”,令被控器释放令被控器释放SDA线,以便主控器发送线,以便主控器发送Stop信号信号来结束数

43、据的传输,如图来结束数据的传输,如图8-12所示。所示。8.4.2 I2C总线总线图图8-12 I2C总线的应答信号总线的应答信号发送器发送器数据输出数据输出接收器接收器数据输入数据输入主控器主控器时钟线时钟线起始信号起始信号释放总线保持高电平释放总线保持高电平不应答不应答 A应答应答 A应答时钟脉冲应答时钟脉冲SMSB28918.4.2 I2C总线总线 四、四、I2C的数据格式的数据格式 1、主控器写数据、主控器写数据 主机写数据过程:主机写数据过程:整个过程均为主机发送,整个过程均为主机发送,从机接收,数据的方向位从机接收,数据的方向位R/W=0。应答位。应答位ACK由从机发送,当主机产生

44、结束信号后,由从机发送,当主机产生结束信号后,数据传输停止。格式如下:数据传输停止。格式如下:8.4.2 I2C总线总线A/SAData 1AData 2A Data n-1A Data nPSLAWS为开始信号,为开始信号,P为结束信号,为结束信号,A为应答信号,为应答信号, 为非应答信号,为非应答信号,SLA为寻址字节(写),为寻址字节(写),Data 1Data n为被传送的为被传送的n个数据。个数据。为主控器发送,被控器接收。为主控器发送,被控器接收。 为被控器发送,主控器接收。为被控器发送,主控器接收。 WAA8.4.2 I2C总线总线 2、主控器读数据、主控器读数据 主机读数据过程

45、:主机读数据过程:寻址字节为主机发送、寻址字节为主机发送、从机接收,方向位从机接收,方向位R/W=1R/W=1,n n个数据字节均为个数据字节均为从机发送、主机接收。主机接收完全部数据后从机发送、主机接收。主机接收完全部数据后发非应答位(发非应答位(1 1),表明读操作结束。格式如),表明读操作结束。格式如下:下:SSLA RAData 1AData 2AData n-1AData nPSLA RSLA R为寻址字节读。为寻址字节读。 A8.4.2 I2C总线总线 3、主控器读主控器读/ /写数据写数据 改变改变传送方向的传送方向的数据传输过程:数据传输过程:由于读由于读/ /写方写方向有变化

46、,开始信号和寻址字节都会重复一次,向有变化,开始信号和寻址字节都会重复一次,但读但读/ /写方向(写方向(R/WR/W)相反。格式如下:)相反。格式如下:SSLA RAData 1AData 2AData nASrADATA 1ADATA2ADATA n-1ADATA nPSr为重复开始信号,为重复开始信号,Data 1Data n为主控器为主控器的读数据,的读数据,DATA 1DATA n为主控器的写数据。为主控器的写数据。SLAWA/A8.4.2 I2C总线总线 三、三、I2C总线的应用总线的应用 带有带有I2C接口的单片机:接口的单片机:Cygnal的的 C8051 F0XX系列,系列,

47、Philips的的P87LPC7XX系列,系列,Microchip的的PIC16C6XX系列等。很多外围器系列等。很多外围器件如存储器、监控芯片等也提供件如存储器、监控芯片等也提供I2C接口。接口。 图图8-13为为I2C总线外围扩展示意图。总线外围扩展示意图。8.4.2 I2C总线总线图图8-13 I2C总线外围扩展示意图总线外围扩展示意图 MCU SDA SCLLED显示器显示器LED驱动驱动控制器控制器SDA SCLLCD显示器显示器LCD驱动驱动控制器控制器SDA SCL键盘键盘I/OSDA SCL打印机打印机I/OSDA SCLSCL SDASRAMSCL SDAE2PROMSCL

48、SDAADC/DACSCL SDARTCSCL SDADTMFVCC8.4.2 I2C总线总线RTC实时时钟,实时时钟,DTMF双音多频编码解码器。双音多频编码解码器。例例8-3 89C52模拟模拟I2C。如图。如图8-14所示。所示。图图8-14 89C51模拟模拟I2C89C52 P1.0P1.1I2C器件器件SCLSDA10K2 VCC 8.4.2 I2C总线总线C语言程序清单:语言程序清单:#include #include /有位操作、空操作等有位操作、空操作等sbit scl=0 x90;/P1.0的地址的地址sbit sda=0 x91;/P1.1的地址的地址void start

49、(void)/发送开始信号发送开始信号 sda=1;scl=1;_nop_(); /延时延时 _nop_();sda=0;_nop_();_nop_();scl=0;8.4.2 I2C总线总线void stop(void) /发送结束信号发送结束信号 sda=0;scl=1; _nop_(); /延时延时_nop_();sda=1;_nop_();_nop_();sda=0;scl=0;8.4.2 I2C总线总线bit tack(void)/检查应答检查应答 sda=1;/准备接收准备接收 scl=1;_nop_();_nop_();if(sda!=0) /判断是否有应答判断是否有应答retu

50、rn sda; /若非应答返回若非应答返回sda scl=0;8.4.2 I2C总线总线void txbyt(unsigned char txdat) /字节发送字节发送 unsigned int i;for(i=0;i8;i+)/一个字节一个字节8次按位循环发送次按位循环发送 if(txdat&0 x80) sda=1;/取最高位,是取最高位,是1发送发送1else sda=0;/是是0发送发送0 scl=1;/保持数据有效保持数据有效 _nop_();_nop_();scl=0;/准备改变数据准备改变数据 sda=0;txdat=txdat1; /左移准备取次高位左移准备取次高位

51、8.4.2 I2C总线总线unsigned char rxbyt(void)/字节接收字节接收 unsigned char rxdat=0; /接收数据存于接收数据存于rxdat unsigned int i;for(i=0;i8;i+) sda=1;/开始接收开始接收 scl=1;if(sda&1)rxdat+=1;elserxdat+=0;rxdat=rxdat1;scl=0;/应答应答 return rxdat;/返回接收到的数据返回接收到的数据8.4.2 I2C总线总线8.4.3 SPI串行外设接口总线串行外设接口总线 SPI(Serial Peripheral Interfa

52、ce,串行外,串行外围设备接口):围设备接口):是是Motorola公司推出的一种公司推出的一种同步串行通信方式同步串行通信方式,是一种,是一种三线同步总线。三线同步总线。 SPI的特点:的特点:因其硬件功能很强,与因其硬件功能很强,与SPI有有关的软件就相当简单,使关的软件就相当简单,使CPU有更多的时间有更多的时间处理其他事务。处理其他事务。图图8-15为为SPI总线典型结构。总线典型结构。 图图8-15 SPI总线系统典型结构示意图总线系统典型结构示意图 8.4.3 SPI串行外设接口总线串行外设接口总线SCKMOSIMISOMCU(主主)I/OI/OI/OI/OSCKMOSIMISOM

53、CU(从从)CSSCK MOSI MISO外围器件外围器件CSSCK MOSI MISO外围器件外围器件CSSCK MOSI MISO外围器件外围器件CSSPI总线定义:总线定义:串行时钟线(串行时钟线(SCK,同步脉冲),同步脉冲)主机输入主机输入/从机输出数据线(从机输出数据线(MISO,高位在前),高位在前)主机输出主机输出/从机输入数据线(从机输入数据线(MOSI,高位在前),高位在前)从机选择线从机选择线 一、一、用一般用一般I/O口线模拟口线模拟扩展扩展SPI外设接口外设接口 用用P1.0模拟模拟MCU的数据输出端(的数据输出端(MOSI) 用用P1.1模拟模拟SPI的的SCK输出

54、端(输出端(SCK) 用用P1.2模拟模拟SPI的从机选择端(的从机选择端(CS) 用用P1.3模拟模拟SPI的数据输入端(的数据输入端(MISO)8.4.3 SPI串行外设接口总线串行外设接口总线 单片机模拟单片机模拟1位数据输入位数据输入/输出的过程如下:输出的过程如下: MCU输出输出1位位SCK时钟的低电平,使接口时钟的低电平,使接口芯片串行左移,芯片串行左移,1位数据输入至位数据输入至89C52的的P1.3; 再置再置P1.1为为1,使,使89C52从从P1.0输出输出1位数据位数据至串行接口芯片至串行接口芯片 依次循环依次循环8次,完成次,完成1次通过次通过SPI传输传输1个字个字

55、节的操作。节的操作。 在一个在一个CLK中,下降沿输出,上升沿输入,中,下降沿输出,上升沿输入,或反之。或反之。8.4.3 SPI串行外设接口总线串行外设接口总线例例8-4 如图如图8-16所示,所示,MCU串行输入子串行输入子程序程序SPIIN,从,从2814 (E2PROM)的)的SPISO线线上接收上接收1字节数据并放入寄存器字节数据并放入寄存器R7中。中。图图8-16 89C52与与MCM2814的硬件连接图的硬件连接图P1.0P1.1P1.2P1.389C52 5 86 31 72 4MCM2814VCC8.4.3 SPI串行外设接口总线串行外设接口总线C语言程序清单:语言程序清单:

56、#inclued #include sbit sck=0 x91;/P1.1的地址的地址sbit ss=0 x92;/P1.2的地址的地址 sbit miso=0 x93;/P1.3的地址的地址sbit mosi=0 x90;/P1.0的地址的地址 unsigned char spiin(void) /接收子程序接收子程序 unsigned int i;unsigned char tmp=0; /接收到数据暂存于接收到数据暂存于tmp sck=1; /准备开始准备开始 ss=0; /置片选信号置片选信号8.4.3 SPI串行外设接口总线串行外设接口总线for(i=0;i8;i+)sck=0;_

57、nop_();_nop_();if(miso&1) tmp+=1;else tmp+=0;tmp=tmp1;sck=1;return tmp; /接收完,返回数据接收完,返回数据8.4.3 SPI串行外设接口总线串行外设接口总线 例例8-5 MCU串行输出子程序串行输出子程序SPIOUT,将将89C52中中R7寄存器的内容传送到寄存器的内容传送到2814的的SPISI线上。线上。C语言程序清单:语言程序清单:#inclued #include sbit sck=0 x91;/P1.1的地址的地址sbit ss=0 x92;/P1.2的地址的地址 sbit miso=0 x93;/P1.

58、3的地址的地址sbit mosi=0 x90;/P1.0的地址的地址 8.4.3 SPI串行外设接口总线串行外设接口总线 void spiout(unsigned char tmp) /发送子程序发送子程序 unsigned int i;sck=1;ss=0; for(i=0;i8;i+)sck=0;_nop_();_nop_();if(tmp&0 x80)mosi=1; /判位发送判位发送elsemosi=0;sck=1;tmp=tmp1;/左移准备取次高位左移准备取次高位 8.4.3 SPI串行外设接口总线串行外设接口总线 例例8-6 MCU串行输入串行输入/输出子程序输出子程序SPIIO,将将89C52中中R7的内容传送到的内容传送到2814的的SPISI线线上,同时从上,同时从2814的的SPISO接收接收1字节数据存字节数据存入入R0中。中。同时收发程序同时收

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论