单片机原理及应用(C51版)教案第8章 单片机串行扩展技术_第1页
单片机原理及应用(C51版)教案第8章 单片机串行扩展技术_第2页
单片机原理及应用(C51版)教案第8章 单片机串行扩展技术_第3页
单片机原理及应用(C51版)教案第8章 单片机串行扩展技术_第4页
单片机原理及应用(C51版)教案第8章 单片机串行扩展技术_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第8章

单片机串行扩展技术对三种单片机串行总线的原理、时序和扩展方法进行讨论,并对单片机系统中最典型的串行总线器件的应用进行详细讲解。第8章

单片机串行扩展技术串行总线概述8.1单总线接口及其扩展8.2I2C总线接口及其扩展8.3SPI总线接口及其扩展8.4与并行总线相比,采用串行总线进行扩展时,简化了系统的连线,缩小了电路板的面积,节省了系统的资源,具有扩展性好、成本低廉、可靠性高、硬件易于模块化等优点。采用串行总线扩展方法是当前单片机应用系统设计的流行趋势。目前单片机应用系统常用的串行扩展总线有单总线、I2C总线(二线总线)和SPI总线(三线总线)。8.1串行总线概述1.基本结构单总线仅定义有一根信号线,时钟信息和数据均经该信号线传递。每个单总线器件都具有唯一的64位ID号,主机可根据它来区分挂在同一总线上的不同单总线器件。8.2.1

单总线的基础知识8.2

单总线接口及其扩展单总线是Dallas半导体公司推出的外围串行扩展总线,采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。单总线适用于单主机系统,单主机能够控制一个或多个从机设备。主机可以是微控制器(单片机),从机可以是单总线器件。当只有一个从机时,系统可按单节点系统操作;当有多个从机时,系统则按多节点系统操作。下图是单总线多节点系统的示意图。8.2.1

单总线的基础知识8.2.1

单总线的基础知识单总线只有一根数据线,系统中的数据交换、控制都在这根线上完成。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,这样允许设备不发送数据时释放总线,以便其他设备使用,其内部等效电路如下图所示,单总线要求外接一个约4.7kΩ的上拉电阻。当总线闲置时,状态为高电平。2.主机和从机之间的通信方法主机(单片机)和从机(单总线器件)之间的通信通过以下3个步骤来完成:初始化单总线器件;识别单总线器件;交换数据。由于两者是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问单总线器件都必须严格遵循单总线命令顺序:初始化、ROM命令、功能命令。如果出现顺序混乱,单总线器件不会响应(搜索ROM命令,报警搜索命令除外)。8.2.1

单总线的基础知识3.常用单总线器件通常把挂在单总线上的器件称为单总线器件。单总线器件内一般都配置了控制、收/发、存储等电路模块。为了区分不同的单总线器件,厂家生产时都要刻录一个64位的二进制ROM代码,以标志其ID号,这个ID号是全球唯一的。目前,单总线器件主要有数字温度传感器(如DS18B20)、A/D转换器(如DS2450)、门标、身份识别器(如DS1990A)、单总线控制器(如DS1WM)等。8.2.1

单总线的基础知识单总线器件要严格遵循通信协议,以保证数据的完整性。单总线定义了几种信号类型,包括复位脉冲、应答脉冲、写0、写1、读0和读1时序。所有的单总线命令序列(初始化、ROM命令、功能命令)都是由这些基本的信号类型组成的。这些信号,除了应答脉冲外都是由主机发出的信号,并且发出的所有命令和数据都是字节的低位在前。在单总线传输数据时,逻辑0用一段持续的低电平表示,逻辑1用一段持续的高电平表示。主机向从机传输数据时产生写时序,主机从从机读取数据时产生读时序。读时序和写时序均以单片机驱动总线产生低电平开始。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。8.2.2

单总线的数据传输时序1.初始化时序初始化时序包括主机发送的复位脉冲和从机发出的应答脉冲。主机通过拉低单总线至少480μs,以产生Tx复位脉冲,然后释放总线,并进入Rx接收模式。当主机释放总线,总线由低电平跳变为高电平时产生上升沿,从机检测到这个上升沿后,延时15~60μs,从机接收到单片机发来的复位脉冲后,便通过拉低总线60~240μs,以产生应答脉冲。主机接收到从机应答脉冲后,说明有单总线器件在线,然后就开始对从机进行ROM命令和功能命令操作。初始化时序如下图所示。8.2.2

