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所示。
SPI接口经常用于和E2PROM通信。
图6.2即为SPMC65系列单片机与93C46通信的应用电路。 2 控制寄存器
1.SPI控制寄存器0 P_SPI_Ctri0($38,R/W)
写SPI控制寄存器0 P_SPI_Ctrl0($38)可以完成SPI模块的使能控制、主/从模式选择、时钟信号特性设置,以及SPI通信时钟频率选择等;该寄存器默认初始值为#OOh。有关SPI控制寄存器0的功能如表6.2所列。 bit7 SPIEN:SPI使能位。该位置1后PC[3:0]作为SPI通信接口。 1=使能SPI功能; 1=禁止SPI功能。
bit6 MOD:SPI运行模式。 1=从机模式; 1=主机模式。
bit5 SCKPHA:SPI时钟相位选择,见SPI主模式时序。
bit4 SCKPOL:SPI时钟极性选择,见SPI主模式时序。
bit3 SMS:主机采样模式选择。 1=输入数据输出末尾段进行采样; 0=输入数据输出中部进行采样。
bit [2:0]SCKSEL[2:0]:主模式时钟选择位。 111=Fsys/128 110=Fsys/128 101=FSYS/128 100=Fsys/64 011=Fsys/32 010=Fsys/16 001=Fsys/8 000=Fsys/4
2.SPI控制寄存器1 P_SPLCtrl1($39,R/W)
SPI模块的从模式的设置,以及采样时钟频率的选择等,可以通过写SPI控制寄存器1 P_SPI_Ctrll($39)完成设置。采样时钟的目的是为了防止在接收数据时受到尖脉冲的干扰,但是低的采样率会影响通信速度。建议采样时钟频率≥4×SPI时钟频率。SPI控制寄存器1默认初始值为#02h,该寄存器各位的功能如表6.3所列。 bit7 SMSEN:SPI从模式选择输入。 1=PC0作为SSB输入引脚(SSB:从模式选择,低有效); 0=PC0作为通用I/O引脚。
bit6 SWRST:SPI软件复位。 写: 1=产生脉冲复位SPI模块(寄存器设置除外); 0=无效。 读:总为0。
bit [5:2]保留。 bit [1:0]SPISPCLK[1:0]:采样时钟选择位。 11=Fsys/4 10=Fsys/2 01=Fsys 00=不采样
3.SPI TX/RX状态寄存器P_SPI_status($ 3A ,R/w)
SPMC65
系列单片机的
SPI
模块提供了发送和接收中断,可以通过读取
SPI TX
/
RX
状态寄存器
P_SPI_Status($
3A
)
查询
SPI
模块的中断标志;而写
SPI TX
/
RX
状态寄存器可以设置
SPI
中断的使能、清除
SPI
中断标志。该寄存器默认初始值为
#00h
,具体各个位的功能如表
6
.
4
所列。
bit7 SPIIF:SPI中断标志。 读: 1=有SPI中断发生; 0=无SPI中断发生。 写: 1=清除标志; 0=无效。
bit6 SPIIEN:SPI中断使能位。 1=使能; 0=禁止。
bit5 TXBF:发送缓冲器满标志位。 1=发送缓冲器满; 0=发送缓冲器空。
bit [4:1]保留。
bit0 BUFFull:接收缓冲器满并覆盖标志位。 l=覆盖; 0=接收缓冲器工作正常。 当前SPI接收到一个完整的数据时,会把接收缓冲器中上次接收到的数据覆盖,此时将BUFFull标志位置位。若上次接收到的数据被读取,则该标志位清零。
4.SPI发送数据缓冲器P_SPI_rrxData($3B,R/W)
SPMC65
系列单片机的
SPI
模块提供了发送和接收数据的缓冲器,这两个寄存器默认初始值为
#00h
,发送数据缓冲器的具体功能如表
6
.
5
所列。接收数据缓冲器的具体功能参考表
6
.
6
。
bit [7:0] SPITXDATA:SPI发送数据。 读:总为#00h; 写:发送数据。
5.SPI接收数据缓冲器P_SPI_RxData($ 3C 。R/w)
其具体功能如表6.6所列。 bit [7:0] SPIRxDATA:SPI接收数据。 读:SPI接收数据; 写:无效。 |
单片机—SPI接口简述(上)
最新推荐文章于 2023-05-19 17:15:16 发布