IIC与SPI接口.docx

上传人:b****5 文档编号:3800733 上传时间:2022-11-25 格式:DOCX 页数:10 大小:94.70KB
下载 相关 举报
IIC与SPI接口.docx_第1页
第1页 / 共10页
IIC与SPI接口.docx_第2页
第2页 / 共10页
IIC与SPI接口.docx_第3页
第3页 / 共10页
IIC与SPI接口.docx_第4页
第4页 / 共10页
IIC与SPI接口.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

IIC与SPI接口.docx

《IIC与SPI接口.docx》由会员分享,可在线阅读,更多相关《IIC与SPI接口.docx(10页珍藏版)》请在冰豆网上搜索。

IIC与SPI接口.docx

IIC与SPI接口

可控制多外设的SPI/IIC总线(转)

摘要

本应用笔记对两种模拟IC中常用的串行、数字接口(SPI&8482;或3线、I²C或2线)进行了比较,每种接口在不同的设计中都表现出其优点和缺点,具体取决于数据速率、可提供的设计空间以及噪声环境等。

本应用笔记给出了两种接口的区别,并举例详细说明了这些观点。

引言

虽然现实世界中的信号都是模拟信号,但是现在越来越多的模拟IC采用数字接口进行通信。

串行接口的数据通信介于主机(提供串行时钟)和从机/外设之间。

目前,大多数微控制器提供SPI(3线)和I²C(2线)接口,用于发送、接收数据。

微处理器通过几条总线控制周边的设备,比如:

模/数转换器(ADC)、数/模转换器(DAC)、智能电池、端口扩展、EEPROM以及温度传感器。

与通过并口传输数据不同的是:

串行接口通过2条、3条或4条数据/时钟总线连续传输数据。

虽然并行接口具有传输速度快的特点,但是串行接口占用较少的控制和数据线。

串行接口的基础知识

串行接口有三种:

3线、2线和单线。

本文主要讨论3线和2线串行接口。

串行外设接口(SPI)、队列串行外设接口(QSPI&8482;)和MICROWIRE&8482;(或MICROWIREPLUS&8482;)接口标准均采用3线接口。

芯片间总线(I²C)和系统管理总线(SMBus&8482;)均为2线接口。

这些串行接口拥有各自的优点和缺点,如表1所示。

3线接口

3线接口使用片选线(低电平有效CS或SS)、时钟线(SCLK)和数据输入/主机输出线(DIN或MOSI)。

3线接口有时也包括一条数据输出/主机输入线(DOUT或MISO),这时也叫做4线接口。

为了叙述的简便,本文将3线接口和4线接口统称为3线接口。

3线接口可以以更高的时钟频率工作,并且不需要上拉电阻。

SPI/QSPI和MICROWIRE接口都可以工作在全双工模式(数据可以在同一时间发送和接收),一般在嘈杂环境下工作不成问题。

3线接口是边沿触发,不是电平触发,因此具有更强的抗干扰能力。

3线接口的主要缺点是它要为每一个从机提供一条低电平有效的CS线,除非将从机用菊链形式连接,如图1所示(后续章节将详细讨论菊链方式)。

另外一个缺点是3线接口没有应答机制去判断数据的收发是否正确。

从软件设计看,在单主机/单从机应用中,3线接口比2线接口简单,效率更高。

图1.利用数据输入、数据输出、时钟和片选信号进行通信的3线接口

2线接口

2线接口包括一条数据线(SDA或SMBDATA)和一条时钟线(SCL或SMBCLK)。

2线接口的优点是使用更少的连线,这一点对于结构紧凑的设计尤为重要,比如:

手机、光纤的应用。

因为2线接口为每个从机分配唯一的地址,所以可以在一条总线连接多个从机而不需要片选信号。

2线接口在成功完成一次读操作后会传输一个应答位。

因为2线接口只有一条数据线,所以它只能工作在半双工模式(数据的读写不可以同时进行)。

因为2线接口是电平触发,所以在嘈杂环境中如果发生数据位错误,可能造成问题。

表1.3/2线接口优缺点的对比

Interface

Advantages

Disadvantages

3-Wire:

SPI,QSPI,andMICROWIREPLUS

1.Speed

2.Nopullupresistorsrequired

3.Full-duplexoperation

4.Noiseimmunity