单总线的数据传输时序2.主机写时序主机写时序由写0时序和写1时序组成。单总线传递写1、写0过程为:所有的写时序至少需要60μs,且每两个独立的时序之间至少需要1μs的恢复时间。对于写0时序,主机拉低总线并保持低电平至少60μs,然后释放总线;对于写1时序,主机拉低总线,然后在15μs内要释放总线。从机必须在15~60μs之间采样总线状态,从而接收到从机发送的数据。主机写时序如下图所示。8.2.2

单总线的数据传输时序3.主机读时序主机读时序由读0时序和读1时序组成。主机读操作时,主机首先要拉低总线至少1μs,主机释放总线后,总线电平就由从机决定。从机若发送1,则保持总线高电平,若发送0,则拉低总线。从机发送之后,保持15μs有效时间,因而,主机必须在15μs之中采样总线状态,从而接收到从机发送的数据。主机读时序如下图所示。8.2.2

单总线的数据传输时序8.2.3

数字温度传感器DS18B20Dallas半导体公司的DS18B20数字温度传感器是“单总线”的典型代表,DS18B20的温度测量范围为-55℃~+125℃,在-10℃~+85℃范围内,精度为±0.5℃。采用“单总线”方式传输,可以提高系统的抗干扰能力,所以DS18B20广泛用于温度采集及监控领域。1.DS18B20的引脚定义DS18B20的引脚图如下图所示。GND:电源地;DQ:数字信号输入输出端;Vdd:外接供电电源输入端(在寄生电源接线方式时接地)。2.DS18B20的内部结构DS18B20温度传感器主要由64位ROM、高速缓冲存储器、CRC生成器、温度敏感元件、高低温触发器及配置寄存器等部件组成。内部结构如下图所示。8.2.3

数字温度传感器DS18B20(1)DS18B20的ID号。每个DS18B20都有64位的ROM,以标志其ID号。出厂前ROM固化有确定的内容,如下图所示。低8位(28H)是产品类型标识号,接着的48位是该DS18B20的ID号,高8位是前56位的循环冗余校验码。由于每个DS18B20都有自己的ID号,这样就可以实现一根总线上挂接多个DS18B20的目的。8.2.3

数字温度传感器DS18B20(2)DS18B20的高速缓冲存储器。在DS18B20的内部有9个字节高速缓冲存储单元。各单元分配的功能如下图所示。第1及第2字节存放转换完成的温度值;第3和第4字节分别存放上、下限报警值TH和TL;第5字节为配置寄存器;第6、7、8字节为保留字节;第9字节是前8字节的CRC校验码,用来提高串行传输的可靠性。另外,在DS18B20的内部还用3个单元存放上下限报警值TH、TL和配置寄存器的设定值。数据先写入高速缓冲存储器,然后再传给单元。8.2.3

数字温度传感器DS18B20

配置寄存器字节的最高位D7为测试模式位,出厂时为0,用户不需要改动。D6D5位(R1R0)用于设置DS18B20的转换分辨率,取值00、01、10、11,对应分辨率有9、10、11和12位四种选择,对应的转换时间分别为:93.73ms、187.5ms、275ms和750ms。其余的低5位为保留位(均为1)。

配置寄存器格式如下所示(出厂时默认值为7FH,即分辨率为12位):位D7D6D5D4D3D2D1D0

0R1R0111118.2.3

数字温度传感器DS18B203.DS18B20的温度值格式DS18B20中的温度敏感元件完成对温度的检测,转换后的温度值以带符号扩展的二进制补码(16位)形式存储在高速缓冲存储器的第1和第2字节中。温度值以0.0625℃/LSB形式表达。采样值与温度值关系如下表所示。二进制采样值十六进制表示十进制温度/℃000001111101000007D0H+12500000001100100010191H+25.062500000000000010000008H+0.500000000000000000000H01111111111111000FFF8H-0.51111111001101111FE6FH-25.06251111110010010000FC90H-558.2.3

