收藏 分享(赏)

详解SPI总线应用.pdf

上传人:精品资料 文档编号:10263967 上传时间:2019-10-25 格式:PDF 页数:7 大小:210.74KB
下载 相关 举报
详解SPI总线应用.pdf_第1页
第1页 / 共7页
详解SPI总线应用.pdf_第2页
第2页 / 共7页
详解SPI总线应用.pdf_第3页
第3页 / 共7页
详解SPI总线应用.pdf_第4页
第4页 / 共7页
详解SPI总线应用.pdf_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、详解 SPI总线规范 SPI 是英文 Serial Peripheral Interface 的缩写,中文意思是串行外围设备接口, SPI 是 Motorola 公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与 SPI 有关的软件就相当简单,使 CPU 有更多的时间处理其他事务。 SPI 概述 SPI:高速同步串行口。 3 4 线接口,收发独立、可同步进行 . SPI,是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEP

2、ROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如 AT91RM9200. SPI 总线系统是一种同步串行外设接口,它可以使 MCU 与各种外围设备以串行方式进行通信以交换信息。外围设置 FLASHRAM、网络控制器、 LCD 显 示驱动器、 A/D 转换器和 MCU 等。 SPI 总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使

3、用 4 条线:串行时钟线( SCK)、主机输入 /从机输出数据线 MISO、主机输出 /从机输入数据线 MOSI 和低电平有效的从机选择线 SS(有的 SPI 接口芯片带有中断信号线 INT 或 INT、有的 SPI 接口芯片没有主机输出 /从机输入数据线 MOSI)。 SPI 的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少 4 根线,事实上 3根也可以(单向传输时)。也是所有基于 SPI 的设备共有的 ,它们是 SDI(数据输入), SDO(数据输出), SCK(时钟), CS(片选)。 ( 1) SDO 主设备数据输出,从设备数据输入 ( 2) S

4、DI 主设备数据输入,从设备数据输出 ( 3) SCLK 时钟信号,由主设备产生 ( 4) CS 从设备使能信号,由主设备控制 其中 CS 是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个 SPI 设备成为可能。 接下来就负责通讯的 3 根线了。通讯是通过数据交换完成的 ,这里先要知道 SPI 是串行通讯协议,也就是说数据是一位一位的传输的。这就是 SCK 时钟线存在的原因,由 SCK 提供时钟脉冲, SDI, SDO 则基于此脉冲完成数据传输。数据输出通过 SDO 线,数据在时钟上升沿或下降沿时改变,在紧

5、接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少 8 次时钟信号的改变(上沿和下沿为一次),就可以完成 8 位数据的传输。 要注意的是, SCK 信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于 SPI 的设备中,至少有一个主控设备。这样传输的特点:这样的传输方 式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少 8 位数据,而 SPI 允许数据一位一位的传送, 甚至允许暂停,因为 SCK 时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据 。也就是说,主设备通过对 SCK 时钟线的控制可以完成对通讯的控制。 SPI 还是一

6、个数据交换协议:因为 SPI 的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的 SPI 设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。 在点对点的通信中, SPI 接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比 I2C 系统要稍微复杂一些。 最后, SPI 接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。 AT91RM9200 的 SPI 接口主要由 4 个引脚构成: SPICLK、 MOSI、 MISO 及 /SS,其中

7、 SPICLK 是整个 SPI 总线的公用时钟, MOSI、 MISO 作为主机,从机的输入输出的标志, MOSI 是主机的输出,从机的输入, MISO 是主机的输入,从机的输出。 /SS 是从机的标志管 脚,在互相通信的两个 SPI 总线的器件, /SS 管脚的电平低的是从机,相反 /SS 管脚的电平高的是主机。在一个 SPI通信系统中,必须有主机。 SPI 总线可以配置成单主单从,单主多从,互为主从。 SPI 的片选可以扩充选择 16 个外设 ,这时 PCS 输出 =NPCS,说 NPCS03 接 4-16 译码器 ,这个译码器是需要外接 4-16 译码器,译码器的输入为 NPCS03,输

