文档介绍:第9章: 串行外设接口模块(SPI)
串行外设接口概述
串行外设接口操作
串行外设接口寄存器
串行外设接口概述
SPI:高速同步串行输入/输出端口,传送速率可编程
应用:外部移位寄存器、D/A、A/D、串行EEPROM、LED显示驱动器等外部设备进行扩展。
串行外设接口模块的特性
4个外部引脚,以下引脚都可用作数字I/O引脚。
SPISIMO-SPI从输入、主输出
SPISOMI-SPI主输入、从输出
SPICLK -SPI时钟
SPISTE-SPI从发送使能
主动/从动两种工作方式
125种可编程的波特率
1~16个数据位同时接收和发送操作
发送和接收操作可通过中断或查询方法完成
串行外设接口概述
4种时钟方案(由时钟极性和时钟相位控制)
无延时的下降沿
有延时的下降沿
无延时的上升沿
有延时的上升沿
9个8位的SPI模块控制寄存器
R:SPI配置控制寄存器。
SPICTL:SPI操作控制寄存器。
SPISTS:SPI状态寄存器。
SPIBRR:SPI波特率寄存器。
SPIRXEMU:SPI仿真缓冲寄存器。
SPIRXBUF:SPI串行输入缓冲寄存器。
SPITXBUF:SPI串行发送缓冲寄存器。
SPIDAT:SPI串行数据寄存器。
SPIPRI:SPI优先级控制。
串行外设接口操作
1、操作介绍
下图是SPI用于两个控制器(一个主控制器和一个从控制器)通信的典型连接方式。
串行外设接口操作
由上图可知,SPI有两种工作模式:主模式和从模式。
---MASTER/SLAVE用来选择操作模式和SPICLK的源。
(1)主模式:将Master的数据传送给Slave,数据传送完毕,申请中断
(2)从模式:将Slave的数据传送给Master,数据传送完毕,申请中断
串行外设接口操作
数据的发送方式有三种:
(1)主控制器发送数据,从控制器发送伪数据;
(2)主控制器发送数据,从控制器发送数据;
(3)主控制器发送伪数据,从控制器发送数据。
主控制器控制SPICLK信号,通过发出SPICLK信号启动数据发送,从控制器则通过检测SPICLK信号接收数据。
一个主控制器可以连接多个从控制器,但是一次只允许一个从控制器给主控制器发送数据
串行外设接口操作
2、串行外设接口中断
有5个控制位用于初始化串行外设接口的中断:
SPI中断使能位:SPI INT ENA ();
SPI中断标志位:SPI INT FLAG();
SPI超限中断使能位:OVERRUN INT ENA();
SPI接收器超限中断标志位:RECEIVER OVERRUN FLAG();
SPI中断优先级选择位:SPI PRIORITY()。
在SPI中断使能的情况下,当数据被一如或移出SPIDAT寄存器后,中断标志位被置位,并产生中断。
串行外设接口操作
3、数据格式
SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的数据则从SPIDAT的LSB依次移入。􀂾
SPI数据字符位数(1-16位)-0指定。􀂾
当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。
数据从SPIRXBUF读回时是右对齐的。
串行外设接口操作
4、SPI波特率和时钟模式
SPI模块支持125种不同的波特率和4种不同的时钟模式。SPI最大波特率为SYSCLK频率的四分之一。
SPI波特率的确定
SPI波特率取决于SYSCLK和SPIBRR的值。
(1)对于SPIBRR=3~127
SPI波特率=SYSCLK/(SPIBRR+1)
SPIBRR=SYSCLK/SPI波特率-1
(2) 对于SPIBRR=0~2
SPI波特率=SYSCLK/4
已知系统时钟频率SYSCLK=24MHz,现将波特率设置为3Mbps,试确定SPI波特率寄存器的值。
SPIBRR=24×106/(3×106)-1=8-1=7H
串行外设接口操作
SPI时钟模式
SPI有四种时钟模式,由CLOCK POLARITY和CLOCKPHASE位控制。
CLOCK POLARITY位:选择时钟的有效沿是上升沿还是下降沿;
CLOCK PHASE位:选择是否有半个时钟周期的延时。
(1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据;
(2)下降沿,有延时:SPI在时钟下降沿前半个周期发送数据,在时钟的下降沿接收数据;
(3)上升沿,无延时:SPI在时钟上升沿发送数据,在下降沿接收数据;
(4)上升沿,有延时:SPI在时钟上升沿前