SPI总线协议及SPI时序图详解含实例

上传人:我*** 文档编号:133112533 上传时间:2020-05-24 格式:PDF 页数:44 大小:817.08KB
返回 下载 相关 举报
SPI总线协议及SPI时序图详解含实例_第1页
第1页 / 共44页
SPI总线协议及SPI时序图详解含实例_第2页
第2页 / 共44页
SPI总线协议及SPI时序图详解含实例_第3页
第3页 / 共44页
SPI总线协议及SPI时序图详解含实例_第4页
第4页 / 共44页
SPI总线协议及SPI时序图详解含实例_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《SPI总线协议及SPI时序图详解含实例》由会员分享,可在线阅读,更多相关《SPI总线协议及SPI时序图详解含实例(44页珍藏版)》请在金锄头文库上搜索。

1、SPI总线协议及总线协议及SPI时序图详解时序图详解 SPI 是英语 Serial Peripheral Interface 的缩写 顾名思义就是串行外围设备接口 SPI 是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用四根线 节约 了芯片的管脚 同时为 PCB 的布局上节省空间 提供方便 正是出于这种简单易用的特性 现在越来越多的芯片集成了这种通信协议 SPI 是一个环形总线结构 由 ss cs sck sdi sdo 构成 其时序其实很简单 主要 是在 sck 的控制下 两个双向移位寄存器进行数据交换 上升沿发送 下降沿接收 高位先发送 上升沿到来的时候 sdo 上的电平将被

2、发送到从设备的寄存器中 下降沿到来的时候 sdi 上的电平将被接收到主设备的寄存器中 假设主机和从机初始化就绪 并且主机的 sbuff 0 xaa 10101010 从机的 sbuff 0 x55 01010101 下面将分步对 spi 的 8 个时钟周期的数据情况演示一遍 假设上升沿发送数据 脉冲 主机 sbuff 从机 sbuff sdi sdo 0 00 0 10101010 01010101 0 0 1 0 1 0101010 x 10101011 0 1 1 1 0 01010100 10101011 0 1 2 0 1 1010100 x 01010110 1 0 2 1 0 10

3、101001 01010110 1 0 3 0 1 0101001x 10101101 0 1 3 1 0 01010010 10101101 0 1 4 0 1 1010010 x 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 1001010 x 01101010 1 0 6 1 0 10010101 01101010 1 0 7 0 1 0010101x 11010101 0 1 7 1 0 00101010 11010101 0

4、1 8 0 1 0101010 x 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 与各种外围器件进行 全

5、双工 同步串行通讯 SPI 主要特点有 可以同时发出和接收串行数据 可以当作主机或从 机工作 提供频率可编程时钟 发送结束中断标志 写冲突保护 总线竞争保护等 SPI 总线有四种工作方式 SP0 SP1 SP2 SP3 其中使用的最为广泛的是 SPI0 和 SPI3 方式 SPI 模块为了和外设进行数据交换 根据外设工作要求 其输出串行同步时钟极性和 相位可以进行配置 时钟极性 CPOL 对传输协议没有重大的影响 如果 CPOL 0 串行同 步时钟的空闲状态为低电平 如果 CPOL 1 串行同步时钟的空闲状态为高电平 时钟相 位 CPHA 能够配置用于选择两种不同的传输协议之一进行数据传输 如

6、果 CPHA 0 在串 行同步时钟的第一个跳变沿 上升或下降 数据被采样 如果 CPHA 1 在串行同步时钟的第 二个跳变沿 上升或下降 数据被采样 SPI 主模块和与之通信的外设音时钟相位和极性应该 一致 SPI 时序图详解 SPI 接口在模式 0 下输出第一位数据的时刻 SPI 接口在模式 0 下输出第一位数据的时刻 SPI 接口有四种不同的数据传输时序 取决于 CPOL 和 CPHL 这两位的组合 图 1 中 表现了这四种时序 时序与 CPOL CPHL 的关系也可以从图中看出 图 1 CPOL 是用来决定 SCK 时钟信号空闲时的电平 CPOL 0 空闲电平为低电平 CPOL 1 时

7、空闲电平为高电平 CPHA 是用来决定采样时刻的 CPHA 0 在每个周期的第一个 时钟沿采样 CPHA 1 在每个周期的第二个时钟沿采样 由于我使用的器件工作在模式 0 这种时序 CPOL 0 CPHA 0 所以将图 1 简化 为图 2 只关注模式 0 的时序 图 2 我们来关注 SCK 的第一个时钟周期 在时钟的前沿采样数据 上升沿 第一个时钟沿 在时钟的后沿输出数据 下降沿 第二个时钟沿 首先来看主器件 主器件的输出 口 MOSI 输出的数据 bit1 在时钟的前沿被从器件采样 那主器件是在何时刻输出 bit1 的呢 bit1 的输出时刻实 际上在 SCK 信号有效以前 比 SCK 的上

8、升沿还要早半个时钟周期 bit1 的输出时刻与 SSEL 信号没有关系 再来 看从器件 主器件的输入口 MISO 同样是在时钟的前沿采样从器件输出的 bit1 的 那从器件又是 在何时刻输出 bit1 的呢 从器件是在 SSEL 信号有效后 立即输出 bit1 尽管此时 SCK 信号还没有起效 关于 上面的主器件 和从器件输出 bit1 位的时刻 可以从图 3 4 中得到验证 图 3 注意图 3 中 CS 信号有效后 低电平有效 注意 CS 下降沿后发生的情况 故意用 延时程序 延时了一段时间 之后再向数据寄存器写入了要发送的数据 来观察主器件输出 bit1 的情况 MOSI 可以看出 bit