8、出用于 16 个外设的选择。 同步外设接口 (SPI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与 EEPROM、 ADC、 FRAM 和显示驱动器之类的慢速 外设器件通信。 SPI( Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。 SPI 接口由 SDI(串行数据输入), SDO(串行数据输出), SCK(串行移位时钟), CS(从使能信号)四种信号构成, CS 决定了唯一的与主设备通信的从设备,如没有 CS 信号,则只能存在一个从设备,主设备通过产生移位

9、时钟来发起通讯。通讯时,数据由 SDO 输出, SDI 输入,数据在时钟的上升或下降沿由 SDO 输出,在紧 接着的下降或上升沿由 SDI读入,这样经过 8/16 次时钟的改变,完成 8/16 位数据的传输。 SPI 通信 该总线通信基于主 -从配置。它有以下 4 个信号: MOSI:主出 /从入 MISO:主入 /从出 SCK:串行时钟 SS:从属选择 芯片上 “从属选择 ”(slave-select)的引脚数决定了可连到总线上的器件数量。 在 SPI 传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用 SPI的时钟规范。然而,最常用的时钟

10、设置基于时钟极性 (CPOL)和时钟相位 (CPHA)两个参数, CPOL 定义 SPI 串行时钟的活动状态,而 CPHA 定义相对于 SO-数据位的时钟相位。 CPOL 和 CPHA 的设置决定了数据取样的时钟沿。 数据方向和通信速度 SPI 传输串行数据时首先传输最高位。波特率可以高达 5Mbps,具体速度大小取决于 SPI 硬件。例如, Xicor 公司的 SPI 串行器件传输速度能达到 5MHz。 SPI 总线接口及时序 SPI 总线包括 1 根串行同步时钟信号线以及 2 根数据线。 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行 同步时钟极性和相位可以进行配置, 时

11、钟极性( CPOL)对传输协议没有重大的影响 。如果 CPOL=“0“,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。 时钟相位( CPHA) 能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI 主模块和与之通信的外设音时钟相位和极性应该一致。 SPI 接口时序如图 3、图 4 所示。 SPI 是一个环形总线结构 , 由 ss( cs)、 sck、 sdi、 sdo 构成,其时序其实很简单,主要是在

12、sck 的控制下,两个双向移位寄存器进行数据交换。 假设下面的 8 位寄存器装的是待发送的数据 10101010,上升沿发送、下降沿接收、高位先发送。 那么第一个上升沿来的时候数据将会是 sdo=1;寄存器 =0101010x。下降沿到来的时候, sdi 上的电平将所存到寄存器中去,那么这时寄存器 =0101010sdi,这样在 8 个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个 spi 时序。 例子: 假设主机和从机初始化就绪:并且主机的 sbuff=0xaa,从机的 sbuff=0x55,下面将分步对 spi 的 8 个时钟周期的数据情况演示一遍 :假设上升沿发送数据 脉冲

13、 主机 sbuff 从机 sbuff sdi sdo 0 10101010 01010101 0 0 1 上 0101010x 1010101x 0 1 1 下 01010100 10101011 0 1 2 上 1010100x 0101011x 1 0 2 下 10101001 01010110 1 0 3 上 0101001x 1010110x 0 1 3 下 01010010 10101101 0 1 4 上 1010010x 0101101x 1 0 4 下 10100101 01011010 1 0 5 上 0100101x 1011010x 0 1 5 下 01001010 10

14、110101 0 1 6 上 1001010x 0110101x 1 0 6 下 10010101 01101010 1 0 7 上 0010101x 1101010x 0 1 7 下 00101010 11010101 0 1 8 上 0101010x 1010101x 1 0 8 下 01010101 10101010 1 0 这样就完成了两个寄存器 8 位的交换,上面的上表示上升沿、下表示下降沿, sdi、 sdo 相对于主机而言的。 其中 ss 引脚作为主机的时候,从机可以把它拉底被动 选为从机,作为从机的是时候,可以作为片选脚用 。根据以上分析,一个完整的传送周期是 16 位,即两个

15、字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个 8 位时钟周期才把数据读回来 SPI 总线是 Motorola 公司推出的三线同步接口,同步串行 3 线方式进行通信 :一条时钟线 SCK,一条数据输入线 MOSI,一条数据输出线 MISO;用于 CPU 与各种外围器件进行全双工、同步串行通讯。 SPI 主要特点有 :可以同时发出和接收串行数据 ;可以当作主机或从机工作 ;提供频率可编程时钟 ;发送结束中断标志 ;写冲突 保护 ;总线竞争保护等。图 3 示出 SPI 总线工作的四种方式,其中使用的最为广泛的是 SPI0 和 SPI3 方式 (实线表示 ): 图 2

16、 SPI 总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性( CPOL)对传输协议没有重大的影响 。如果 CPOL=“0“,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位( CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI 主模块和与之通信的外设音时钟相位和极性应该一致。 SPI 接口时序如图 3、图 4 所

17、示。 二, .SPI 功能模块的设计 根据功能定义及 SPI 的工作原理,将整个 IP Core 分为 8 个子模块: uC 接口模块、时钟分频模块、发送数据 FIFO 模块、接收数据 FIFO 模块、状态机模块、发送数据逻辑模块、接收数据逻辑模块以及中断形式模块。 深入分析 SPI 的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。为了简化设计规定,如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。 SPI 协议举例 SPI 是一个环形总线结构,由 ss( cs)、 sck、 sdi

18、、 sdo 构成,其时序其实很简单,主要是在 sck 的控制下,两 个双向移位寄存器进行数据交换。 假设下面的 8 位寄存器装的是待发送的数据 10101010,上升沿发送、下降沿接收、高位先发送。 那么第一个上升沿来的时候数据将会是 sdo=1;寄存器中的 10101010 左移一位,后面补入送来的一位未知数 x,成了 0101010x。下降沿到来的时候, sdi 上的电平将锁存到寄存器中去,那么这时寄存器 =0101010sdi,这样在 8 个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个 spi 时序。 举例: 假设主机和从机初始化就绪:并且主机的 sbuff=0xaa,从

19、机的 sbuff=0x55,下面将分步对 spi 的 8 个时钟周期的数据情况演示一遍 :假设上升沿发送数据 这样就完成了两个寄存器 8 位的交换,上面的上表示上升沿、下表示下降沿, sdi、 sdo 相对于主机而言的。其中 ss 引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是 16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的命令准备数据,主机在下一个 8 位时钟周期才把数据读回来。 SPI 总线是 Motorola 公司推出的三线同步接口 ,同步串行 3 线方式进行通信 :一条时钟线 SCK,一条数

20、据输入线 MOSI,一条数据输出线 MISO;用于 CPU 与各种外围器件进行全双工、同步串行通讯。 SPI 主要特点有 :可以同时发出和接收串行数据 ;可以当作主机或从机工作 ;提供频率可编程时钟 ;发送结束中断标志 ;写冲突保护 ;总线竞争保护等。下图示出 SPI 总线工作的四种方式,其中使用的最为广泛的是 SPI0 和 SPI3 方式 (实线表示 ): SPI 总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性( CPOL)对传输协议没有重大的影响。如果 CPOL=“0“,串行同步时钟的空闲状态为低电平;如果 CPO

21、L=1,串行同步时钟的空闲状态为高电平。时钟相位( CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI主模块和与之通信的外设备时钟相位和极性应该一致。 SPI 总线包括 1 根串行同步时钟信号线以及 2 根数据线。 SPI 模块为了和外设进行数据交换,根据 外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性( CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1

22、,串行同步时钟的空闲状态为高电平。时钟相位( CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI 主模块和与之通信的外设音时钟相位和极性应该一致。 SPI 接口时序如图 3、图 4 所示。 补 充: 上文中最后一句话: SPI 主模块和与之通信的外设备时钟相位和极性应该一致。个人理解这句话有 2 层意思:其一,主设备SPI 时钟和极性的配置应该由外设来决定;其二,二者的配置应该保持一致,即主设备的 SDO 同从设备的 SDO 配

23、置一致,主设备的 SDI 同从设备的 SDI 配置一致。因为主从设备是在 SCLK 的控制下,同时发送和接收数据,并通过 2 个双向移位寄存器来交换数据。工作原理演示如下图: 上升沿主机 SDO 发送数据 1,同时从设备 SDO 发送数据 0;紧接着在 SCLK 的下降沿的时候从设备的 SDI 接收到了主机发送过来的数 据 1,同时主机也接收到了从设备发送过来的数据 0. SPI 协议心得 SPI 接口时钟配置心得: 在主设备这边配置 SPI 接口时钟的时候一定要弄清楚从设备的时钟要求,因为主设备这边的时钟极性和相位都是以从设备为基准的。因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿

24、还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据。但要注意的是,由于主设备的 SDO 连接从设备的 SDI,从设备的 SDO 连接主设备的 SDI,从设备 SDI 接收的数据是主设备的 SDO发送过来的,主设备 SDI 接收的数据是从设备 SDO 发送过来 的,所以主设备这边 SPI 时钟极性的配置(即 SDO 的配置)跟从设备的SDI 接收数据的极性是相反的,跟从设备 SDO 发送数据的极性是相同的。下面这段话是 Sychip Wlan8100 Module Spec 上说的,充分说明了时钟极性是如何配置的: The 81xx module will always input data

25、 bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock. 意思是:主设备在时钟的下降沿发送数据,从设备在时钟的上升沿接收数据。因此主设备这边 SPI 时钟极性应该配置为下降沿有效。 又如,下面这段话是摘自 LCD Driver IC SSD1289: SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 data bit 0. 意思是:从设备 SSD1289 在时钟的上升沿接收数据,而且是按照从高位到地位的顺序接收数据的。因此主设备的 SPI 时钟极性同样应该配置为下降沿有效。 时钟极性和相位配置正确后,数据才能够被准确的发送和接收。因此应该对照从设备的 SPI 接口时序或者 Spec 文档说明来正确配置主设备的时钟。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报