数字温度传感器DS18B2012位分辨率时的温度值格式如下图所示。当符号位S为0时,表示温度为正,只要将二进制采样值转换为十进制数就可以得到十进制表示的温度值;当符号位S为1时,表示温度为负(用补码表示),这时要对读取的采样值去补(取反加1),再转换为十进制数才能得到十进制表示的温度值。8.2.3

数字温度传感器DS18B204.ROM操作命令ROM命令主要用于单总线上接有多个DS18B20的情况,ROM操作命令与总线上具体DS18B20器件的ID号相关。ROM操作命令有5条,如下表所示。指令及代码说明读ROM33H读总线上DS18B20的ID(序列)号匹配ROM55H依ID号访问确定的DS18B20器件跳过ROMCCH只使用RAM命令,操作在线的DS18B20器件搜索ROMF0H对总线上的多个DS18B20进行识别报警搜索ECH主机搜索越限报警的DS18B20器件8.2.3

数字温度传感器DS18B205.RAM操作命令单片机利用ROM操作命令,与总线上指定的DS18B20器件建立起联系后,就可以对这个指定器件实施RAM操作命令。这些操作命令允许单片机写入或读出DS18B20器件缓冲器的内容。RAM操作命令有6条,如下表所示。指令代码说明温度转换44H启动DS18B20开始转换读缓冲器BEH读缓冲器的9个字节数据写缓冲器4EH向DS18B20写TH、TL及配置寄存器数据复制缓冲器48H将缓冲器的TH、TL和配置寄存器值送E2PROM回读E2PROMB8H将E2PROM中的TH、TL和配置寄存器值送缓冲器读供电方式B4H检测供电方式:寄生或外接方式8.2.3

数字温度传感器DS18B206.DS18B20的应用【例8-1】如下图所示,89C51和一个DS18B20构成单点温度检测系统,试编写温度测试程序,温度值存入片内RAM中的35H、36H两个单元。晶振频率为12MHz。8.2.3

数字温度传感器DS18B20分析首先初始化DS18B20;其次启动温度转换;然后读出温度值(2个字节)并分别存入35H、36H两个单元。可以定义一些参数DQ:DS18B20的数据总线接脚;TEMP_L:35H,保存读出的温度数据的低位;TEMP_H:36H,保存读出的温度数据的高位。本程序仅适合单个DS18B20和MCS-51单片机的连接。8.2.3

数字温度传感器DS18B20参考程序#include<reg51.h>#include<intrins.h>#defineucharunsignedchardataucharTEMP_L_at_0x35;dataucharTEMP_H_at_0x36;voiddelay5(ucharn)//延时5μs{ do { _nop_(); _nop_(); _nop_(); n--; } while(n);}voidinit_18b20()//DS18B20的初始化函数{ DQ=1; //拉高总线,准备初始化 _nop_(); DQ=0; //拉低电平,初始化 delay5(100); //延时500μs DQ=1; //释放总线 delay5(100); //延时500μs}voidwritebyte(uchardat)//向DS18B20写数据的函数

