单片机—SPI接口简述(上)

 

1  SPI接口

 

SPI(Serial PeripheralInterface)即串行外设接口,是一种高速同步的串行接口,可以串行接收或发送数据,支持主从机之间的全双工同步传输,传输速率可编程设定。在SPMC65系列单片机中,SPI模块有4个引脚(与端口C的低4位复用),支持主模式和从模式。许多参数都可编程设定,如工作模式、传输速率、时钟相位和极性等。

 

SPI模块特性如下。

 

·4个接口引脚。

 

SDO为数据输出引脚(PC3复用)

 

SDI为数据输入引脚(PC2复用)

 

SCK为时钟输人/输出引脚(Pcl复用)

 

SSB为从机选择引脚(PCO复用)

 

·支持全双工同步传输。

 

·2种工作模式:主模式、从模式。

 

·波特率:8种可编程传输速率.CPU时钟频率在8 MHz时,波特率最高可达2 Mbps

 

·每次发送或接收的数据长度为8位。

 

·时钟相位和极性的可编程设定。

 

·数据采样时刻选择:可在数据输出中或数据输出末尾进行采样。

 

·SPI接收/发送缓冲器大小为1B

 

SPMC65系列单片机的SPI串行接口功能框图如图6.1所示。
 
665){this.resized=true;this.style.width=665;}" style="cursor: pointer; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">


SPI接口经常用于和E2PROM通信。

 

62即为SPMC65系列单片机与93C46通信的应用电路。


665){this.resized=true;this.style.width=665;}" style="cursor: pointer; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">


2  控制寄存器

 

    1SPI控制寄存器0 P_SPI_Ctri0($38RW)

 

SPI控制寄存器0 P_SPI_Ctrl0($38)可以完成SPI模块的使能控制、主/从模式选择、时钟信号特性设置,以及SPI通信时钟频率选择等;该寄存器默认初始值为#OOh。有关SPI控制寄存器0的功能如表62所列。


665){this.resized=true;this.style.width=665;}" style="cursor: pointer; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">


bit7  SPIENSPI使能位。该位置1PC[3:0]作为SPI通信接口。

                  1=使能SPI功能;

                  1=禁止SPI功能。

 

bit6  MODSPI运行模式。

                  1=从机模式;

                  1=主机模式。

 

bit5  SCKPHASPI时钟相位选择,见SPI主模式时序。

 

bit4  SCKPOLSPI时钟极性选择,见SPI主模式时序。

 

bit3  SMS:主机采样模式选择。

                   1=输入数据输出末尾段进行采样;

0=输入数据输出中部进行采样。

 

bit  [2:0]SCKSEL[2:0]:主模式时钟选择位。

    111=Fsys128

    110=Fsys128

    101=FSYS128

    100=Fsys64

    011=Fsys32

    010=Fsys16

    001=Fsys8

    000=Fsys4

 

2SPI控制寄存器1 P_SPLCtrl1($39RW)

 

SPI模块的从模式的设置,以及采样时钟频率的选择等,可以通过写SPI控制寄存器1 P_SPI_Ctrll($39)完成设置。采样时钟的目的是为了防止在接收数据时受到尖脉冲的干扰,但是低的采样率会影响通信速度。建议采样时钟频率≥4×SPI时钟频率。SPI控制寄存器1默认初始值为#02h,该寄存器各位的功能如表63所列。


665){this.resized=true;this.style.width=665;}" style="cursor: pointer; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">


bit7  SMSENSPI从模式选择输入。

                  1=PC0作为SSB输入引脚(SSB:从模式选择,低有效)

                0=PC0作为通用IO引脚。

 

bit6  SWRSTSPI软件复位。

     写:

            1=产生脉冲复位SPI模块(寄存器设置除外)

           0=无效。

    读:总为0

 

bit  [5:2]保留。

bit  [1:0]SPISPCLK[1:0]:采样时钟选择位。

    11=Fsys4

    10=Fsys2

    01=Fsys

    00=不采样

 

3SPI TXRX状态寄存器P_SPI_status($3ARw)

 

SPMC65 系列单片机的 SPI 模块提供了发送和接收中断,可以通过读取 SPI TX RX 状态寄存器 P_SPI_Status($3A) 查询 SPI 模块的中断标志;而写 SPI TX RX 状态寄存器可以设置 SPI 中断的使能、清除 SPI 中断标志。该寄存器默认初始值为 #00h ,具体各个位的功能如表 6 4 所列。
 
665){this.resized=true;this.style.width=665;}" style="cursor: pointer; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">


bit7  SPIIFSPI中断标志。

    读:

             1=SPI中断发生;

             0=SPI中断发生。

    写:

              1=清除标志;

              0=无效。

 

bit6  SPIIENSPI中断使能位。

              1=使能;

              0=禁止。

 

bit5  TXBF:发送缓冲器满标志位。

              1=发送缓冲器满;

              0=发送缓冲器空。

 

bit  [4:1]保留。

 

bit0  BUFFull:接收缓冲器满并覆盖标志位。

             l=覆盖;

             0=接收缓冲器工作正常。

当前SPI接收到一个完整的数据时,会把接收缓冲器中上次接收到的数据覆盖,此时将BUFFull标志位置位。若上次接收到的数据被读取,则该标志位清零。

 

4SPI发送数据缓冲器P_SPI_rrxData($3BRW)

 

SPMC65 系列单片机的 SPI 模块提供了发送和接收数据的缓冲器,这两个寄存器默认初始值为 #00h ,发送数据缓冲器的具体功能如表 6 5 所列。接收数据缓冲器的具体功能参考表 6 6
 
665){this.resized=true;this.style.width=665;}" style="cursor: pointer; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">


bit  [7:0]  SPITXDATASPI发送数据。

             读:总为#00h

             写:发送数据。

 

5SPI接收数据缓冲器P_SPI_RxData($3CRw)

 

其具体功能如表66所列。

665){this.resized=true;this.style.width=665;}" style="cursor: pointer; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">


bit  [7:0]  SPIRxDATASPI接收数据。

              读:SPI接收数据;

             写:无效。


你可能感兴趣的:(单片机—SPI接口简述(上))