SPI大纲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SPI
O 简介 O 串行外设接口 SPI 提供了一个 SPI 协议:主从模式下数
据发送和接收功能。SPI 接口使用4 个引脚,其中有串 行数据输入线 MOSI 和输出线 MISO,时钟线 SCK 和从 机选择线 O SEL。SPI 作为主机使用,用SEL 和 SCK 信号控制数据 流来说明数据通信启动和数据采样率。为了接收数据 字节,流数据位被锁存在特定的时钟边沿,被存储在 数据寄存器或RX FIF。数据传输也是通过类似的方式, 但以相反的顺序。多主机应用提供了模式故障 检测的性能。
O Rx 缓冲器非空- RXBNE
O 在非FIFO 模式下,RX 缓冲器中的数据为有效的接收数据或RX
FIFO 数据长度等于或大于RX FIFO 阈值电平时,RXBNE 标志位被 置位。阈值电平是由在SPI FIFO 模式下的SPIFCR 寄存器中的 RXFTLS 字段定义的。当接收到的数据从RX 缓冲器中被读取或在 非FIFO 模式下,RX FIFO 导致了一个空的RX 缓冲器时,或当RX FIFO 数据长度小于RX FIFO 阈值电平时,此标志位将由硬件自动 清零。阈值电平是由RXFTLS 字段定义的。 O 超时标志- TO O 超时功能仅在SPI FIFO 模式下可用,它通过把一个零值加载到超 时计数器寄存器的TOC 字段来除能。如果从SPIDR 中读取数据或 接收到了新的数据,且如果SPI RX FIFO非空,则超时计数器将复 位到0 并开始计数。当超时计数器的值等于SPIFTOCR 寄存器中的 TOC 字段定义的值时,TO 标志位将被置位。此标志位通过向此位 写1 来清零。
SPI串行帧格式
O SPI 接口格式基于时钟极性CPOL 和时钟相位CPHA 的配置。 O ▀ 时钟极性位 - CPOL O 当时钟极性位被清零,SCK 线空闲状态为LOW。当时钟极
性位被置1,SCK 线空闲状态为HIGH。 O ▀ 时钟相位位 - CPHA O 当时钟相位位被清零,数据会在第一个SCK 时钟转换时 采样。当时钟相位位被置1,数据会在第二个SCK 时钟转 换时采样。 O SPI 接口中有四种格式。表39 显示了如何通过 SPICR1 寄 存器中的FORMAT 字段设置这些格式。
SPI 单个字节传输时序图 - CPOL = 1, CPHA = 0
SPI 单个字节传输时序图 - CPOL = 1, CPHA = 0 注意,SEL信号必 须在每个数据帧之间转换为无效电平
SPI 单个字节传输时序图 - CPOL = 1, CPHA = 1
SPI 连续数据传输时序图 - CPOL = 1, CPHA = 1 注意,SEL信号必须保持在有效电平直到最后一个数据 传输结束。
从机模式ห้องสมุดไป่ตู้
O 在从机模式,SCK引脚作为输入脚且串行时
钟来自于外部主机。SEL引脚也作为输入脚。 O 当SELAP 位被清零,在完整数据字节接收期 间,SEL 引脚为低有效。当SELAP 位被置为1, 在完整数据字节接收期间,SEL 引脚为高有 效。 O 注:在从机模式,APB 时钟,即fPCLK,至 少是外部SCK 时钟输入频率的4 倍。
状态标志
O Tx 缓冲器空 - TXBE O 在非FIFO 模式下,TX 缓冲器为空时或当TX FIFO 数据长度等于或
小于TX FIFO 阈值电平时,TXBE 标志位被置位。阈值电平是由在 FIFO 模式下的SPIFCR 寄存器中的TXFTLS 字段定义的。下列被发 送的数据可以再次被载入缓冲器。此后,在非FIFO 模式下,TX 缓冲器已经包含了一个新的数据时或当TX FIFO 数据长度等于或 大于TXFIFO 阈值电平时,TXBE 标志位被复位。阈值电平是由在 FIFO 模式下的SPIFCR 寄存器中的TXFTLS 字段定义的。 O 传输寄存器空 - TXE O 当TX 缓冲器和TX 转移寄存器都为空时,TXE 标志位被置位。当 TX 缓冲器或TX 转移寄存器包含新的被发送的数据时,TXE 标志 位被复位。
SPI接口格式设置
SPI 单个字节传输时序图- CPOL = 0, CPHA = 0
SPI 连续数据传输时序图 - CPOL = 0, CPHA = 0 注意,SEL信号必须在每个数据帧之间转变为无效电平
SPI 单个字节传输时序图 - CPOL = 0, CPHA = 1
SPI 连续传输时序图 - CPOL = 0, CPHA = 1 注意,SEL信号必须保持在有效电平直到最后一个数据 传输结束
SPI 多主机模式下从机环境
SPI 模式故障触发条件
SPI 主机模式SEL 引脚状态
O O O O O O
O
O O O O O O O O O O O O
写冲突标志– WC 下列情况将使写冲突标志置位: 1. SPIFCR 寄存器中的FIFOEN 位被清零。 TX 缓冲器和转移寄存器都已经为满时,当有新的数据写入到SPIDR 寄存器,写冲突 标志会被置位。任何新的数据写入TX 缓冲器时,数据将丢失。 2. SPIFCR 寄存器中的FIFOEN 位被置位。 当TX FIFO 已满时,写冲突标志位将被置位,表明有新的数据写入SPIDR 寄存器。 任何被写入TX FIFO 的新的数据都将丢失。 读溢出标志– RO 1. SPIFCR 寄存器中的FIFOEN 位被清零。 当新的数据被接收时,读溢出标志位被置位,表明RX 转移寄存器和RX 缓冲器都已 为满。这使新的接收数据不会被移到SPI 转移寄存器中。所以最新的接收数据将丢失。 2. SPIFCR 寄存器中的FIFOEN 位被置位。 当最新的数据被接收时,读溢出标志位被置位,表明RX 转移寄存器和Rx FIFO 都已 满。这意味着最新的接收数据不会被移到SPI 转移寄存器中。所以最新的接收数据将 丢失。 从机中止标志– SA 在SPI 从机模式,从机中止标志位被置位,表明在数据帧传输期间,SEL 引脚被突然转 换到一个无效的状态。数据帧长度由SPICR1 寄存器中的DFL 字段定义。
O 模式故障标志 - MF O 模式故障标志可用于检测SPI 多主机模式下的SPI 总线使用情
况。在多主机模式下,SPI模块被配置作为主机且SEL 信号被 设置作为输入信号。当另一个SPI 主机使SPI SEL 引脚突然变 换为有效电平时,模式故障标志位将被置位。这意味着另一 个SPI 主机正在请求使用SPI 总线。因此,当SPI 模式故障发 生,将迫使SPI 模块工作在从机模式且除能所有的SPI 接口信 号来避免SPI 总线信号冲突。同样地,如果SPI 主机想要传输 数据,有必要通过驱动SEL 信号使其处于一个有效状态来告 知其它的SPI 主机。SPI 多主机模式下的详细配置图如下图所 示。
寄存器列表
SPI 控制寄存器1 (SPICR1)
SPI方框图
功能描述
O 主机模式
O 每个数据帧的数据长度范围是1~16 位。被发送的数据的第一
位是MSB 或LSB ,这由SPICR1 寄存器的FIRSTBIT 位决定。 SPI 模块可以由SPICR1 寄存器中的 MODE 位配置作为主机或 从机。当MODE 位被置位,SPI 模块被配置作为主机且在SCK 引脚产生串行时钟。在串行时钟边沿,数据字节将发送转移 寄存器中的数据到MOSI 引脚。在数据传输的整个过程中, SEL 引脚是有效的。当SPICR1 寄存器中的 SELAP 位被置位, 在完整数据处理过程中,SEL 引脚为高有效。当SPICR1 寄存 器中的SELM 位被置位,SEL 引脚将被硬件自动驱动,在SEL 有效边沿和SCK 的第一个边沿之间的时间间隔等于SCK 周期 的一半。
相关文档
最新文档