{ uchari; for(i=0;i<8;i++) { DQ=0; DQ=dat&0x01; delay5(12);//写“0”至少拉低60μs//写“1”至少拉低15μs DQ=1; dat>>=1; delay5(1); } }8.2.3

数字温度传感器DS18B20ucharreadbyte()//从DS18B20读数据的函数

{uchardat,i,j;for(i=0;i<8;i++) {DQ=0;delay5(1);DQ=1; j=DQ;//读取数据,存在j的最低位dat=(dat>>1)|(j<<7);//读出的数据

//存在dat的最高位delay5(11);//整段程序要大于60μs}returndat;}voidtempchange()//温度转换函数{ writebyte(0xcc);//忽略ROM writebyte(0x44);//开始转换温度}voidreadtemp()//温度读取函数

{ writebyte(0xcc);//忽略ROM writebyte(0xbe);//读缓冲器}voidmain() { while(1) { init_18b20(); tempchange(); init_18b20(); readtemp(); TEMP_L=readbyte(); TEMP_H=readbyte(); }}8.2.3

数字温度传感器DS18B208.3

I2C总线接口及其扩展I2C总线是Philips公司推出的芯片间串行数据传输总线,后来发展成为嵌入式系统设备间通信的国际标准,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。1.I2C总线的特点(1)采用二线制。(2)传输速率高。(3)支持多主和主/从两种工作方式。8.3.1

I2C总线的基础知识2.I2C总线的架构I2C总线只有两根连线。一根是数据线SDA,另一根是时钟线SCL。所有连接到I2C总线上的器件的数据线都接到SDA线上,各器件的时钟线均接到SCL线上。I2C总线的基本架构如下图所示。8.3.1

I2C总线的基础知识3.I2C总线的常用器件I2C总线广泛用于各种新型芯片中,如I/O电路、存储器、A/D转换器、D/A转换器、温度传感器及微控制器等。许多器件生产厂商都采用了I2C总线设计产品,如Atmel公司的E2PROM器件AT24C04

/08/16/64/128/256/512;MAXIMUM公司的A/D转换器件MAX1036~MAX1039等。8.3.1

I2C总线的基础知识在I2C总线上,每一位数据位的传输都与时钟脉冲相对应。逻辑0和逻辑1的信号电平取决于相应的电源电压。对于数据传输,I2C总线协议规定了如下信号及时序。1.起始和停止信号起始和停止信号如下图所示。SCL为高电平期间,SDA由高电平向低电平的变化表示起始信号。SCL为高电平期间,SDA由低电平向高电平的变化表示停止信号。总线空闲时,SCL和SDA两条线都是高电平。SDA线的起始信号和停止信号由主机发出。在起始信号后,总线处于被占用的状态;在停止信号后,总线处于空闲状态。8.3.2

I2C总线的数据传输时序2.字节传输时序传输的每个字节必须是8位长度。先传最高位(MSB),每个被传输字节后面都要跟随应答位(即一帧共有9位),如下图所示。从机接收数据时,在第9个时钟脉冲要发出应答脉冲,但在数据传输一段时间后无法接收更多的数据时,从机可以采用“非应答”通知主机,主机在第9个时钟脉冲检测到SDA线无有效应答负脉冲(即非应答)则会发出停止信号以结束数据传输。与主机发送数据相似,主机在接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传输的“非应答”信号。然后从机释放SDA线,以允许主机产生停止信号。8.3.2

I2C总线的数据传输时序3.数据传输时序对于数据(多字节)传输,I2C总线协议规定:SCL由主机控制,从机在自己忙时拉低SCL线以表示自己处于“忙状态”。字节数据由主机发出,响应位由从机发出。SCL高电平期间,SDA线数据要稳定,SCL低电平期间,SDA线数据允许更新。数据传输时序如下图所示。8.3.2

I2C总线的数据传输时序4.寻址字节格式主机发出起始信号后要先传送1个寻址字节:7位从机地址,1位传输方向控制位(用“0”表示主机发送数据,“1”表示主机接收数据),格式如下:D7~D1组成从机的地址。D0是数据传送方向位,确定从机下一字节数据是读出还是写入(0为写入,1为读出)。主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较。如果相同,则认为自己正被主机寻址。其中:D7~D4为器件固有地址编码,固定为1010;D3~D1为器件引脚编码A2、A1、A0,正好与芯片的3、2、1引脚对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接。位D7D6D5D4D3D2D1D0

DA3DA2DA1DA0A2A1A08.3.2

I2C总线的数据传输时序对于没有配置I2C总线接口的单片机(如80C51、89C51等),可以利用通用并行I/O口线模拟I2C总线接口的时序。1.典型信号的时序I2C总线的数据传输有严格的时序要求。I2C总线的起始信号、停止信号、发送应答“0”及发送非应答“1”的时序如下图所示。8.3.3

I2C总线的时序模拟2.典型信号模拟程序【例8-2】89C51的P2.0模拟数据线SDA,P2.1模拟时钟线SCL,晶振频率为12MHz,试编写I2C总线的起始信号、应答“0”时序的程序段。编译预处理:延时函数:#include<reg51.h>#include<intrins.h>sbitSDA=P2^0;sbitSCL=P2^1;voiddelay5us(

)

{ _nop_(); _nop_(); _nop_(); _nop_();

_nop_();}voidstart(){ SCL=1; SDA=1; delay5us(); SDA=0; delay5us(); SCL=0;}起始信号S函数:发送应答位函数(数据“0”):voidsack(

){ SDA=0;

SCL=1;

delay5us(); SCL=0; SDA=1;} 8.3.3

I2C总线的时序模拟串行E2PROM的优点是体积小,功耗低,占用I/O口线少,性能价格比高。Atmel公司的E2PROM是一个系列,即AT24CXX系列存储器器件。典型产品是AT24C04,内含512B,擦写次数大于100万次,写入周期不大于10ms。1.AT24C04的引脚定义AT24C04引脚图如右上图所示。A0~A2:地址线。SDA:数据输入/输出线。SCL:串行时钟线。WP:写保护控制端,接地时允许写入。AT24C04与单片机连接如右下图所示。8.3.4

串行程序存储器AT24C042.AT24CXX系列存储器器件的地址I2C器件地址由固定部分和可编程部分组成,即AT24CXX系列存储器器件的地址如下表所示。以AT24C04为例,器件地址的固定部分为1010,器件引脚A2和A1的组合可以选择4个同样的器件。器件型号字节容量器件寻址字节内部地址字节数页面写字节数最多可接器件数固定标示片选AT24C01A128B1010A2A1A01/0188AT24C02256BA2A1A01/088AT24C04512BA2A1P01/0164AT24C08A1KBA2A1P01/0162AT24C16A2KBA2A1P01/0161AT24C32A4KBA2A1A01/02328AT24C64A8KBA2A1A01/0328AT24C128B16KBA2A1A01/0648AT24C256B32KBA2A1A01/0648AT24C512B64KBA2A1A01/012888.3.4

串行程序存储器AT24C043.主机写数据操作命令1)写单字节对AT24C04写入时,单片机发出起始信号“S”后,接着发送的是器件寻址写操作(即1010(A2)(A1)(P0)0,方向位为“0”),然后释放SDA线并在SCL线上产生第9个时钟信号;被选中的AT24C04在SDA线上产生一个应答信号“A”;单片机再发送要写入的片内单元地址;收到AT24C04应答“0”后单片机发送数据字节,AT24C04返回应答;然后单片机发出停止信号“P”,AT24C04启动片内擦写过程。时序如下图所示。8.3.4

串行程序存储器AT24C042)写多字节

要写入多个字节,可以利用AT24C04的页写入模式。

AT24C04的页为16字节。

与字节写相似,首先单片机分别完成起始信号“S”操作、器件寻址写操作及片内单元首地址写操作,收到AT24C04应答“0”后单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。

如果没有数据要发送了,单片机就发出停止信号“P”,AT24C04就启动内部擦写周期,完成数据写入工作(约10ms)。

写入n个字节的传输时序如下图所示。8.3.4

串行程序存储器AT24C044.主机读数据操作命令1)读当前地址

从AT24C04读数据时,单片机发出起始信号“S”后接着要完成器件寻址读操作,在第9个脉冲等待从机应答;被选中的从机在SDA线上产生一个应答信号“A”,并向SDA线发送数据字节;单片机发出应答信号和停止信号“P”。

读当前地址传输时序如下图所示。8.3.4

串行程序存储器AT24C042)读指定地址