9、1 值为 1 是在 SCK 信号有效之前的半个时钟周期的时刻开始输出的 与 CS 信号无关 到了 SCK 的第一个时钟周期的上升沿正好被从器件采样 图 4 图 4 中 注意看 CS 和 MISO 信号 我们可以看出 CS 信号有效后 从器件立刻输出 了 bit1 值为 1 通常我们进行的 spi 操作都是 16 位的 图 5 记录了第一个字节和第二个字节间的相互 衔接的过程 第一个字节的最后一位在 SCK 的上升沿被采样 随后的 SCK 下降沿 从器件就输出 了第二个字节的第一位 SPI 总线协议介绍 接口定义 传输时序 一 技术性能 SPI 接口是 Motorola 首先提出的全双工三线同步

10、串行外围接口 采用主从模式 Master Slave 架构 支持多 slave 模式应用 一般仅支持单 Master 时钟由 Master 控制 在时钟移位脉冲下 数据按位传输 高位在前 低位在后 MSB first SPI 接口有 2 根单向数据线 为全双工通信 目前应用中的数据速率可达几 Mbps 的水平 二 接口定义 SPI 接口共有 4 根信号线 分别是 设备选择线 时钟线 串行输出数据线 串行输 入数据线 1 MOSI 主器件数据输出 从器件数据输入 2 MISO 主器件数据输入 从器件数据输出 3 SCLK 时钟信号 由主器件产生 4 SS 从器件使能信号 由主器件控制 三 内部结

11、构 四 传输时序 SPI 接口在内部硬件实际上是两个简单的移位寄存器 传输的数据为 8 位 在主器件产 生的从器件使能信号和移位脉冲下 按位传输 高位在前 低位在后 如下图所示 在 SCLK 的下降沿上数据改变 上升沿一位数据被存入移位寄存器 SPI 接口没有指定的流控制 没有应答机制确认是否接收到数据 SPI 接口时钟配置 在主设备这边配置 SPI 接口时钟的时候一定要弄清楚从设备的时钟要求 因为主设备 这边的时钟极性和相位都是以从设备为基准的 因此在时钟极性的配置上一定要搞清楚从设 备是在时钟的上升沿还是下降沿接收数据 是在时钟的下降沿还是上升沿输出数据 但要注 意的是 由于主设备的 SD

12、O 连接从设备的 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

13、 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 意思是 从设备 SSD128

14、9 在时钟的上升沿接收数据 而且是按照从高位到低位 的顺序接收数据的 因此主设备的 SPI 时钟极性同样应该配置为下降沿有效 时钟极性和相位配置正确后 数据才能够被准确的发送和接收 因此应该对照从时钟极性和相位配置正确后 数据才能够被准确的发送和接收 因此应该对照从 设备的设备的 SPI 接口时序或者接口时序或者 Spec 文档说明来正确配置主设备的时钟 文档说明来正确配置主设备的时钟 SPI 是英语 Serial Peripheral interface 的缩写 顾名思义就是串行外围设备接口 SPI 是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用四根线 节约了芯片 的管脚 同

15、时为 PCB 的布局上节省空间 提供方便 正是出于这种简单易用的特性 现在 越来越多的芯片集成了这种通信协议 比如 P89LPC900 SPI 是一种高速的 全双工 同步的通信总线 其工作模式有两种 主模式和从模式 无 论那种模式 都支持 3Mbit s 的速率 并且还具有传输完成标志和写冲突保护标志 到目前为止 我使用过的具 有 SPI 总线的器件 就是存储芯片 Eprom at25128 在使用过程中 发现的确是有这种 总线的优点 下面以 P89LPC900 单片机的 SPI 总线来解释 SPI 总线的通用使用规 则 LPC900单片机的SPI接口主要由4个引脚构成 SPICLK MOSI

16、 MISO及 SS 其中SPICLK 是整个 SPI 总线的公用时 钟 MOSI MISO 作为主机 从机的输入输出的标志 MOSI 是 主机的输出 从机的输入 MISO 是主机的输入 从机的输出 SS 是从机的标志管脚 在 互相通信的两个 SPI 总线的器件 SS 管脚的电平低的是从机 相反 SS 管脚的电平高的是 主机 在一个 SPI 通信系统中 必须有主机 SPI 总线可以配置成单主单从 单主多从 互为主从 今以互为主从模式作为讲解 要进行 SPI 互为主从操作 必须遵照以下步骤 1 对 A B 进行初始化 均设为主机 需要进行以下操作 a SPI 端口初始化为准双向 b SPCTL 配置为 0 x50 SSIG 0 SPEN 1 MSTR 1 c 清除 SPSTAT 中的 SPIF 及 WCOL 标志位为 0 d 如果需要使用 SPI 中断 可使能相应中断位 2 将 A 上一个引脚连接到 B 的 SS 引脚上 然后拉低 SS 可将 B 强行置为从机模式 同时 B 机会发生以下变化 a B 机的 MSTR 位自动清 0 b B 机的 MOSI 及 SPICLK 强行变为输入模式

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号