1.Largernumberofbuslineconnections

2.Individualchip-selectlinesrequiredtocommunicatewithmorethanoneslaveatatime

3.Noacknowledgmentofreceiveddata

2-Wire:

I²CandSMBus

1.Fewerbuslineconnections

2.Multipledevicessharethesamebus

3.Receiveddataisacknowledged

1.Speed:

SMBuslimitedto100kHz;I²Climitedto3.4MHz

2.Half-duplexoperation

3.Open-drainbuslinesrequirepullupresistors

4.Reducednoiseimmunity

主机和从机经由多条总线通过串行接口进行通讯。

在写周期,主机使用自己产生的时钟和数据将数据传至从机。

在读周期,从机传输数据至主机。

SPI、QSPI和MICROWIRE设计

由Motorola制定的SPI接口已被很多流行的处理器和微控制器采用,比如MAXQ2000和MAXQ7654。

SPI接口需要两条控制线(低电平有效CS和SCLK)和两条数据线(DIN/SDI和DOUT/SDO)。

Motorola的SPI/QSPI标准称DIN/SDI数据线为MOSI(主机出,从机入),DOUT/SDO数据线为MISO(主机入,从机出),CS线为SS(从机选择)。

为了叙述的清晰,我们基于从机说明3线接口的数据线。

DIN是从机的数据输入线,DOUT是从机的数据读出线。

本文采用低电平有效CS、SCLK、DIN和DOUT来定义3线接口中的各条线,Maxim®外设使用了这些引脚名称。

大多数的SPI接口有两位配置位,时钟极性(CPOL)和时钟相位(CPHA)用于设定从机何时采集数据。

CPOL决定SCLK为高时总线空闲(CPOL=1)还是SCLK为低时总线空闲(CPOL=0)。

CPHA决定在SCLK的哪一个边沿将数据移入、移出。

当CPOL=0时,将CPHA设为0,表示在SCLK的上升沿将数据移入从机;将CPHA设为1,表示在SCLK的下降沿将数据移入从机。

CPOL和CPHA的两个状态允许四种时钟极性和相位的不同组合。

每一种都与其它三种不兼容。

为了实现主、从机间的通讯,主、从机的CPOL和CPHA必须有相同的设置。

在SPI接口的大多数应用中,SPI接口一次传送8位数据(一个字节),有一些微处理器一次传送两个或多个字节。

例如,MAXQ2000和MAXQ7654微处理器可一次传送8位或16位数据。

当CPOL=0、CPHA=0,低电平有效CS由高跳变为低,开始一个主机到从机的传输过程。

在SCLK信号高低变化的八个周期内,低电平有效CS信号必须保持为低。

DIN数据锁定在SCLK信号的上升沿。

在同样的8位周期内,DOUT线上的从机输出数据在SCLK的每个下降沿有效。

图2a给出了CPHA=1时的详细时序;图2b给出了CPHA=0时的详细时序。

图2a.3线接口时序(CPHA=1),CPHA=1、CPOL=1时,3线接口在时钟的上升沿将数据移入外设,在时钟的下降沿将数据移出外设

图2b.3线接口时序(CPHA=0),CHPA=0、CPOL=1时,3线接口在时钟的下降沿将数据移入外设,在时钟的上升沿将数据移出外设

因为总线上的每一个IC需要专属的片选线,所以低电平有效CS被用做每个从机的使能信号。

如果一条总线上有四个从机,则需要四条片选线。

如果从机的低电平有效CS为高电平(禁止),该从机就忽略SCLK线上的数据,将DOUT置为高阻。

部分3线接口设备可以链接成菊链的方式,而不需要为每个从机提供低电平有效的CS线,菊链方式能够用一条低电平有效的CS线和一条数据线控制多个串联从机。

在菊链结构中3线接口必须包含DOUT线,如图1所示,从机#1的DOUT连接到从机#2的DIN,如此反复。

SPI标准中没有定义最大数据速率。

外部设备定义了自己的最大数据速率,通常为MHz量级。

微处理器可以适应很宽范围的SPI数据速率。

在利用SPI接口进行通讯时,从机无法降低主机的数据速率或确定一个适当的速率。

QSPI标准和SPI标准非常相似。

事实上,外设无法区分QSPI总线和SPI总线。

