IIC与SPI接口.docx
- 文档编号:3800733
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:10
- 大小:94.70KB
IIC与SPI接口.docx
《IIC与SPI接口.docx》由会员分享,可在线阅读,更多相关《IIC与SPI接口.docx(10页珍藏版)》请在冰豆网上搜索。
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接口。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IIC SPI 接口