




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SPI时序分析和基础知识总结 一 SPI总线的历史 二 SPI总线接口定义 三 SPI总线的工作方式和传输时序 四 SPI与I2C的异同点 五 SPI总线的优缺点 八 关于QSPI 六 SPI总线的设置 七 SPI与SD卡信号 一 SPI总线的历史 SPI SerialPeripheralInterface 串行外设接口总线 最早由Motorola提出 出现在其M68系列单片机中 由于其简单实用 又不牵涉到专利问题 因此许多厂家的设备都支持该接口 广泛应用于外设控制领域 SPI接口是一种事实标准 并没有标准协议 大部分厂家都是参照Motorola的SPI接口定义来设计的 但正因为没有确切的版本协议 不同家产品的SPI接口在技术上存在一定的差别 容易引起歧义 有的甚至无法直接互连 需要软件进行必要的修改 二 SPI总线接口定义 SPI接口经常被称为4线串行总线 以主 从方式工作 数据传输过程由主机初始化 如图1所示 其使用的4条信号线分别为 1 SCLK 串行时钟 用来同步数据传输 由主机输出 2 MOSI Whenmaster outline whenslave inline 主机输出从机输入数据线 3 MISO Whenmaster inline whenslave outline 主机输入从机输出数据线 比如MOSI 该线上数据一定是Master流向Slave的 因此在电路板上 Master的MOSI引脚应与Slave的MOSI引脚连接在一起 双方的MISO也应该连在一起 而不是一方的MOSI连接另一方的MISO Motorola的经典命名是MOSI和MISO 这是站在信号线的角度来命名的 不过 也有一些产家 比如Microchip 是按照类似SDI SDO的方式来命名 这是站在器件的角度根据数据流向来定义的 SDI 串行数据输入SDO 串行数据输出在这种情况下 当Master与Slave连接时 就应该用一方的SDO连接另一个方的SDI 4 SS SlaveSelect 片选线 用于选择激活某Slave设备 低有效 由Master驱动输出 只有当SS 信号线为低电平时 对应Slave设备的SPI接口才处于工作状态 SPI接口采用主从模式 MasterSlave 架构 支持多slave模式应用 一般仅支持单Master 主机通过片选线来确定要通信的从机 这就要求从机的MISO口具有三态特性 使得该口线在器件未被选通时表现为高阻抗 SPI的时钟由Master控制 在时钟移位脉冲下 数据按位传输 高位在前 低位在后 MSBfirst SPI接口有2根单向数据线 为全双工通信 目前应用中的数据速率可达几Mbps的水平 SPI也支持多Slave应用 多个Slave共享时钟线 数据线 可以直接并接在一起 而各Slave的片选线SS则单独与Master连接 受Master控制 在一段时间内 Master只能通过某根SS线激活一个Slave 进行数据传输 而此时其他Slave的时钟线和数据线端口则都应保持高阻状态 以免影响当前数据传输的进行 一主多从的SPI传输模式 SPI总线添加从器件 每个器件需要一个单独的从选择信号 总信号数最终为n 3个 其中n是总线上从器件的数量 在SPI总线上添加新的从器件也不方便 对于额外添加的每个从器件 都需要一条新的从器件选择线 三 SPI总线的工作方式和传输时序 SPI接口在内部硬件实际上是两个简单的移位寄存器 传输的数据为8位 在主器件产生的从器件使能信号和移位脉冲下 按位传输 高位在前 低位在后 如下图所示 在SCLK的下降沿上数据改变 上升沿一位数据被存入移位寄存器 在SPI操作中 最重要的两项设置就是时钟极性 CPOL或UCCKPL 和时钟相位 CPHA或UCCKPH 时钟极性设置时钟空闲时的电平 时钟相位设置读取数据和发送数据的时钟沿 主机和从机的发送数据是同时完成的 两者的接收数据也是同时完成的 所以为了保证主从机正确通信 应使得它们的SPI具有相同的时钟极性和时钟相位 SPI总线有四种工作方式 其中使用的最为广泛的是SPI0和SPI3方式 实线表示 在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟要求 因为主设备这边的时钟极性和相位都是以从设备为基准的 四种工作方式时序分别为 时序详解 CPOL 时钟极性选择 为0时SPI总线空闲为低电平 为1时SPI总线空闲为高电平CPHA 时钟相位选择 为0时在SCK第一个跳变沿采样 为1时在SCK第二个跳变沿采样工作方式1 当CPHA 0 CPOL 0时SPI总线工作在方式1 MISO引脚上的数据在第一个SPSCK沿跳变之前已经上线了 而为了保证正确传输 MOSI引脚的MSB位必须与SPSCK的第一个边沿同步 在SPI传输过程中 首先将数据上线 然后在同步时钟信号的上升沿时 SPI的接收方捕捉位信号 在时钟信号的一个周期结束时 下降沿 下一位数据信号上线 再重复上述过程 直到一个字节的8位信号传输结束 工作方式2 当CPHA 0 CPOL 1时SPI总线工作在方式2 与前者唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号 上升沿时下一位数据上线 工作方式3 当CPHA 1 CPOL 0时SPI总线工作在方式3 MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步 在SPI传输过程中 在同步时钟信号周期开始时 上升沿 数据上线 然后在同步时钟信号的下降沿时 SPI的接收方捕捉位信号 在时钟信号的一个周期结束时 上升沿 下一位数据信号上线 再重复上述过程 直到一个字节的8位信号传输结束 工作方式4 当CPHA 1 CPOL 1时SPI总线工作在方式4 与前者唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号 下降沿时下一位数据上线 在一个SPI时钟周期内 会完成如下操作 1 主机通过MOSI线发送1位数据 从机通过该线读取这1位数据 2 从机通过MISO线发送1位数据 主机通过该线读取这1位数据 这是通过移位寄存器来实现的 如下图所示 主机和从机各有一个移位寄存器 且二者连接成环 随着时钟脉冲 数据按位传输 高位在前 低位在后 MSBfirst 依次移出主机寄存器和从机寄存器 并且依次移入从机寄存器和主机寄存器 当寄存器中的内容全部移出时 相当于完成了两个寄存器内容的交换 如果只是进行写操作 主机只需忽略收到的字节 反过来 如果主机要读取外设的一个字节 就必须发送一个空字节来引发从机的传输 另外 2020 3 16 13 可编辑 四 SPI与I2C的异同点 SPI协议没有定义寻址机制 需通过外部SS信号线选择设备 当出现多slave应用时 需要多根SS信号线 实施起来较I2C要复杂 此外 SPI总线不支持总线控制权仲裁 故只能用在单Master的场合 而I2C可以支持多Master的应用 SPI协议相对I2C要简单 没有握手机制 数据传输效率高 速率也更快 通常应用中可达几Mbps 此外SPI是全双工通信 可同时发送和接收数据 因此 SPI比较适合用于数据传输的场合 比如需要较大批量数据传输的场合 比如MMC SD卡的数据传输就支持SPI模式 或者无需寻址传输的场合 而I2C协议功能较丰富 但也相对复杂 多用在传输一些控制命令字等有意义数据的场合 SPI接口属于一种非常基本的外设接口 但是应用却很广泛 SPI也有所发展 比兔NS推出的SPI的精简接口Microwire 满足通常外设的扩展需求 Motorola还推出了扩展功能的QSPI QueuedSPI 接口 应用更为广泛 SPI接口具有如下优点 1 支持全双工操作 2 操作简单 3 数据传输速率较高 4 提供频率可编程时钟 同时 它也具有如下缺点 1 需要占用主机较多的口线 每个从机都需要一根片选线 2 只支持单个主机 3 没有指定的流控制 没有应答机制确认是否接收到数据 五 SPI总线的优缺点 六 SPI总线的其他设置 除了时钟相位CPHA和时钟极性CPOL外 在SPI总线进行通信时 还有其他需要设置的参数 如SPR 状态控制寄存器 在从器件时钟频率小于主器件时钟频率时 如果SCK的速率设得太快 将导致接收到的数据不正确 SPI接口本身难以判断收到的数据是否正确 要在软件中处理 整个系统的速度受三个因素影响 主器件时钟CLK主 从器件时钟CLK从和同步串行时钟SCK 其中SCK是对CLK主的分频 CLK从和CLK主是异步的 要使SCK无差错无遗漏地被从器件所检测到 从器件的时钟CLK从必须要足够快 下面以SCK设置为CLK主的4分频的波形为例 分析同步串行时钟 主时钟和从时钟之间的关系 图1主从时钟和SCK的关系 如图1所示 当T从 Tsck 2 即T从 2T主时 无论主时钟和从时钟之间的相位关系如何 在从器件CLK从的上升沿必然能够检测到SCK的低电平 即SCK 0的范围内至少包含一个CLK从的上升沿 图2中 当T从 TSCK 2 2T主时 在从时钟的两个上升沿都检测不到SCK的低电平 这样从器件就会漏掉一个SCK 在某些相位条件下 即使CLK从侥幸能检测到SCK的低电平 也不能保证可以继续检测到下一个SCK 只要遗漏了一个SCK 就相当于串行数据漏掉了一个位 后面继续接收 发送的数据就都是错误的了 图2主从时钟和SCK的关系 根据以上的分析 SPR和主从时钟比的关系如表1所列 在发送数据之前按照表1对SPR进行设置 SPR设定错误可以完全避免 表1SPR的设置和主从时钟周期比值之间的关系 七 SPI与SD卡信号 八 关于QSPI 在SPI协议的基础上 Motorola公司对其功能进行了增强 增加了队列传输机制 推出了QSPI 就是通常所谓的QueueSerialperipheralinterface 队列串行外设接口 是对Motorola公司推出的SPI接口的扩展 比SPI应用更加广泛 由于SPl只有1个8位的发送数据寄存器 所以CPU每次最多只能准备一个字节的待发送数据 而QSPI拥有具有16个QSPI传输控制组的传输队列 所以CPU每次最多可以准备16个待传输的数据 并且可以通过命令RAM设置每个待传输数据的长度 与SPI相比 QSPI结构最大的特点是以80字节的RAM取代了SPI的发送和接收数据寄存器 80字节的RAM分成3部分 16字的发送RAM 16字的接收RAM和16字节的命令RAM 这3部分形成了具有16个QSPI传输控制组的传输队列 每个QSPI传输控制组由1个命令RAM 1个发送RAM和1个接收RAM组成 每个QSPI传输的数据长度 片选等信息可由该QSPI传输控制组的命令RAM单独决定 在QSPI模块的QWR寄存器中 NEWQP和ENDQP域分别决定了传输队列的起始点和结束点 起始点和结束点可以是16个QSPI传输控制组的任意一个 当QSPI传输启动时 QSPI模块将从起始点开始依次发送准备好的数据直到结束点 整个过程无需CPU干预 典型的QSPI传输流程如图2所示 其中QP为传输队列指针 指向即将传输的数据 QSPI模块具有7个引脚 QSPI DIN为串行数据输入引脚 QSPI DOUT为串行数据输出引脚 QSPI CLK为串行时钟输出 QSPI CS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摩托机车基本知识培训课件
- 摄影机器基础知识培训课件
- 摄影师基本知识培训内容课件
- 塑钢窗技术试题及答案
- 2025餐馆转让经营合同示例
- 2025年高二【数学(人教A版)】两条直线的交点坐标-学习任务单
- 公司财务知识培训宣传稿课件
- 大数据行业编程面试题及答案解析
- 2025终止房屋租赁合同通知模板
- 2025茶叶销售合同范文
- 透水砖改沥青施工方案
- 南京科远KD200变频器使用手册
- 副校长申请书
- 一飞再飞(2024年贵州中考语文试卷记叙文阅读试题)
- 应急通信网络建设方案
- 八段锦考试题及答案
- DB11-T 806-2022 地面辐射供暖技术规范
- 纯英文初三数学试卷
- 压缩空气流量及管径计算
- 起重吊装作业安全培训题库
- 铝合金技术服务协议
评论
0/150
提交评论