logo资料库

SPI接口学习笔记.pdf

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
SPI 接口简介 作者: 未知 时间: 2007-10-12 08:34:59 来自:网上转载 浏览次数: 1132 文字大小: 【大 】【中 】 【小 】 这几天碰到了使用 SPI 接口的 flash, 才知道 flash 还可以是串行的 ,看来以前真是井底之蛙啊 ,找了一些 SP I 接口的资料都不全 ,后来找到一点英文资料 ,翻译了一下 , 加上我的个人理解 ,凑成一篇了 ,希望对初学者有 点帮助。 SPI 接口的全称是 "Serial Peripheral Interface", 意为串行外围接口 ,是 Motorola 首先在其 MC68H CXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM,FLASH, 实时时钟 ,AD 转换器 , 还有数字信号处 理器和数字信号解码器之间。 SPI 接口是在 CPU 和外围低速器件之间进行同步串行数据传输 ,在主器件的移位脉冲下 ,数据按位传输 , 高位在前 ,地位在后 , 为全双工通信 ,数据传输速度总体来说比 I2C 总线要快 ,速度可达到几 Mbps 。 SPI 接口是以主从方式工作的 , 这种模式通常有一个主器件和一个或多个从器件 , 其接口包括以下四种信 号: (1 )MOSI – 主器件数据输出 ,从器件数据输入 (2 )MISO – 主器件数据输入 ,从器件数据输出 (3 )SCLK – 时钟信号 ,由主器件产生 (4 )/SS – 从器件使能信号 , 由主器件控制 在点对点的通信中 ,SPI 接口不需要进行寻址操作 ,且为全双工通信 ,显得简单高效。 在多个从器件的系统中 , 每个从器件需要独立的使能信号 ,硬件上比 I2C 系统要稍微复杂一些。
SPI 接口在内部硬件实际上是两个简单的移位寄存器 , 传输的数据为 8 位,在主器件产生的从器件使能 信号和移位脉冲下 ,按位传输 , 高位在前 ,低位在后。如下图所示 ,在 SCLK 的下降沿上数据改变 , 同时一位数 据被存入移位寄存器。 SPI 接口内部硬件图示: 最后 ,SPI 接口的一个缺点:没有指定的流控制 , 没有应答机制确认是否接收到数据。
SPI 接口单线应用 作者: 未知 时间: 2007-10-18 21:39:24 来自:网上转载 浏览次数: 1477 文字大小: 【大 】【中 】 1 SPI 通信 SPI 信号线 : 一般的 SPI 接口使用 4 条信号线与外围设备接口,其具体功能如下: 【小 】 SCLOCK : 主机的时钟线, 为数据的发送和接收提供同步时钟信号。 每一位数据的 传输都需要 1 次时钟作用, 因而发送或接收 1 个字节的数据都需要 8 个时钟作用。主 机的时钟可以通过固件进行设置,并和从机的时钟线相连。 MISO :主机输入 / 从机输出数据线。主机的 MOSO 应与从机的发送数据端相连, 进行高位在前的数据交换。 SS :低电平有效的从机选择线。当该线置低时,才能跟从机进行通信。 SPI 工作模式 :SPI 的工作模式分为:主模式和从模式。 主模式的特点是不论发送还是接收始终有 SCLOCK 信号, SS 信号不是必需的, 由于 SPI 只能有一个主机, 因而不存在主机的选择问题。 从模式的特点是无论发送还是接收必须在时钟信号 SCLOCK 的作用下才能进行, 并 且 SS 信号必须有效。 不论是在主模式下还是在从模式下,都要在时钟极性和时钟相位的配合下才能有效 的完成一次数据传输。 2 SPI 接口的单线应用 在标准的 SPI 接口间进行通信时, SPI 总线的四条信号线中: 主机 SCLOCK 与从机 S CLOCK 相连; 主机 MISO 与从机 MOSI 相连;主机 MOSI 与从机 MISO 相连; 主机控制信号线与从机的 SS 相连。在 SPI 接口与非标准接口进行 通信时,例如与有的串行 RAM 接口,由于双向 I/O 数据线只有一条,时钟和片选信号线 都有,那么如何利用 SPI 的高速特性进行数据的读出和写入呢 ? 在这里提出 SPI 的单线应用方案,其如图 1 所示。主机的时钟信号 SCLOCK 和片选信 号 SS 与从机的对应信号线相连, 不同的是主机的 MOSI 和 MISO 信号线分别经过合适的 电阻与从机的 I/O 信号线相连。当主机给从机发送数据时,在时钟信号的作用下,数据从 MOSI 口线经电阻 1 到从机的 I/O 口线; 当主机接收数据时, 也需要在时钟信号的作用下, 数据从从机的 I/O 口线经电阻 2 到主机的 MISO 口线。该方案中 MOSI 与 MISO 连在一起, 由于加了适当的电阻,所以不违反电路设计原则,但如果电阻大小不当会对信号的特性带 来影响 。
图 1 SPI 单线应用方案 3 SPI 接口的单线应用举例 本例是作者设计的单片机, ADuC812 的 SPI 总线与射频无线通信模块 nRF2401 间的 通信接口,由于 nRF2401 只支持 I/O 数据传输方式,但是为了提高无线通信的数据速率, 作者采用单线方式实现了 SPI 与 nRF2401 的通信。 电路设计 ADuC812 的 SPI 与 nRF2401 的连接原理如图 2 所示。其中 ADuC812 作为主机, n RF2401 作为从机, PWR 、 CE 、 CS 是 nRF2401 的工作模式选择信号,他们共同完成从 机的片选任务,相当于 SS 信号。 CLK1 是 ADuC812 串行时钟信号。根据信号阻抗匹配原 则,通信中选用两个 6K 的电阻。 ADuC812 单片机的 SPI 接口由 SPICON (SPI 控制寄 存器 ) 、 SPIDAT (SPI 数据寄存器 ) 来控制, 通过设定 SPICON 寄存器的各位实现 SPI 的各种工作模式。 图 2 ADuC812 的 SPI 与 nRF2401 的连接原理 控制寄存器 SPICON 中从高到低各位说明如下: ISPI : 中断标志位。当发送或接收 1 字节数据完毕时自动置 1 .当执行中断服务 程序时,硬件自动清除该位。该位也可以通过软件控制。 WCOL :写冲突错误标志位。 SPE :SPI 使能位。若 SPE=0 ,则 I2C 串行口工作;若 SPE=1 ,则 SPI 串行口工 作。
SPIM :主模式选择位。若 SPIM=0 ,则 SPI 工作于从模式;若 SPIM=1 ,则 SPI 工作于主模式。 CPOL :时钟极性选择位。 CPOL=0 ,在主机时钟下降沿时读取数据,各数据字节 之间传输时,时钟处于高电平空闲状态; CPOL=1 ,在主机时钟上升沿时读取数据,各 数据字节之间传输时,时钟处于低电平空闲状态。 CPHA ;时钟相位选择位。 CPHA=0 ,传输数据的最高位在 SS 的下降沿出现,在 时钟第 1 个前沿读入,之后的下一个数据位在时钟后沿出现, 在下一个前沿读入,直到 8 位数据读完; CPHA=1 ,传输数据在时钟前沿出现,在同 一时钟周期的后沿读入。 SPR1 、 SPR0 :SPI 波特率选择位。 接口程序设计 固件程序主要包括: SPI 口初始化程序 INITSPI ,送数据程序 SEN DDATA ,接收数据程 RECEIVEDATA 。 在 SPI 初始化程序中,控制寄存器 SPICON 设置为 33H , 即 CPOL=0 ,CPHA=0 , 当设置 CPOL= 1 , CPHA=1 时, 由于干扰脉冲的存在, ADuC812 与 NRF2401 不能很好的同步。 在发送数据子程序中,向数据寄存器 SPIDAT 写数据,如产生中断标志,说明数据传输 完毕,则可以发送下一个数据。 在接收子程序中, 由于 nRF2401 送数据的时钟是由 ADuC812 的 SCLOCK 产生的, 所以执行接收数据指令 MOVA , SPIDAT 时先要对数据寄存器 SPIDAT 写数据 0 ,也就 是执行指令 MOVA,SPIDAT ,其目的是为了产生接收数据时的时钟信号, 当单片机向 SPI DAT 写数据 0 时, nRF2401 通过 DATA 口向单片机送数据,改写 SPIDAT 的内容,这 就是所接收的数据。 SPI 单线方案在实际应用应注意以下问题: (1) 时钟相位与时钟极性的设置。 其设置要跟从机的数据读写时序相一致, 意干扰问题。 在一致时也要注 (2) 所加电阻值的大小。阻值的大小关系到信号传输的阻抗匹配问题,同时也影响数据传输 的速率,所以在选用电阻时一般取几 K 的电阻 .
SPI 总线接口 作者: 未知 时间: 2007-10-18 21:34:27 来自:网上转载 浏览次数: 1809 文字大小: 【大 】【中 】 【小 】 串行外围设备接口 SPI ( serial peripheral interface )总线技术是 Motorola 公司推 出的一种同步串行接口, Motorola 公司生产的绝大多数 MCU (微控制器)都配有 SPI 硬 件接口,如 68 系列 MCU 。SPI 用于 CPU 与各种外围器件进行全双工、同步串行通讯。 S PI 可以同时发出和接收串行数据。它只需四条线就可以完成 MCU 与各种外围器件的通讯, 这四条线是:串行时钟线( CSK )、主机输入 / 从机输出数据线( MISO )、主机输出 / 从机 输入数据线( MOSI )、低电平有效从机选择线 CS 。这些外围器件可以是简单的 TTL 移位 寄存器,复杂的 LCD 显示驱动器, A/D 、D/A 转换子系统或其他的 MCU 。当 SPI 工作时, 在移位寄存器中的数据逐位从输出引脚( MOSI )输出(高位在前),同时从输入引脚( M ISO )接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件 接收的字节数据进入移位寄存器中。主 SPI 的时钟信号( SCK )使传输同步。其典型系统 框图如下图所示。 SPI 主要特点有 : 可以同时发出和接收串行数据 ; 可以当作主机或从机工作 ; 提供频率可编程时钟 ; 发送结束中断标志 ; 写冲突保护 ; 总线竞争保护等。 图 2 示出 SPI 总线工作的四种方式,其中使用的最为广泛的是 SPI0 和 SPI3 方式 ( 实 线表示 ):
图 2 SPI 总线四种工作方式 SPI 总线接口及时序 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相 位可以进行配置,时钟极性( CPOL )对传输协议没有重大的影响。如果 CPOL= 0 ,串行 同步时钟的空闲状态为低电平;如果 CPOL=1 ,串行同步时钟的空闲状态为高电平。时钟 相位( CPHA )能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0 , 在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1 ,在串行同步 时钟的第二个跳变沿 (上升或下降) 数据被采样。 SPI 主模块和与之通信的外设音时钟相位 和极性应该一致。 SPI 总线接口时序如图所示。
SPI 接口的出错分析及其改进 作者: 未知 时间: 2007-10-18 21:36:26 来自: 网上转载 浏览次数: 559 文字大小: 【大】【 中】【 小】 单片机( MCU )系统为了与 SPI 标准外围接口器件进行通信,必须使用 SP I( Serial Peripheral Interface ,串行外设接口 ) 总线。 SPI 总线系统是 Motorol a 提出的一种同步串行外设接口,有信号线少、协议简单、传输速度快的特点,因 此有不少外围器件都采用 SPI 总线,如 Flash RAM 、A/ D 转换器、 LED 显示器、 MCU 以及计算机网络等。 MCU 中的 SPI 接口通过配置可与各个厂家生产的多种标 准外围器件直接连接。 对于那些没有 SPI 接口功能的 MCU 来说, SPI 接口的功能靠软件控制 MC U 的 I/O 口的方法来模拟。 不过,用软件来模拟 SPI 接口的功能, 工作速度非常慢, 并且需要主从器件的软件之间配合得非常好。如果在单片机芯片内部用硬件电路来 完成 SPI 接口功能,在硬件增加不多的情况下,能够极大地提高传输速度(最高频 率可达主器件的频率的 1/4 ),减轻软件的负担,使用极为方便。 SPI 接口工作的时候,没有应答信号,并且数据在发送的时候无需校验位, 所以,要求主从器件的软件必须完全符合 SPI 的时序要求,否则数据传输很容易出 现错误。本文通过 MCU 中 SPI 接口模块的设计,分析数据传输的各种出错情况, 并针对各种情况,增强 SPI 接口的错误处理能力。 1 SPR 设定错误 在从器件时钟频率小于主器件时钟频率时, 如果 SCK 的速率设得太快, 将导致接 收到的数据不正确 (SPI 接口本身难以判断收到的数据是否正确, 要在软件中处理) 。 整个系统的速度受三个因素影响:主器件时钟 CLK 主、从器件时钟 CLK 从和 同步串行时钟 SCK ,其中 SCK 是对 CLK 主的分频, CLK 从和 CLK 主是异步的。要 使 SCK 无差错无遗漏地被从器件所检测到, 从器件的时钟 CLK 从必须要足够快。 下 面以 SCK 设置为 CLK 主的 4 分频的波形为例,分析同步串行时钟、主时钟和从时 钟之间的关系。 图 1 主从时钟和 SCK 的关系
分享到:
收藏