首页 > > > SPI总线简介.pdf

SPI总线简介.pdf

SPI总线简介.pdf

上传者: hewenyan198993 2011-10-16 评分1 评论0 下载105 收藏10 阅读量576 暂无简介 简介 举报

简介:本文档为《SPI总线简介pdf》,可适用于电信技术领域,主题内容包含SPI总线简介同步外设接口(SPI)是由摩托罗拉公司开发的全双工同步串行总线该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设符等。

SPI总线简介 同步外设接口(SPI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量 用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。 SPI(Serial Peripheral InteRFace)是一种串行同步通讯协议,由一个主设备 和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据 的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行 移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信 的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟 来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降 沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟 的改变,完成8/16 位数据的传输。 SPI通信 该总线通信基于主-从配置。它有以下4个信号: MOSI:主出/从入 MISO:主入/从出 SCK:串行时钟 SS:从属选择 芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。 在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来 自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。然而,最 常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI 串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。CPOL和CPHA 的设置决定了数据取样的时钟沿。 数据方向和通信速度 SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速 度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。 SPI总线接口及时序 SPI总线包括1根串行同步时钟信号线以及2根数据线。 SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极 性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空 闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一 进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降) 数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数 据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口 时序如图3、图4所示。 SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简 单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。 假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下 降沿接收、高位先发送。 那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。下降 沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器 =0101010sdi,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这 样就完成里一个spi时序。 例子: 假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的 sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升 沿发送数据 脉冲 主机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 10110101 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位,即两个字节,因为,首先主机要发送命令过去,然后从机根 据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来 SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信: 一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种 外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串 行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写 冲突保护;总线竞争保护等。图3示出SPI总线工作的四种方式,其中使用的最 为广泛的是SPI0和SPI3方式(实线表示): 图2 SPI总线四种工作方式 SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极 性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空 闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一 进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降) 数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数 据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口 时序如图3、图4所示。 二,.SPI功能模块的设计 根据功能定义及SPI的工作原理,将整个IP Core分为8个子模块:uC接口模 块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、状态机模块、发 送数据逻辑模块、接收数据逻辑模块以及中断形式模块。 深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进 行转换,就能得到其余的三种协议。为了简化设计规定,如果要连续传输多个数 据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状 态(空闲和工作)就能正确工作 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串 行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并 且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布 局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越 多的芯片集成了这种通信协议。 SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时 序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据 交换。 上升沿发送、下降沿接收、高位先发送。 上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。 下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。 假设主机和从机初始化就绪:并且主机的sbuff=0xaa (10101010), 从机的sbuff=0x55 (01010101),下面将分步对spi的8个时钟周期的 数据情况演示一遍(假设上升沿发送数据)。 --------------------------------------------------- 脉冲 主机sbuff 从机sbuff sdi sdo --------------------------------------------------- 0 00-0 10101010 01010101 0 0 --------------------------------------------------- 1 0--1 0101010x 10101011 0 1 1 1--0 01010100 10101011 0 1 --------------------------------------------------- 2 0--1 1010100x 01010110 1 0 2 1--0 10101001 01010110 1 0 --------------------------------------------------- 3 0--1 0101001x 10101101 0 1 3 1--0 01010010 10101101 0 1 --------------------------------------------------- 4 0--1 1010010x 01011010 1 0 4 1--0 10100101 01011010 1 0 --------------------------------------------------- 5 0--1 0100101x 10110101 0 1 5 1--0 01001010 10110101 0 1 --------------------------------------------------- 6 0--1 1001010x 01101010 1 0 6 1--0 10010101 01101010 1 0 --------------------------------------------------- 7 0--1 0010101x 11010101 0 1 7 1--0 00101010 11010101 0 1 --------------------------------------------------- 8 0--1 0101010x 10101010 1 0 8 1--0 01010101 10101010 1 0 --------------------------------------------------- 这样就完成了两 个寄存器8位的交换,上面的0--1表示上升沿、1--0表示下降沿,sdi、 sdo相对于主机而言的。根据以上分析,一个完整的传送周期是16位, 即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名 准备数据,主机在下一个8位时钟周期才把数据读回来。 SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式 进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO; 用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有: 可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可 编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。 SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为 广泛的是SPI0和SPI3方式。 SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行 通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU 与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和 接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束 中断 标志;写冲突保护;总线竞争保护等。下图示出SPI总线工作的四种方式,其中使 用的最为广泛的是SPI0和SPI3方式 (实线表示): SPI总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外 设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性 (CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的 空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。 时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据 传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数 据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降) 数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。 SPI总线包括1根串行同步时钟信号线以及2根数据线。 SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串 行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没 有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配 置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串 行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1, 在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模 块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图3、 图4所示。 补充: 上文中最后一句话:SPI主模块和与之通信的外设备时钟相位和极 性应该一致。个人理解这句话有2层意思:其一,主设备SPI时钟和极 性的配置应该由外设来决定;其二,二者的配置应该保持一致,即主设 备的SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI配置 一致。因为主从设备是在SCLK的控制下,同时发送和接收数据,并通 过2个双向移位寄存器来交换数据。工作原理演示如下图: 上升沿主机SDO发送数据1,同时从设备SDO发送数据0;紧接着 在SCLK的下降沿的时候从设备的SDI接收到了主机发送过来的数据1, 同时主机也接收到了从设备发送过来的数据0. 编辑本段SPI协议心得 SPI接口时钟配置心得: 在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟 要求,因为主设备这边的时钟极性和相位都是以从设备为基准的。因此 在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是下降 沿接收数据,是在时钟的下降沿还是上升沿输出数据。但要注意的是, 由于主设备的SDO连接从设备的SDI,从设备的SDO连接主设备的SDI, 从设备SDI接收的数据是主设备的SDO发送过来的,主设备SDI接收的 数据是从设备SDO发送过来的,所以主设备这边SPI时钟极性的配置(即 SDO的配置)跟从设备的SDI接收数据的极性是相反的,跟从设备SDO 发送数据的极性是相同的。下面这段话是Sychip Wlan8100 Module Spec 上说的,充分说明了时钟极性是如何配置的: The 81xx module will always input data 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文档说明来正确配置主设 备的时钟。 SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串 行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有 重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置 用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串 行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在 串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI主模块和 与之通信的外设音时钟相位和极性应该一致。 SPI功能模块的设计 根据功能定义及SPI的工作原理,将整个IP Core分为8个子模块: uC接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、 状态机模块、发送数据逻辑模块、接收数据逻辑模块以及中断形式模块。 深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串 行同步时钟进行转换,就能得到其余的三种协议。为了简化设计规定, 如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空 闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。 编辑本段SPI协议心得

编辑推荐

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 11
所需积分:1 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!