与SPI标准中的主机不同,QSPI中的主机允许数据通过可编程的片选线传输数据。

QSPI的主机甚至可以传送长度在8位和16位之间的数据,而SPI的主机只可以传送8位的数据。

可以配置QSPI的设备去连续传送长度超过16字节的数据(最大为256位)。

这种传输完全由QSPI设备的配置来实现,不需要MCU的操作。

与SPI接口相似,QSPI接口也没有规定最大数据速率。

由NationalSemiconductor公司制定的老的MICROWIRE标准和SPI标准非常相似。

不同的是MICROWIRE标准的时钟极性和时钟相位是固定的(CPOL=0和CPHA=0)。

DIN的数据读取总是锁定在SCLK的上升沿。

DOUT的数据输出总是在SCLK的下降沿。

MICROWIRE标准没有规定最大数据速率。

芯片间电路接口(I²C)

不同于全双工的3线制接口,由Philips制定的I²C接口通过一条数据线(SDA)和一条时钟线(SCL)实现半双工通信。

I²C接口定义了一个简单的主/从双向通信接口。

在这个体系中,MCU决定自己为主机(写模式)或为从机(接收模式)。

每个从机具备专有、唯一的地址,使主机可以和多个从机通过一条总线进行通信,而不需要为每一个从机提供单独的片选线。

如图3所示,从机的数目只受限于最大线上电容(400pF),I²C接口的机制基于7位或10位地址,7位的地址更为常见。

在7位地址的机制中,总线上可以接127个不同的外设。

SCL和SDA线为漏极开路结构,所以闲置时必须为高。

当电源电压为3V时,连接一个1kΩ或更大阻值的上拉电阻;当电源电压为5V时,连接一个1.6kΩ或更大阻值的上拉电阻。

图3.利用数据输入/输出和时钟信号进行通信的2线接口

当SCL为高,SDA从高变为低,即发出了一个开始命令,启动I²C通信。

图4a所示,每个SCL时钟传输一个数据位,传输一个字节至少需要9个数据位。

一个写周期包括8个数据位和一个应答位(ACK)或者非应答位(NACK)。

如图4b所示,当数据在I²C总线上传输时,在SLK的上升沿写入从机,在SLK的下降沿从机输出。

在SCL时钟周期为高电平的时间内,SDA线的数据不可以改变。

一次传输的完成必须跟随着一个中止或重新开始的命令,既SCL为高时,SDA由低变为高。

当总线空闲时,SDA和SCL都为高。

图4a.开始条件和停止条件,2线接口采用开始、重复开始和停止命令在主机和从机之间传输数据

图4b.I²C应答位,应答数据时,2线接口将SDA拉低

I²C的写周期起始于开始命令,随后是7位从机地址和第8位用于标识读、写操作。

将第8位置低,表示写操作;将第8位置高,表示读操作。

主机在第8个时钟周期后释放总线。

如果从机应答数据传输,则在第9个时钟周期将SDA拉低。

如果从机不应答写命令,则释放SDA(该数据线通过上拉电阻置于高电平)。

随后,主机写入8位命令字节,然后是第二个ACK/NACK位。

接下来,主机写入8位数据字节并跟随第三个ACK/NACK位。

数据字节和最后的应答位完成一个读/写周期,更新外设输出,图5a是一个写周期的详细例子。

I²C读周期起始于开始命令,随后是需要写入数据的从机地址、第8位置高,表示读操作。

在ACK/NACK之后,主机写入命令字节访问从机寄存器。

在第二个ACK/NACK位后,主机重新写入从机地址。

在第三个ACK/NACK位后,从机控制总线,一次输出8位数据到总线上。

如图5b所示,当从与上次读操作相同的从机寄存器读取数据时,主机只需要在读取从机数据之前写入从机地址。

图5.2线接口一次传输8位数据,图5a是I²C写周期的一个例子;图5b是I²C读周期的一个例子

I²C接口支持低速(大于100kHz)、快速(大于400kHz)和高速(大于3.4MHz)三种数据速率。

I²C接口的高低电平为CMOS逻辑电平(低电平为0.3x电源电压以下,高电平为0.7x电源电压以上)。

系统管理总线(SMBus)

Intel®制定了SMBus标准用于低速通信,SMBus2线接口与I²C接口非常相似。

