收藏 分享(赏)

SPI数据发送与接收机制.pdf

上传人:精品资料 文档编号:9262233 上传时间:2019-07-31 格式:PDF 页数:6 大小:341.30KB
下载 相关 举报
SPI数据发送与接收机制.pdf_第1页
第1页 / 共6页
SPI数据发送与接收机制.pdf_第2页
第2页 / 共6页
SPI数据发送与接收机制.pdf_第3页
第3页 / 共6页
SPI数据发送与接收机制.pdf_第4页
第4页 / 共6页
SPI数据发送与接收机制.pdf_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、SPI 数 据发送与接 收机制 1 SPI 简介 SPI 是一个 环形 总线 结构 , 以主从 方式 工作 , 这种 模 式通常 有一 个主 设备 和一 个或多 个 从设备 ,需 要至 少 4 根线( 单向传 输时 ,3 根线 也可 以 ) , 由 ss(cs)、 sck 、sdi 、sdo 构成, 其时序 其实 很简 单, 主要 是在 sck 的控制 下, 两个双 向移位 寄存 器进 行数 据交 换,允 许 MCU 以全双 工的 同步 串行 方式 。只规 定了 每一 帧数 据如 何传输 ,并 未对 帧结 构的 组成做 介绍 。 2 SPI 特点 2.1 采 用主- 从 模式的 控制 方式 两

2、个 SPI 设 备之 间通 信必 须由主 设备 来控 制次 设备 。 一个 主设备可 以通 过提 供 Clock 以 及对从设备 进行 片选(SlaveSelect/ss) 来控制 多个 从设 备,SPI 协议还 规定 从设 备 的 Clock 由 Master 设备 通过 SCK 管脚提供 给从设备 ,从 设备 本身不 能产 生或 控制 Clock ,没有 Clock 则从设 备 不能正 常工 作 。 2.2 采 用同 步方 式传输数 据 Master 设备会根 据将要 交 换的数据 来产生 相应的 时 钟脉冲(ClockPulse) , 时钟 脉冲组 成 了时钟 信号(Clock Sign

3、al) , 时钟信 号通 过时 钟极 性(CPOL) 和时钟相 位(CPHA)控制着两 个 SPI 设备间 何时 数据 交换 以及 何时对 接收 到的 数据 进行 采样 , 来保证 数据 在两 个设 备之间 是同 步 传输的 。 2.3 数据交 换(Data Exchanges) SPI 设备间 的数 据传 输之 所 以又被 称为 数据 交换 , 是因为 SPI 协议规 定一 个 SPI 设备不 能在数据通 信过程 中仅 仅只 充当一个“发送者(Transmitter)“或者“接收者(Receiver)“ 。 在每个 Clock 周期内 ,SPI 设备都 会发送 并接 收一 个 bit 大小

4、的数据 ,相当于 该设 备有 一个 bit 大小 的数据 被交 换了 。 一个从设备 要想 能够 接收 到 Master 发过来 的控 制信 号 , 必须 在此 之前 能够 被 Master 设 备进行 访问(Access)。 所以 ,Master 设备 必须 首先 通过 SS/CSpin 对从设备 进行 片选, 把想 要 访问的 从设 备 选上 。 在数据 传输 的过 程中 , 每 次接收 到的 数据 必须 在下 一次数 据传 输之 前被 采样 。 如果 之前接收到 的数 据没 有被 读取 , 那么这 些已 经接 收完 成的数据 将有 可能 会被 丢弃 , 导致 SPI 物理 模块最 终失

5、效。 因此 ,在程序中 一般 都会 在 SPI 传输完数 据后 ,去读取 SPI 设备里 的数 据, 即使这 些数 据(Dummy Data) 在我们的程 序里 是无 用的 。 3 SPI 数 据发送与接收机制 3.1 概述 SSPBUF (Synchronous Serial Port Buffer), 泛指 SPI 设备里 面的 内部 缓冲 区, 一般在 物 理上是 以 FIFO 的形式 ,保 存传输 过程 中的 临时 数据 ; SSPSR (Synchronous Serial Port Register), 泛指 SPI 设备里面的移位寄存器(Shift Regitser) ,它的作

6、用是 根据 设置好 的数 据位 宽(bit-width)把数 据移 入或 者移 出 SSPBUF ; Controller , 泛指 SPI 设备 里面的 控制 寄存 器, 可以 通过配 置它 们来 设置 SPI 总线的 传输 模式。 通常情 况下 , 我们 只需 要对 上图所 描述 的四 个管 脚(pin) 进行编 程即 可控 制整 个 SPI 设备 之间的 数据 通信 :SCK ,Serial Clock , 主要 的作 用是 Master 设备 往 从设备 传 输时钟 信号 , 控制数 据交 换的 时机 以及 速率; SS/CS ,Slave Select/Chip Select , 用

7、于 Master 设备 片选 从设 备, 使被 选中 的 从设备 能够 被 Master 设备所 访问 ; SDO/MOSI , Serial Data Output/Master Out Slave In , 在 Master 上面 也被 称为 Tx-Channel , 作为数 据的 出口 ,主要用 于 SPI 设备 发送 数据 ; SDI/MISO ,Serial Data Input/Master In Slave Out , 在 Master 上面 也被 称为 Rx-Channel , 作为数 据的 入口 ,主要用 于 SPI 设备 接收 数据 ; SPI 设备在 进行 通信 的过 程