读指定地址时,单片机也要先完成该器件寻址写操作和数据地址写操作(属于“伪写”,即方向控制位仍然为“0”),均在第9个脉冲处等待从机应答。被选中的从机在SDA线上产生一个应答信号“A”。

收到器件应答后,单片机要先重复一次起始信号“S”并完成器件寻址读操作(即1010(A2)(A1)(P0)1,方向位为“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号“A”。当最后一个字节数据读完后,单片机应返回非应答信号“”(高电平),并发出停止信号“P”。

读指定字节传输时序如下图所示。8.3.4

串行程序存储器AT24C045.AT24C04的应用【例8-3】扩展串行程序存储器AT24C04的系统连接原理图如下图所示,试编程实现以下功能:单片机先向AT24C04中写入4个字符“SCMC”,然后再将这4个字符依次读出,分别存入片内RAM的50H~53H单元中。晶振频率11.0592MHz。8.3.4

串行程序存储器AT24C04分析

题中E2PROM选用Atmel公司的AT24C04芯片,用89C51单片机的通用I/O口与之相连。

由于89C51没有I2C接口,需要用软件模拟I2C数据传输时序,这里用P2.0模拟数据线SDA,P2.1模拟时钟线SCL。

根据图8-18可知,AT24C04的A0~A2引脚均接地,所以该器件的写地址为A0H(10100000B),读地址为A1H(10100001B)。

根据表8-4可知,AT24C04的页面字节数为16,即从页面起始地址开始写的话,每次能连续写入16个字节,本题需要写4个字符,我们假设从芯片起始地址00H开始写,一次即可完成4字节的写入。8.3.4

串行程序存储器AT24C04参考程序#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitSCL=P2^1;sbitSDA=P2^0;ucharcodemem[4]={'S','C','M','C'};uchardataread_mem[4]_at_0x50;voiddelay5us(){ _nop_(); _nop_(); _nop_(); _nop_();

_nop_();}voiddelaynms(uintn){ uinti,j; for(i=0;i<n;i++) for(j=0;j<125;j++);}voidstart(){ SCL=1; SDA=1; delay5us(); SDA=0; delay5us(); SCL=0;}voidstop(){ SDA=0; SCL=1; delay5us(); SDA=1; delay5us(); SCL=0;}8.3.4

