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

2019-04-15 12:41发布

 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所示。 1119941178.jpg

SPI接口经常用于和E2PROM通信。 62即为SPMC65系列单片机与93C46通信的应用电路。
1119932774.jpg

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

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所列。
1119912614.jpg

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 TXRX状态寄存器P_SPI_Status($3A)查询SPI模块的中断标志;而写SPI TXRX状态寄存器可以设置SPI中断的使能、清除SPI中断标志。该寄存器默认初始值为#00h,具体各个位的功能如表64所列。 1119875535.jpg

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,发送数据缓冲器的具体功能如表65所列。接收数据缓冲器的具体功能参考表66 1119377744.jpg

bit  [7:0]  SPITXDATASPI发送数据。             读:总为#00h             写:发送数据。 5SPI接收数据缓冲器P_SPI_RxData($3CRw) 其具体功能如表66所列。
1119837742.jpg

bit  [7:0]  SPIRxDATASPI接收数据。              读:SPI接收数据;             写:无效。