SMBus也使用一条数据线(SMBDATA)和一条时钟线(SMBCLK)进行通信。

SMBCLK和SMBDATA也需要上拉电阻,3V供电时上拉电阻大于8.5kΩ,5V供电时上拉电阻大于14kΩ。

SMBus工作电压范围在3V和5V之间,大于2.1V为高电平,低于0.8V为低电平。

I²C接口和SMBus接口的最主要区别是最高/最低时钟速率,因为I²C总线为被动传输总线,不存在总线超时问题,速率可低至“静止”。

SMBus接口则存在总线超时问题。

如果时钟信号拉低之后的时间大于超时周期(最长为35ms)时,从机复位接口,认为发生总线超时。

SMBus的超时周期限制了时钟的最小速率为19kHz。

为了保证正常通信,SMBCLK的速率必须介于10kHz至100kHz之间,而I²C接口的主机或从机则可根据传输数据的需要将时钟保持在低电平。

外设举例

微处理器经常通过串行接口与外设通信,当微处理器通过2线或3线接口访问外设后,外设相应地改变其模拟或数字输出。

例如,指使外设设置电池的充电的电流和电压、用温度传感器控制风扇、设置数模转换器的模拟输出等。

如图6所示,通过2线接口连接微处理器和8位数/模转换器(MAX5115))。

因为这个DAC有四个地址选择引脚,可以产生16个唯一的从机地址,因此可以在总线上并联16个DAC,因为MAX6641有不同的从机地址,同样的2线接口也可以设置SMBus温度传感器/风扇控制器(MAX6641),风扇控制器控制MOSFET的栅极,使其打开或关闭风扇。

图6.由于微控制器采用的是I²C接口,与外设通信时,如DAC、温度传感器,总线只需要两条连线

3线接口需要单独的片选线实现微处理器与多个并行从机之间的通信,更简单的2线接口用一条时钟线和一条数据线与总线上的每个设备通信。

可以通过设定不同的从机地址在总线上挂接多个IC。

大多数I²C接口外设具备地址选择引脚,以实现从机地址的配置。

外设可以使用的从地址数等于地址选择引脚数的平方。

例如,若外有两个地址选择引脚,它就可以配置四个不同的地址。

新一代设计以更少的地址选择引脚提供更多的从地址。

MAX7319是输入/输出扩展芯片,可以从两个地址选择引脚(AD2和AD0)扩展出16个从地址。

这些引脚可以接GND、电源(VCC)、SDA或SCL。

表2列出了这16个从地址的详细信息,A6、A5、A4固定为110,A3至A0可以通过AD2、AD0设置。

表2.MAX7319仅利用2个地址线(AD2和AD0)即可编译出16个不同地址

PinConnection

DeviceAddress

AD2

AD0

A6

A5

A4

A3

A2

A1

A0

SCL

GND

1

1

0

0

0

0

0

SCL

VCC

1

1

0

0

0

0

1

SCL

SCL

1

1

0

0

0

1

0

SCL

SDA

1

1

0

0

0

1

1

SDA

GND

1

1

0

0

1

0

0

SDA

VCC

1

1

0

0

1

0

1

SDA

SCL

1

1

0

0

1

1

0

SDA

SDA

1

1

0

0

1

1

1

GND

GND

1

1

0

1

0

0

0

GND

VCC

1

1

0

1

0

0

1

GND

SCL

1

1

0

1

0

1

0

GND

SDA

1

1

0

1

0

1

1

VCC

GND

1

1

0

1

1

0

0

VCC

VCC

1

1

0

1

1

0

1

VCC

SCL

1

1

0

1

1

1

0

VCC

SDA

1

1

0

1

1

1

1

进一步改进

3线接口和2线接口有几点不同的要求,每种接口都有其特殊优势。

近期内不可能用一种接口标准完全取代另一接口标准。

具备I²C接口的器件发展较快,并开始融合一些SMBus接口的特点,支持诸如超时复位等功能,使接口可以根据需要关断。

新的I²C从机地址长达10位,而不仅仅是7位,这给用户带来更多的灵活性。

3线接口和2线接口将并存,但I²C接口似乎占有更大的市场份额,大部分微处理器支持2线接口。

I²C接口的易用性及更少的连线使其增长量超过了SPI接口。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1