单片机的串行总线拓展技术
单总线接口简介
概述
单总线及相应芯片是美国Dallas Semiconductor公司近年推出的新技术,也称为I-Wire总线结构。单总线系统定义了一根信号线,总线上的每个器件都能够在合适的时间驱动它,相当于把计算机的地址线、数据线、控制线合为一根信号线对外进行数据交换而无须时钟同步线。目前,已有多种器件选用单总线结构,如A/D转换器、D/A转换器、温度传感器等。
单总线技术作用距离在单片机I/O直接驱动下可达200m,经扩展可达1000m以上。使用单总线结构可以大大简化电路设计,节约引脚的使用,允许挂上百个器件,能满足一般测控系统的要求,如环境状态检测系统、实时气象监测系统(自动气象站)、军用仓库测控系统、农业塑料大棚测控系统、宾馆楼宇监管系统、停车收费系统、考勤管理系统等领域的应用开发。单总线的数据传输有两种模式,通常以16.3Kbps的速率通信,超速模式可达142Kbps。因此,只能用于对速度要求不高的场合,一般用于100Kbps以下速率的测控或数据交换系统中。
硬件结构及配置
单总线只有一根数据线,设备、主机或从机通过一个漏极开路或三态端口连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其他设备所使用,单总线端口为漏极开路,其内部等效电路如图10-1所示。
单总线要求外接一个约5千欧的上拉电阻,以满足单总线的闲置状态为高电平的要求。不管什么原因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态。位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平),如果总线保持低电平超过480us,总线上的所有器件将复位。另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间E2PROM写入等)具有足够的电源电流,必须在总线上提供强上拉(如图10-1所示的MOSFET)。
命令序列
单片机系统中配置的各种器件,由Dallas公司提供专用芯片。每个芯片都有64位ROM,从最低位开始,前8位是族码,表示产品的分类编号;接着的48位是一个唯一的序列号;最后8位是CRC校验码。典型的单总线命令序列如下。
- 初始化
初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道总线上有从机设备且准备就绪。 - ROM命令
读ROM命令、匹配ROM命令、搜索ROM命令、报警搜索命令、跳跃ROM命令。这些命令与各个从机设备的唯一 64位ROM相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备,还允许主机能够检测到总线上有多少个从机设备以及其设备类型。 - 功能命令(以DS18B20为例)
在主机发出ROM命令后,可以访问某个指定的DS18B20,接着就可以发出支持的某个功能命令,这些命令允许主机写入或读出DS18B2O暂存器、启动温度转换以及判断从机的供电方式。
信号方式
所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号,并且发送所有的命令和数据都是字节的低位在前,这一点与多数串行通信格式不同,多数为字节的高位在前。
- 初始化序列(复位和应答脉冲)
单总线上的所有通信都是以初始化序列开始的,包括:主机发出的复位脉冲及从机的应答脉冲,如图10-2所示。当从机发出响应主机的应答脉冲时,即向主机表明它处于总线上,且工作准备就绪。在主机初始化过程,主机通过拉低单总线至少48us,以产生(Tx)复位脉冲。接着,主机释放总线,并进入接收模式(Rx)。当总线被释放后5千欧上拉电阻将单总线拉高,在单总线器件检测到上升沿后,延时15〜60us,接着通过拉低总线60〜240us,以产生应答脉冲。
-
读/写时隙
在写时隙期间,主机向单总线器件写入数据,而在读时隙期间,主机读入来自从机的数据,在每一个时隙,总线只能传输一位数据。存在两种写时隙,写1和写0。主机釆用写1时隙向从机写入1,而釆用写0时隙向从机写入0。所有写时隙至少需要60us,且在两次独立的写时隙之间至少需要1us的恢复时间。两种写时隙均起始于主机拉低总线。
产生写1时隙的方式:主机在拉低总线后,接着必须在15us之内释放总线,由5千欧上拉电阻将总线拉至高电平;
而产生写0时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少60us)。
在写时隙起始后15〜60us期间,单总线器件釆样总线电平状态,如果在此期间釆样为高电平,则逻辑1被写入该器件;如果为0,则写入逻辑0。
单总线器件仅在主机发出读时隙时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。所有读时隙至少需要60us,且在两次独立的读时隙之间至少需要1us的恢复时间。每个读时隙都由主机发起,至少拉低总线1us。在主机发起读时隙之后,单总线器件才开始在总线上发送0或1。若从机发送1,则保持总线为高电平;若发送0,则拉低总线。当发送0时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。从机发出的数据在起始时隙之后,保持有效时间15us,因而,主机在读时隙期间必须释放总线,并且在时隙起始后的15us之内釆样总线状态。
主机读/写时隙的时序示意图如图10-3所示。
SPI总线拓展技术
SPI总线概述
SPI (Serial Peripheral Interface,串行外设接口)是摩托罗拉公司推出的一种同步串行通信接口,用于微处理器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。目前,各半导体公司推出了大量的带有SPI接口的具有各种功能的芯片,如RAM、E2PROM. Flash ROMsA/D转换器、D/A转换器、LED/LED显示驱动器、I/O接口芯片、实时时钟、UART收发器等,为用户的外围扩展提供了极其灵活而价廉的选择。
由于SPI总线接口只占用微处理器4个I/O接口地址,釆用SPI总线接口可以简化电路没计,节省很多常规电路中的接口器件和I/O 口,提高设计的可靠性。
SPI总线结构由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通信,从而完成数据的交换。SPI接口由MISO (主机输入/从机输出数据线)、MOSI (主机输出/从机输入数据线)、SCK (串行移位哩)、CS (从机使能信号)4种信号构成,CS决定了唯一的与主设备通信的从设备,如没有CS信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通信。
通信时,数据由MOSI输出、MISO输入,数据在时钟的上升或下降沿由MOSI输出,在紧接着的下降或上升沿由MISO读入,这样经过8/16次时钟的改变,完成8/16位数据的传输。其典型系统框图如图10-8所示。
在SPI传输中,数据是同步进行发送和接收的,由于数据传输的时钟基于来自主处理器的时钟脉冲,因此SPI传输速度大小取决于SPI硬件,其波特率最高可以达到5Mbps。SPI总线主要特点如下:
- SPI是全双工通信方式,即主机在发送的同时也在接收数据:
- SPI设备既可以当作主机使用,也可以作为从机工作;
- SPI的通信频率可编程,即传送的速率由主机编程决定:
- 发送结束中断标志:
- 数据具有写冲突保护功能:
- 总线竞争保护等。
SPI总线的数据传输方式
SPI是一种高速的、全双工、同步的通信总线。主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机,如图10-9所示,两个移位寄存器形成一个内部芯片环形缓冲器。这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。
如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
SPI接口时序
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,SCK时钟极性(CPOL)对传输协议没有重大的影响。
如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样,SPI接口时序如图10-10所示;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样,SPI接口时序如图10-11所示。SPI主模块及与之通信的外设时钟相位和极性应该一致。
串行输入A/D芯片TLC2543接口技术
TLC2543引脚分配
TLC2543是一款拥有11路模拟输入通道,串行输出的12位模数转换器芯片。它采用逐次逼近技术实现A/D转换,具有输入通道多,可编程的输出长度,转换精度和转换速度高等优点。
引脚功能如下:
- AIN0〜AIN10:模拟输入通道。
- CS:片选,低电平有效。
- DATA INPUT:串行数据输入,8位数据,高位在前,低位在后。最先输入的4位数据用来选择输入通道,接下来的4位数据用来设定TLC2543的工作方式。
- DATA OUT:串行数据输出,有3种长度:8位、12位、16位。默认输出12位,数据输出顺序可以在工作方式中设定。
- I/O CLOCK:输入/输出同步时钟。
- REF+:正的转换参考电压,一般釆用Vcc,最大的输入电压取决于正的参考电压与负的参考电压的差值。
- REF-:负的转换参考电压,非差分模式时,可直接接地。
- Vcc:系统电源正。
- GND:系统电源地。
接口时序
TLC2543的时序有两种:使用片选信号CS和不使用片选信号CS。
在不使用片选信号CS的情况下,只是在第一次转换时将CS设置为低电平,以后就不再处理CS端口了,让CS 一直处于低电平状态。以后的每次转换都从转换结束信号的上升沿开始。
其时序如图10 -13所示。
使用片选信号CS时,每次转换都将CS变为低电平,开始写入命令字,直到DATA OUT端移出12位数据,然后将CS变为高电平,等待转换结束后,再将CS变为低电平,进行下一次转换。其时序如图10-14所示。
TLC2543输出的数据可以是8位、12位、16位,其时序相同,它们只是在转换周期前减少或增加4个时钟周期。
TLC2543工作过程
TLC2543 工作过程分为两个周期:I/O周期和实际A/D转换周期。
TLC2543的工作由CS使能或禁止。工作时CS必须为低电平。CS被置高时,串行数据输出端立即进入高阻态,为其他共享数据总线的器件让出数据总线:经过一个保持时间后,I/OCLOCK、DATAINPUT被禁止。当CS再次变为低电平时,开始一个新的I/O周期。
TLC2543的工作状态由EOC指示。复位状态EOC总是为高,只有在I/O周期的最后一个I/O CLOCK脉冲的下降沿之后,EOC变为低电平,表示转换周期开始。转换完成后,转换结果锁入输岀数据寄存器,EOC变高,其上升沿使转换器返回到复位状态,开始下一个I/O周期。
TLC2543的命令字
TLC2543每次转换前都必须输入一个8位命令字,包括一个4位模拟通道地址(D7〜D4)、一个2位数据长度选择(D3〜D2)、一个输出高位(MSB)在前或低位(LSB)在前的选择位(D1),以及一个单极性或双极性输出选择位(DO)的8位数据流。这个数据流是从DATAINPUT端加入的,命令字的输入釆用高位在前。命令字格式如表10-3所示。
命令字通道选择位(D7〜D4)从11个模拟通道中选择一个进行转换,或从3个内部自测电压中选择一个,以对转换器进行校准,或者选择软件掉电方式。
长度控制位(D3、D2)选择输出数据长度:选择12位数据长度时"所有的位都被输出。选择8位长度时,低4位被截取,转换精度降低,用以实现与8位串行接口快速通信。
选择16位时,在转换结果的低位端增加了4个被置为0的填充位,可以方便地与16位串行接口通信。顺序控制位D1选择输出数据的传送方式,即下一个I/O周期数据以低位在前还是高位在前输出数据。极性选择位DO选择转换结果以单极性还是双极性二进制数码表示。
I2C总线串行拓展技术
I2C总线概述
I2C是Inter-Integrated Circuit的缩写。I2C总线是一种由Philips公司开发的串行总线,用于连接微控制器及其外围设备。具有I2C接口的设备有微控制器、ADC、DAC、存储器、LCD控制器、LCD驱动器以及实时时钟等。
釆用I2C总线标准的器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元挂靠或脱离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统简单而灵活的扩展和控制。I2C只有两条物理线路:一条串行数据线(SDA), 一条串行时钟线(SCL)。
其连接方法如图10-16所示。
连接到I2C总线上的设备分两类:主控设备和从控设备。它们都可以是数据的发送器和接收器,但是数据的接收和发送的发起者只能是主控设备。正常情况下,I2C总线上的所有从控设备被设置为高阻状态,而主控设备保持高电平,表示空闲状态。
I2C具有如下特点:
- 只有两条物理线路,一条串行数据线(SDA), 一条串行时钟线(SCL);
- 每个连接到总线的器件都可以使用软件根据它的唯一地址来识别;
- 传输数据的设备间是简单的主从关系;
- 主机可以用作主机发送器或主机接收器;
- 它是一个真正的多主机总线,两个或多个主机同时发起数据传输时,可以通过冲突检测和仲裁来防止数据被损坏;
- 串行的8位双向数据传输,位速率在标准模式下可达100Kbps,在快速模式下可达400Kbps,在高速模式下可达3.4Mbps。
I2C总线协议
起始条件和停止条件
I2C总线的操作模式为主从模式,即主发送模式、主接收模式、从发送模式和从接收模式。
当I2C处于从模式时,若要传输数据,必须检测SDA线上的起始条件,起始条件由主控设备产生。起始条件在SCL保持高电平期间,SDA由高电平向低电平的变化状态如图10-17所示。
当I2C总线上产生了一个起始条件时,这条总线就被发出起始条件的主控器占用了,变成“忙”状态;而在SCL保持高电平期间,若SDA是由低电平向高电平变化状态则规定为停止条件。
如图10-17所示。停止条件也是由主控设备产生的,当主控器产生一个停止条件时,则停止数据传输,总线被释放,I2C总线变成“闲”状态。
从机地址
当主控器发出一个起始条件后,它还会立即送出一个从机地址,来通知与之进行通信的从器件。一般从机地址由7位地址位和1位读/写标志R/W组成,7位地址占据高7位,读/写位在最后。读/写位是0,表示主机将要向从机写入数据;读/写位是1,则表示主机将要从从机读取数据。
带有I2C总线的器件除了有从机地址(Slave Address)外,还可能有子地址。从机地址是指该器件在I2C总线上被主机寻址的地址,而子地址是指该器件内部不同部件或存储单元的编址。例如,带I2C总线接口的E2PROM就拥有子地址。某些器件(只占少数)内部结构比较简单,可能没有子地址,只有必需的从机地址。与从机地址一样,子地址实际上也是像普通数据那样进行传输的,传输格式仍然是与数据相统一的,
区分传输的到底是地址还是数据要靠收发双方具体的逻辑约定。子地址的长度必须由整数个字节组成,可能是单字节(8位子地址),也可能是双字节(16位子地址),还可能是3字节以上,这要看具体器件的规定。
数据传输控制
I2C总线总是以字节(Byte)为单位收发数据,每个字节的长度都是8位,每次传送字节的数量没有限制。
I2C总线首先传输的是数据的最高位(MSB),最后传输的是最低位(LSB)。另外,每个字节之后还要跟一个响应位,称为应答。接收器接收数据的情况可以通过应答位来告知发送器。应答位的时钟脉冲仍由主机产生,而应答位的数据状态则遵循“谁接收谁产生”的原则,即总是由接收器产生应答位。
主机向从机发送数据时,应答位由从机产生:主机从从机接收数据时,应答位由主机产生。I2C总线标准规定:应答位为“0”,表示接收器应答(ACK),简记为A;应答位为“1”,则表示非应答(NACK),简记为入。发送器发送完LSB之后,应当释放SDA线,以等待接收器产生应答位。接收器在接收完最后一个字节的数据,或者不能再接收更多的数据时,应当产生非应答来通知发送器。发送器如果发现接收器产生了非应答状态,则应当终止发送。
I2C总线基本数据传输格式根据从机地址可以分为7位寻址和10位寻址两种数据格式,无子地址的从机地址由7位地址位和1位读/写位构成,称为7位寻址方式,其数据格式如图10-18(a)和图10-19 (a)所示;有子地址的从机地址为10位寻址方式,分别由7位地址位、1位读/写位及2位子地址构成,其数据格式如图10-18 (b)和图10-19 (b)所示。
其中:
S:起始位(START), 1位;
RS:重复起始条件,1位;
SA:从机地址(Slave Address), 7 位;
SA2:从机子地址,2位;
W:写标志位(Write), 1位;
R:读标志位(Read), 1位;
A:应答位(Acknowledge), 1 位:
A :非应答位(Not Acknowledge), 1 位;
D:数据(Data),每个数据都必须是8位;
P:停止位(STOP), 1位。
数据貨输时序图
I2C总线主机向从机发送1个字节数据的时序如图10-20所示,主机从从机接收1个字节数据的时序如图10-21所示。
图10-20和图10-21中,SDA信号线被画成了两条,一条是主机产生的,另一条是从机产生的。实际上主机和从机的SDA信号线总是连接在一起的,是同一条SDA。画成两条SDA表示在I2C总线上主机和从机的不同行为。
MCS-51单片机扩展I2C总线器件的接口设计
目前,许多厂商不断推出I2C总线接口器件。对于51系列单片机,有一些品种在片上配置了I2C总线接口,但多数品种没有配置I2C总线接口。这时可以利用通用并行I/O 口线模拟FC总线接口的时序,使这些单片机不受带有I2C总线接口的限制。因此,在许多单片机应用系统中可以将I2C总线接口的模拟传送技术作为常规的设计方法。
AT24C02 5草片机的接口我木
图 10-22 中,AT24C02 为 E2PROM 芯片,PCF8570 为静态 256x8 RAM, PCF8574 为 8位I/O 口,SAA1064为4位LED驱动器。虽然各种器件的原理和功能有很大的差异,但它们与MCS-51的连接是相同的。
Atmel公司生产的AT24CXX系列产品是I2C接口 E2PROM存储器,串行E2PROM存储器是各种串行接口器件中应用较多的器件。与并行的E2PROM相比,串行E2PROM的数据传送速度较低。但是,它具有低电压、低功耗、体积小和引脚少的特点,比较适用于速度不高、单片机I/O资源紧张的场合。
本节以AT24C02为例,简要介绍E2PROM芯片AT24C02的引脚功能、与单片机的接口方法、信号时序和编程方法。
AT24C02引脚分配
AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节。AT24C02支持I2C总线数据传送协议。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端AO、A1和A2可以实现将最多8个AT24C02器件连接到总线上。
其引脚分配如图10-23所示。
SCL:串行时钟输入引脚,用于产生器件所有数据发送或接收的时钟。
SDA:串行数据/地址引脚,用于器件所有数据的发送或接收。SDA是一个开漏输出引脚,可与其他开漏输出或集电极开路输出进行线或。
A0、A1、A2:器件地址输入端,用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。AT24C02最大可级联8个器件,如果只有一个AT24C02被总线寻址,这3个地址输入脚(AO、Al、A2)必须连接到GND。
WP:写保护,如果WP引脚连接到Vcc,所有的内容都被写保护,只能读;当WP引脚连
接到GND或悬空,则允许器件进行正常的读/写操作。
AT24C02的存储结构和寻址方式
AT24C02的存储容量为2Kb,内容分成32页,每页8B,共256B。操作时有两种寻址方式:芯片寻址和片内子地址寻址。
- 芯片寻址:AT24C02的芯片地址为1010,其地址控制字格式如图10-24所示。
其中A2、Al、AO为可编程地址选择位。A2、Al、A0引脚接高、低电平后得到确定的3位编码,与1010形成7位编码,即为该器件的地址码。R/W为芯片读/写控制位,该位为0,表示芯片进行写操作。
- 片内子地址寻址:芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00〜FF,共256个寻址单位。
AT24C02与单片机的接口
AT24C02的SCL和SDA分别与单片机的P3.0和P3.1连接,AT24C02的A2、Al、A0、WP分别接低电平,则AT24C02的地址为A0。其连接图如图10-25所示。