串行程序存储器AT24C04voidwritebyte(uchartemp){ uchari; SCL=0; for(i=0;i<8;i++) { temp=temp<<1; SDA=CY; SCL=1; delay5us(); delay5us(); SCL=0; } SDA=1; } voidwack() { SDA=0; SCL=1; delay5us(); SCL=0; SDA=1;}voidwackn() { SDA=1; SCL=1; delay5us(); SCL=0; SDA=0;} voidwrite() { uchari; start(); writebyte(0xa0); rack(); writebyte(0x00); rack(); for(i=0;i<4;i++) { writebyte(mem[i]); rack(); } stop(); delaynms(i); }8.3.4

串行程序存储器AT24C04ucharreadbyte() { uchari,x; for(i=0;i<8;i++) { SCL=1; x<<=1; x|=SDA; SCL=0; delay5us(); } returnx;}voidrack(void) { SCL=1; delay5us(); SCL=0;} voidread() { uchari; start(); writebyte(0xa0); rack(); writebyte(0x00); rack(); start(); writebyte(0xa1); rack(); for(i=0;i<3;i++) { read_mem[i]=readbyte(); wack(); } read_mem[i]=readbyte(); wackn(); stop();} 8.3.4

串行程序存储器AT24C04

voidmain() { write(); read();}8.4

SPI总线接口及其扩展SPI总线是Motorola公司推出的高速、全双工、同步串行通信总线。SPI总线允许MCU与各种外围设备以同步串行方式进行同步通信,属于全双工通信总线。SPI总线广泛用于E2PROM、实时时钟、A/D转换器、D/A转换器等器件。1.SPI总线概述SPI总线通常有3根线:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)和主机输出/从机输入数据线(MOSI)。除了上述3根线以外,一般还会有1条低电平有效的片选线(

),可以在多器件接入时使用。SPI工作模式有两种:主模式和从模式。SPI的串行总线通信协议是:由SCK提供时钟脉冲,MISO、MOSI则基于此脉冲完成数据传输。主机数据输出时,MOSI上的数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被从机读取,完成一位数据传输,输入也是同样原理。需要注意的是,SCK信号线只由主机控制,从机不能控制。不同的SPI设备,数据的改变和采集在时钟信号上升沿或下降沿有不同定义,将各种不同SPI接口芯片连到MCU的SPI总线时,应特别注意这些串行I/O芯片的输入/输出特性。8.4.1

SPI总线的基础知识2.SPI总线的系统结构MISO和MOSI用于串行接收和发送数据,其数据的传输格式是高位(MSB)在前,低位(LSB)在后;SCK是主机为从机提供同步时钟输入信号;

是片选使能信号。SPI总线的典型应用是单主机系统,该系统只有一台主机

温馨提示

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

评论

0/150

提交评论