SPI通信方式《精细》.docx
- 文档编号:3680621
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:13
- 大小:534.74KB
SPI通信方式《精细》.docx
《SPI通信方式《精细》.docx》由会员分享,可在线阅读,更多相关《SPI通信方式《精细》.docx(13页珍藏版)》请在冰豆网上搜索。
SPI通信方式《精细》
SPI总线通信电路设计
由于SPI(setialperipheralinterface)总线占用的接口线少,通信效率高,并且支持大部分处理器芯片,因而是一种理想的选择。
SPI是利用4根信号线进行通信的串行接口协议,包括主/从两种模式。
4个接口信号为:
串行数据输入(MISO,主设备输入、从设备输出)、串行数据输出(MOSI,主设备输出、从设备输入)、移位时钟(SCK)、低电平有效的从设备使能信号(cs)。
SPI最大的特点是由主设备时钟信号的出现与否来确定主/从设备间的通信。
一旦检测到主设备的时钟信号,数据开始传输。
由一个主机对接一个从机进行全双工通信的系统构成的方式。
在该系统中,由于主机和从机的角色是固定不变的,并且只有一个从机,因此,可以将主机的丽端接高电平,将从机的SS端固定接地。
图1全双工主机/从机连接方法
本系统采用的是由两个单片机互相连接构成多主机通信系统,SPI主设备负责产生系统时钟,并决定整个SPI网络的通信速率。
所有的SPI设各都采用相同的接口方式,可以通过调整处理器内部寄存器改变时钟的极性和相位。
由于SPI器件并不一定遵循同一标准,比如EEPROM、DAC、ADC、实时时钟及温度传感器等器件的SPI接口的时序都有所不同,为了能够满足不同的接口需要,采用时钟的极性和相位可配就能够调整SPi的通信时序。
SPI设各传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或收发器左移1位数据。
对于小于16位的数据在发送之前必须左对齐,如果接收的数据小于16位则采用软件将无效的数据位屏蔽,当主机发送一个连续的数据流时,有些外设能够进行多字节传输。
多数具有SPI接口的存储芯片就以这种方式工作。
在这种传输方式下,从机的片选端必须在整个传输过程中保持低电平。
此时,一次传输可能会涉及到成千上万字节的信息,而不必在每个字节的数据发送的前后都去检测其起始位和结束位,这正是同步传输方式优于异步传输方式的原因所在。
虽然SPI有以上优点,然而在远距离传输中却很少用到,原因主要是其抗干扰能力差过可靠传输距离只有是1—3m。
SPI采用的是单端非平衡的传输方式,即传输的数据位的电压电平是以公共地作为参考的。
在这种传输方式中,对于已进入信号中的干扰是无法消除和减弱的。
而信号在传输过程中总会受到干扰,而且距离越长干扰越严重,以致于信号传输产生错误。
在这种条件下,信号传输就变得毫无意义了。
另外,由于单端非平衡传输方式以公共地作为参考点,地线作为信号回流线,因此也存在信号电流。
当传输线两端的系统之间存在交流电位差时,这个电位差将直接窜到信号中,形成噪声干扰。
所以,为了解决抗干扰问题,通常采用平衡传输(balancedtransmission)方式,这里采用比较常见的RS-422。
∙
∙由于SPI(setialperipheralinterface)总线占用的接口线少,通信效率高,并且支持大部分处理器芯片,因而是一种理想的选择。
SPI是利用4根信号线
进行通信的串行接口协议,包括主/从两种模式。
4个接口信号为:
串行数据输入(MISO,主设备输入、从设备输出)、串行数据输出(MOSI,主设备输出、从设备输入)、移位时钟(SCK)、低电平有效的从设备使能信号(cs)。
SPI最大的特点是由主设备时钟信号的出现与否来确定主/从设备间的通信。
一旦检测到主设备的时钟信号,数据开始传输。
目录
∙SPI工作方式简介
∙SPI的数据传输
∙SPI用户逻辑
∙SPI基本原理与结构
SPI工作方式简介
SPI是由美国摩托罗拉公司最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口。
SPI模式可以允许同时同步发送和接收8位数据,并支持4种工作方式:
1.串行数据输出,对应RC5/SDO引脚;
2.串行数据输入,对应RC4/SDI/SDA引脚;
3.串行时钟,对应RC3/SCK/SCL引脚;
4.从动方式选择,对应RA5/SS/AN4引脚。
SPI模式下与之相关的寄存器有10个,其中4个是与I2C模式共用的。
图1所示是由一个主机对接一个从机进行全双工通信的系统构成的方式。
在该系统中,由于主机和从机的角色是固定不变的,并且只有一个从机,因此,可以将主机的丽端接高电平,将从机的SS端固定接地。
图1全双工主机/从机连接方法
若干个具备SPI接口的单片机和若干片兼容SPI接口的外围芯片,可以在软件的控制下,构成多种简单或者复杂的应用系统,例如以下3种。
(1)一个主机和多个从器件的通信系统。
如图2所示,各个从器件是单片机的外围扩展芯片,它们的片选端SS分别独占单片机的一条通用I/O引脚,由单片机分时选通它们建立通信。
这样省去了单片机在通信线路上发送地址码的麻烦,但是占用了单片机的引脚资源。
当外设器件只有一个时,可以不必选通而直接将SS端接地即可。
图2一个主机扩展多个外围器件
(2)几个单片机互相连接构成多主机通信系统。
图3所示为3个既可以当做主机也可以当做从机的单片机组成的系统。
图3多主机通信系统连接方法
(3)主机、从机和从器件共同组成的应用系统。
图4所示为一个主机、一个从机和多片外设芯片组成的应用系统。
这些外设芯片有的只接收来自单片机信息,有的只向单片机提供信息,还有的既接收也发送信息。
图4主机、从机和从器件互连
SPI的数据传输
SPI主设各负责产生系统时钟,并决定整个SPI网络的通信速率。
所有的SPI设各都采用相同的接口方式,可以通过调整处理器内部寄存器改变时钟的极性和相位。
由于SPI器件并不一定遵循同一标准,比如EEPROM、DAC、ADC、实时时钟及温度传感器等器件的SPI接口的时序都有所不同,为了能够满足不同的接口需要,采用时钟的极性和相位可配就能够调整SPi的通信时序。
SPI设各传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或收发器左移1位数据。
对于小于16位的数据在发送之前必须左对齐,如果接收的数据小于16位则采用软件将无效的数据位屏蔽,如图1所示。
SPI接口有主和从两种操作模式,通过MASTER/SLAVE位(SPICTL.2)选择操作模式以及SPICLK信号的来源,如图2所示。
图1SPI通信数据格式
图2SPI主控制器/从控制器的连接
SPI用户逻辑
该模块针对用户不同的应用来设计,本质上就是用户的具体业务应用,与SPI-4接口没有直接关系。
当应用支持多个端口时,这部分就显得至关重要。
下面以支持两个端口的应用来说明用户逻辑的设计技巧。
(1)SinkCore的用户逻辑
端口为两个时,用户逻辑就需要用两个不同的FIFO根据端口的地址等来分别缓存用户的两个业务数据.同时根据FIFO的情况来发出流控信息给SP14数据接口,如图1所示。
图1SinkCeore两个端口的用户逻辑
(2)SourceCore的用户逻辑
当端口为两个时,用户逻辑就需要根据流控信息和两个不同的FffiOffJ情况来做仲裁,谀定哪个用户逻辑FIFO需要发送给SPI4数据接口,如图2所示。
图2SourceCore2个端口的用户逻辑
1SPI基本原理与结构
∙串行外围设备接口(SPI)是由Motorola公司开发的、用来在微控制器
和外围设备芯片之间实现数据交换的低成本、易使用接口。
与标准的串行接口不同,SPI是一个同步协议接口,全双工通信,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机产生。
接收数据的外设使用时钟对串行比特流的接收进行同步化。
其传输速度可达几Mb/s。
SPI主要使用4个信号:
MISO(主机输入/从机输出)、MOSI(主机输出/从机输入)、SCLK(串行时钟)、
或
(外设片选或从机选择)。
MISO信号由从机在主机的控制下产生。
信号用于禁止或使能外设的收发功能。
为高电平时,禁止外设接收和发送数据;
为低电平时,允许外设接收和发送数据。
图1所示是微处理器通过SPI与外设连接的示意图。
主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。
寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机(如图2所示)。
这样,两个移位寄存器中的内容就被交换。
外设的写操作和读操作是同步完成的。
如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
当主机发送一个连续的数据流时,有些外设能够进行多字节传输。
多数具有SPI接口的存储芯片就以这种方式工作。
在这种传输方式下,从机的片选端必须在整个传输过程中保持低电平。
此时,一次传输可能会涉及到成千上万字节的信息,而不必在每个字节的数据发送的前后都去检测其起始位和结束位,这正是同步传输方式优于异步传输方式的原因所在。
虽然SPI有以上优点,然而在图像传输中却很少用到,原因主要是其抗干扰能力差。
SPI采用的是单端非平衡的传输方式,即传输的数据位的电压电平是以公共地作为参考的。
在这种传输方式中,对于已进入信号中的干扰是无法消除和减弱的。
而信号在传输过程中总会受到干扰,而且距离越长干扰越严重,以致于信号传输产生错误。
在这种条件下,信号传输就变得毫无意义了。
另外,由于单端非平衡传输方式以公共地作为参考点,地线作为信号回流线,因此也存在信号电流。
当传输线两端的系统之间存在交流电位差时,这个电位差将直接窜到信号中,形成噪声干扰。
所以,为了解决抗干扰问题,通常采用平衡传输(balancedtransmission)方式,这里采用比较常见的RS-422。
2RS-422简介
RS-422标准是RS-232的改进型,全称是“平衡电压数字接口电路的电气特性”。
它使用两根线之间的电压差来代表逻辑电平,通常称之为双绞线。
它是一种平衡传输,任何噪声或干扰都会同时影响两根双绞线中的每一根,但对二者之间的差异影响很小,这种现象称为共模抑制。
所以RS-422可以在更远的距离上以更快的速度传输数据,其抗干扰能力远强于RS-232、SPI等非平衡传输方式。
其最大传输距离约1200m,最大传输速度可达10Mb/s。
但是由于线路过长造成损耗,其传输速率会随着距离的增加而下降。
图3是RS-422的基本连接示意图。
驱动器D通过双绞线和接收器R连接。
位于双绞线接收端的电阻Rt是一个终止电阻,它用来消除在远距离传输过程中发生的信号反射。
但在300m以下的短距离传输中可以不接该电阻。
RS-422标准允许相同传输线上连接多个接收节点,最多可接10个,即一个主设备、10个从设备,从设备之间不能通信[8]。
RS-422支持一点对多点的双向通信。
由于它的接口采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必需的信号交换均可以通过软件方式或硬件方式实现。
RS-422双绞线之间的电压差在4V~12V之间。
其逻辑电平定义为:
在发送端,以双绞线之间电压差为+2V~+6V表示逻辑1,以-2V~-6V表示逻辑0;在接收端,双绞线之间电压差大于200mV时为逻辑1,小于-200mV时为逻辑0。
3S3C2450X的SPI接口
S3C2450X是SAMSUNG公司最近推出的一款高性能、低功耗16/32bitRISC处理器,其最高主频可达533MHz,一般工作频率为400MHz。
它采用ARM926EJ内核,该内核采用MMU、AMBA总线和哈佛高速缓存体系结构,具有单独的16KB指令Cache和16KB数据Cache,每个Cache都由8字长的行组成。
为了降低成本,片上集成了各种常用模块,包括NANDFlashBootloader、系统管理器、PLL时钟发生器、PWM定时器、8通道DMA和多种接口控制器等,这样可以使设计者在设计电路时省去许多专门的接口控制芯片,不仅降低了成本,也提高了系统的可靠性。
S3C2450X集成了2个高速SPI接口,每个接口都有2个8/16/32bit的移位寄存器分别用于发送(TxFIFO)和接收(RxFIFO)数据。
在发送时,将要发送的数据写入SPI发送数据寄存器(HS_SPI_Tx_DATA)中,数据会被自动移入TxFIFO;在接收数据时,为了从RxFIFO中读出数据,CPU访问SPI数据接收寄存器(HS_SPI_Rx_DATA),此时数据会自动转移到HS_SPI_Rx_DATA中。
S3C2450X的SPI接口支持主模式和从模式两种传输方式。
在主模式下,同步时钟SPICLK由S3C2450X产生并传输给外围设备。
此时,通过设置时钟配置寄存器(Clk_CFG)可以调整同步时钟SPICLK的频率,从而改变数据传输率。
SPI有3个可用时钟源:
内部时钟源PCLK,外部时钟源Epllclock和USBCLK。
其同步时钟计算公式为:
同步时钟频率=f/[2×(预分频值+1)]
其中f是所选时钟源的频率,预分频值的取值范围是0~255。
若取f=400MHz,则同步时钟频率最大可达200MHz,其传输速率理论上接近200Mb/s。
但由于受到内部寄存器和外部接口等其他因素限制,再加上传输速率太高时,由传输延时造成的影响越来越明显,从而会引起传输错误,所以其实际数据传输率不会很高,一般只有几Mb/s。
4转换电路设计
由于RS-422采用的电平与SPI不同,所以必须使用电平转换芯片。
这里采用MAXIM公司的MAX3088[10]。
这是一款用于RS-422通信的一路高速低功耗电平转换收发芯片,半双工通信,传输速率最大可达10Mb/s。
它有8个引脚:
5号引脚为电源引脚,8号引脚为接地引脚,6号(A)、7号(B)是差分信号引脚。
其他几个引脚分别为:
1(RO)是接收器输出;2()是接收器输出使能,3(DE)是驱动器输出使能,4(DI)是驱动器输入。
要使其工作在发送模式,只需将和DE同时置1,此时,若输入DI为1,则输出的A为1,B为0;若DI为0,则A为0,B为1。
它与S3C2450X的连接图如图4所示。
图4中将S3C2450X的SPICLK0和SPIMOSI0引脚分别接到2个MAX3088的DI引脚上,DE和RE接5V直流电源,A和B为差分信号对输出,C1、C2为旁路电容。
由于只使用SPI的发送功能,所以忽略了SPIMISO0引脚。
5接口电路调试
由于RS-422只是规定了电压标准而无具体实现细节,所以接口的软件调试主要是对S3C2450X的SPI模块进行设置。
其具体编程步骤如下:
(1)通过SPI配置寄存器CH_CFG设置数据传输格式。
(2)设置时钟配置寄存器Clk_CFG,决定同步时钟频率。
(3)设置SPI模式寄存器MODE_CFG,包括传送数据的单位以及是否启用DMA模式等。
(4)设置中断使能寄存器,包括是否响应FIFO溢出以及为空时所产生的中断等。
(5)通过设置CH_CFG中的RxChOn和TxChOn打开数据传输通道。
(6)发送数据,检查发送准备好标志(TxFifoRdy=1),然后写数据到数据发送寄存器TX_DATA。
(7)接收数据,检查接收准备好标志(RxFifoRdy=1),接着数据接收寄存器RX_DATA自动从读缓冲区读出数据,之后从RX_DATA中读数据。
将S3C2450X产生的SPIMOSI信号传输至驱动芯片MAX3088,用示波器测得转换前后信号的波形如图5所示。
从图5中可以看出转换后的2个差分信号VA和VB之差与转换前的单端信号DI保持了逻辑上的一致,只是由于芯片在信号转换中需要耗时,所以产生了约25ns的延时。
通过将SPI总线由单端不平衡传输转换为双端平衡传输,解决了SPI信号易受干扰的问题。
又由于其同步通信的高效性使得它非常适用于图像传输。
另外,如果对传输速率的要求不是太高,则RS-422也可以进行远距离传输,这大大扩展了SPI器件的使用范围。
随着技术的发展,以RS-422为代表的双端平衡传输模式将会得到越来越广泛的应用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精细 SPI 通信 方式