【F280039C】Serial Peripheral Interface (SPI)

简介

串行外设接口(SPI),它是一种高速同步串行输入和输出(I/O)端口,允许程序长度(1到16位)的串行位流以程序的比特传输速率进出设备。SPI通常用于MCU控制器与外部外设或其他控制器之间的通信。典型的应用包括通过移位寄存器、显示驱动程序和模数转换器(adc)等设备进行的外部I/O或外设扩展。

SPI的主或从操作支持多设备通信。该端口支持16级FIFO收发,以减少CPU服务开销。

特性

SPI模块的特性包括:

  • SPISOMI: SPI从输出/主输入引脚
  • SPISIMO: SPI从输入/主输出引脚
  • SPISTE: SPI从发射使能引脚
  • SPICLK: SPI串行时钟引脚
  • 两种操作模式:主和从
  • 波特率:125个不同的可编程速率。可采用的最大波特率受SPI引脚上使用的I/O缓冲区的最大速度限制
  • 四种时钟方案(由时钟极性和时钟相位位控制)包括:
    • 无相位延迟的下降边缘:SPICLK active-high。SPI在SPICLK信号的下降沿上传输数据,在SPICLK信号的上升沿上接收数据。
    • 带相位延迟的下降边缘:SPICLK active-high。SPI在SPICLK信号的下降沿前半个周期发送数据,并在SPICLK信号的下降沿上接收数据。
    • 无相位延迟的上升边缘:SPICLKinactive-low。SPI在SPICLK信号的上升沿上传输数据,在SPICLK信号的下降沿上接收数据。
    • 带相位延迟的上升边缘:SPICLKinactive-low。SPI在SPICLK信号的上升沿前半个周期发送数据,并在SPICLK信号的上升沿上接收数据。
  • 收发同时操作(可在软件中关闭发送功能)
    如果不使用SPI模块,所有四个引脚都可以用作GPIO。

框图

在这里插入图片描述
表24-1对SPI模块信号进行分类并提供摘要
在这里插入图片描述
当SPI处于从模式时,SPISTE信号提供了gate任何虚假时钟和数据脉冲的能力。SPISTE上的HIGH逻辑信号将不允许从机接收数据。这可以防止SPI从站失去与主站的同步。不建议将SPISTE始终绑定到活动状态。

如果SPI从端确实失去了与主端同步,那么切换SPISWRESET将重置内部位计数器以及模块中的各种状态标志。通过重置位计数器,SPI将下一个时钟转换解释为新传输的第一个位。

SPI Operation

对操作模式、中断、数据格式、时钟源和初始化的解释。给出了数据传输的典型时序图。
图24-4显示了用于两个控制器之间通信的SPI的典型连接:一个主控制器和一个从控制器。
主机通过发送spickk信号来传输数据。对于从端和主端,数据从SPICLK一端的移位寄存器移出,锁存到另一端SPICLK时钟边缘的移位寄存器中。如果CLK_PHASE位高,则在spickk转换前半个周期传输和接收数据。

结果,两个控制器同时发送和接收数据。应用软件判断数据是有意义数据还是虚拟数据。有三种可能的数据传输方法:

  • 主发送数据;Slave发送虚拟数据。

  • Master发送数据;Slave发送数据。

  • Master发送虚拟数据;Slave发送数据。

master可以在任何时候启动数据传输,因为它控制着SPICLK信号。然而,软件决定了主机如何检测从机何时准备好数据。

SPI可以在主模式或从模式下工作。MASTER_SLAVE位选择工作模式和spiclk信号的来源。
在这里插入图片描述

主模式

在主模式(MASTER_SLAVE = 1)下,SPI为整个串行通信网络提供在SPICLK引脚上的串行时钟。数据在SPISIMO引脚上输出,并从SPISIMO引脚锁存。

SPIBRR寄存器决定了网络的发送和接收比特传输速率。SPIBRR可以选择125种不同的数据传输速率。

写入SPIDAT或SPITXBUF的数据首先在SPISIMO引脚上启动数据传输,MSB(最高有效位)。同时,接收到的数据通过SPISOMI引脚转移到LSB(最低有效位)。
图24-5是SPI在主模式下的框图。它显示了SPI主模式中可用的基本控制块。
在这里插入图片描述

从模式

在从模式(MASTER_SLAVE = 0)下,数据在SPISOMI引脚上移出,在SPISIMO引脚上移入。SPICLK引脚被用作串行移位时钟的输入,该时钟由外部网络主机提供。

传输速率由这个时钟定义。SPICLK输入频率不能大于LSPCLK频率除以4。
图24-6是SPI从模式的框图。它显示了SPI从模式中可用的基本控制块。
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C8051F是一种高性能的单片机,具有强大的处理能力和丰富的外设接口。在进行基于C8051F单片机的开发时,SPI接口是非常重要的一种通信方式。 SPISerial Peripheral Interface)是一种串行外设接口,能够实现高速数据采集与数据传输。在C8051F单片机中,SPI接口是基于SFR(special function register)实现的。在进行SPI程序开发时,需按照以下步骤: 1.配置SPI接口:在代码中声明所使用的SPI接口及其相关配置,如SPI时钟频率,CPOL(时钟极性),CPHA(时钟相位)等参数。 2.发送数据:通过SPI接口向外部设备发送数据,可通过SPI数据寄存器(SPIDAT)或SPI FIFO缓冲器进行数据发送。在向外部设备发送单个数据时,可以使用SPIDAT方式直接发送。在多个数据发送时,可使用FIFO缓冲器方便地存储数据,待FIFO缓冲器满后进行数据的自动发送。 3.接收数据:通过SPI接口从外部设备接收数据,可使用SPI数据寄存器(SPIDAT)或SPI FIFO缓冲器进行数据接收。在接收单个数据时,可以使用SPIDAT方式直接接收。在多个数据接收时,可使用FIFO缓冲器方便地存储数据,待FIFO缓冲器满后进行数据的自动接收。 4.中断处理:在进行SPI程序开发时,可采用中断方式实现SPI数据接收与发送。通过中断向量表进行中断处理,实现SPI数据有效性的判断与处理。 以上是在C8051F单片机上进行SPI程序开发的主要步骤。在实际的开发过程中,应根据具体的应用场景进行针对性的优化与调试,以实现优秀的程序性能与稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值