Download presentation
Presentation is loading. Please wait.
1
第10章 串行外设接口SPI SPI:高速同步串行输入/输出端口,传送速率可编程, 应用:外部移位寄存器、D/A、 A/D、串行EEPROM、LED显示驱动器等外部设备进行扩展。 串行外设接口的结构 (1)4个外部引脚,以下引脚都可用作数字I/O引脚。 SPISIMO-SPI从输入、主输出 SPISOMI-SPI主输入、从输出 SPICLK -SPI时钟 SPISTE*-SPI从发送使能
2
(2)主/从操作模式。 (3)发送、接收双缓冲。 SPI模块中有9个寄存器用于控制该模块的操作: (1)SPICCR:SPI配置控制寄存器。 (2)SPICTL:SPI操作控制寄存器。 (3)SPISTS:SPI状态寄存器。 (4)SPIBRR:SPI波特率寄存器。 (5)SPIRXEMU:SPI仿真缓冲寄存器。 (6)SPIRXBUF:SPI串行输入缓冲寄存器。
3
(7)SPITXBUF:SPI串行发送缓冲寄存器。
(8)SPIDAT:SPI串行数据寄存器。 (9)SPIPRI:SPI优先级控制。 SPI操作 下图是SPI用于两个控制器(一个主控制器和一个从控制器)通信的典型连接方式。
4
主出/从入 SPI选通 主入/从出 串行时钟 SPI主/从控制器连接 SPI主控制器 SPI从控制器 SPISIMO SPISTE*
SPICLK SPISIMO SPISTE* SPISOMI 主出/从入 SPI选通 主入/从出 串行时钟 SPI主/从控制器连接 SPI主控制器 SPI从控制器
5
SPICTL.2位---MASTER/SLAVE用来选择操作模式和SPICLK的源。 (1)主模式
(2)从模式 将 Slave的数据传送给 Master,数据传送完毕,申请中断。 SPICLK SPIMOSI 时钟 SPICLK SPIMISO SPISTE 时钟
6
由图知,SPI有两种工作模式:主模式和从模式,操作模式由SPICTL.2(MASTER/SLAVE位)决定。
数据的发送方式有三种: (1)主控制器发送数据,从控制器发送伪数据; (2)主控制器发送数据,从控制器发送数据; (3)主控制器发送伪数据,从控制器发送数据。 主控制器控制SPICLK信号,通过发出SPICLK信号启动数据发送,从控制器则通过检测SPICLK信号接收数据。 一个主控制器可以连接多个从控制器,但是一次只允许一个从控制器给主控制器发送数据
7
10.3 串行外设接口中断 有五个控制位用于初始化串行外设接口的中断: SPI中断使能位:SPI INT ENA (SPICTL.0);
串行外设接口中断 有五个控制位用于初始化串行外设接口的中断: SPI中断使能位:SPI INT ENA (SPICTL.0); SPI中断标志位:SPI INT FLAG(SPISTS.6); SPI超限中断使能位:OVERRUN INT ENA(SPICTL.4); SPI接收器超限中断标志位:RECEIVER OVERRUN FLAG(SPISTS.7) SPI中断优先级选择位:SPI PRIORITY(SPIPRI.6)。
8
10.4 数据格式 SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的数据则从SPIDAT的LSB依次移入。 SPI数据字符位数(1-16位)由SPICCR.3-0指定。 当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。 数据从SPIRXBUF读回时是右对齐的。 LSB 移位寄存器SPIDAT MSB
9
10.5 SPI波特率和时钟模式 SPI模块支持125种不同的波特率和4种不同的时钟模 式。SPI最大波特率为CLKOUT频率的四分之一。 SPI波特率的确定 SPI波特率取决于CLKOUT和SPIBRR的值。 (1)对于SPIBRR=3-127 SPI波特率=CLKOUT/(SPIBRR+1) (2) 对于SPIBRR=0-2 SPI波特率=CLKOUT/4 SPI最大波特率=CLKOUT/4=10MHz
10
SPI时钟模式 SPI有四种时钟模式,由CLOCK POLARITY 和CLOCK PHASE位控制。 CLOCK POLARITY位:选择时钟的有效沿是上升沿还是下降沿; CLOCK PHASE位:选择是否有半个时钟周期的延时。 (1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据; (2)下降沿,有延时:SPI在时钟下降沿前半个周期发送数据,在时钟的下降沿接收数据;
11
(3)上升沿,无延时:SPI在时钟上升沿发送数据,在下降沿接收数据;
4种时钟模式如图所示。
12
SPICLK 周期数 (无延时的上升沿) (有延时的上升沿) (无延时的下降沿) (有延时的下降沿) SPISIMO/ SPISOMI 接收 锁存点 进入从方式 SPISTE
13
SPI的复位和初始化 系统复位使SPI引脚功能被选定为通用输入,要对SPI的配置,需做以下工作: (1)设置SPI SW RESET位(SPICCR.7)的值为0,强制 SPI复位; (2)初始化SPI的配置、格式、波特率和引脚功能为期 望值; (3)设置SPI SW RESET位为1,从复位状态释放SPI; (4)向SPIDAT或SPITXBUF写数据; (5)数据发送完成后(SPISTS.6=1),读取SPIRXBUF以 确定接收的数据。
14
SPI应用实例(控制串行D/A) DAC714是美国BB公司生产的16位具有串行接口的数模转换器,电压输出型,输出范围是-10V+10V。
串行时钟 串行数据输入引脚 数据更新使能引脚 数据输入使能引脚 DAC714控制时序
15
由控制时序图可知,SPI时钟模式应为下降沿,无延时。即SPI在时钟下降沿发送数据,在时钟的上升沿将数据锁存到DAC714。
SPICLK SPISIMO SDI A0* SPISTE* A1* SPISOMI 串行数据 SPI选通 串行时钟 2407 DAC714 UP/DA DSP与DAC714连接框图 由控制时序图可知,SPI时钟模式应为下降沿,无延时。即SPI在时钟下降沿发送数据,在时钟的上升沿将数据锁存到DAC714。
Similar presentations