8、中 , Master 设备 和 从设备 之间会产 生一 个数 据链 路回 环(Data Loop) , 就像上图 所画 的那 样, 通过 SDO 和 SDI 管脚 , SSPSR 控制 数据 移入 移出 SSPBUF ,Controller 确定 SPI 总线 的通信模 式 ,SCK 传输 时钟 信号。 3.2 Timing CPOL :时钟极 性 ,表示 SPI 在空 闲时 ,时钟信 号是 高电平 还是 低电 平。若 CPOL 被设 为 1 ,那么该 设备 在空 闲时 SCK 管脚下 的时 钟信 号 为高电 平。 当 CPOL 被设 为 0 时则 正好 相反。 CPHA : 时钟 相位 ,表

9、示 SPI 设备 是在 SCK 管脚上 的时钟 信号 变为 上升 沿时 触发数 据 采样 , 还 是在 时钟信 号变 为下降 沿时 触发 数据 采样 。 若 CPHA 被设置 为 1 , 则 SPI 设备 在时 钟信号 变为 下降 沿时 触发 数据采 样, 在上 升沿 时发 送数据 。当 CPHA 被设 为 0 时也 正好 相 反。 上图使 用的 SPI 数据 传输 模式被 设置 成 CPOL=1 ,CPHA=1 。 3.3 SSPSR SSPSR 是 SPI 设备 内部 的 移位寄 存器(ShiftRegister) 。 它的主 要作 用是 根据 SPI 时钟信 号 状态, 往 SSPBUF

10、 里移入或者移出数据, 每次移动的数据大小由 Bus-Width 以及 Channel-Width 所决定。 Bus-Width 的作用 是指 定地 址总线 到 Master 设备 之间 数据传 输的 单位 。 例如, 我们 想要 往 Master 设备里 面的 SSPBUF 写入 16Byte 大小的数 据: 首先 , 给 Master 设备的 配置 寄存 器设 置 Bus-Width 为 Byte ;然后 往 Master 设备 的 Tx-Data 移位寄存 器在 地 址总线 的入 口写 入数 据, 每次写 入 1Byte 大小的 数据(使用 writeb 函数) ;写完 1Byte 数据

11、之 后 ,Master 设备里面 的 Tx-Data 移 位寄存器会自动把从地 址总线传来 的 1Byte 数据 移入 SSPBUF 里;上述动 作一 共需要 重复 执行 16 次。 Channel-Width 的作用是指 定 Master 设备与 从设备 之间数据 传输 的单 位 。与 Bus-Width 相似,Master 设备 内部 的移位寄 存器 会依 据 Channel-Width 自动地 把数 据从 Master-SSPBUF 里通 过 Master-SDO 管脚 搬运到 从设备 里的 Slave-SDI 引脚,Slave SSPSR 再把每次接 收的 数据移 入 Slave-SS

12、PBUF 里。 通常情况下,Bus-Width 总是会大于或等于 Channel-Width , 这样能保证不会出现因 Master 与 Slave 之间数 据 交换的 频率 比地 址总 线与 Master 之间的 数据 交换 频 率要快 ,导致 SSPBUF 里面存 放的 数据 为无效 数据 这样 的情 况。 3.4 SSPBUF 。 我们知 道 , 在每个 时钟 周期内 ,Master 与 Slave 之间 交换的 数据 其实 都是 SPI 内部移 位 寄存器 从 SSPBUF 里面拷 贝的。 我们 可以 通过 往 SSPBUF 对应的寄 存器(Tx-Data/Rx-Data regist

13、er)里读写数 据, 间接 地操 控 SPI 设备 内部 的 SSPBUF 。例如, 在发 送数 据之前 ,我们 应该先 往 Master 的 Tx-Data 寄 存器 写入 将要 发送出 去的数 据, 这些 数据 会被 Master-SSPSR 移位寄 存器 根据 Bus-Width 自动 移入 Master-SSPBUF 里, 然后这些 数据 又会 被 Master-SSPSR 根据 Channel-Width 从 Master-SSPBUF 中移出, 通过 Master-SDO 管脚 传给 Slave-SDI 管脚, Slave-SSPSR 则把从 Slave-SDI 接收到的数据移入

14、Slave-SSPBUF 里 。 与此同时, Slave-SSPBUF 里面的数据 根据每 次接 收数 据的 大小(Channel-Width) ,通过 Slave-SDO 发往Master-SDI ,Master-SSPSR 再把从 Master-SDI 接收 的数据 移入 Master-SSPBUF 。在单次数 据传输 完成 之后 ,用 户程 序可以 通过从 Master 设备 的 Rx-Data 寄存 器读取 Master 设备数据 交换得 到的 数据 。 3.5 Controller 。 Master 设备 里面的 Controller 主要通 过 时钟信 号(ClockSignal)

15、 以及 片选信 号(Slave Select Signal) 来控制 从 设备。 从设 备会一直 等待 ,直到 接收 到 Master 设备 发过来 的片 选信 号, 然后 根据时 钟信 号 来工作 。 Master 设备 的片 选操 作必 须由程 序所 实现 。例如 : 由程序 把 SS/CS 管脚 的时 钟信号 拉 低电平 ,完成 SPI 设备数 据通信 的前 期工 作; 当程 序想让 SPI 设备 结束 数据 通信时 ,再把 SS/CS 管脚 上的 时钟 信号 拉高电 平 3.6 综合举 例 假设主 机和 从机 初始 化就绪 : 并且 主机 的 sbuff=0xaa,从机 的 sbuff=0x55 ,下面将 分步 对 SPI 的 8 个时 钟周 期的 数据情 况演 示一 遍 : 假设上升沿 发送 数据 , 这样 就完成了 两个 寄存 器 8 位 的交 换, 上面 的上 表示上 升沿 、下 表示 下降 沿,SDI 、SDO 相对于 主机而言 的。

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

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

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


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

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

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