160 likes | 438 Views
SPI (Serial Peripheral Interface Module). Tsinghua Motorola MCU and DSP Application Center June 26,2002. SPI 框图. SPI 特性. 全双工,三线同步传送 机或从机工作方式 使用相互独立的发送和接收数据寄存器实现双缓存( double-buffered )操作 四种可编程主机移位频率(最大可达总线频率的二分之一) 从机的最大移位频率等于总线频率 可编程时钟极性和相位 发送结束中断标志 SPTE ( SPI transmitter empty )
E N D
SPI (Serial Peripheral Interface Module) Tsinghua Motorola MCU and DSP Application Center June 26,2002 No.1
SPI框图 No.2
SPI特性 • 全双工,三线同步传送 • 机或从机工作方式 • 使用相互独立的发送和接收数据寄存器实现双缓存(double-buffered)操作 • 四种可编程主机移位频率(最大可达总线频率的二分之一) • 从机的最大移位频率等于总线频率 • 可编程时钟极性和相位 • 发送结束中断标志SPTE(SPI transmitter empty) • 接收结束中断标志SPRF(SPI receiver full) • 工作方式设置错误中断标志(MODF) • 溢出错误中断标志(OVRF) • 可编程线或模式 • 与I C兼容:一个SPI子系统可以在软件控制下构成复杂或简单配置。 • 一个主MCU和几个从MCU • 几个MCU相互连接构成一个多主机系统 • 一个主MCU和一个或多个从属外设 No.3
数据流动 在一次SPI传送发生时,一个8位字节通过主出从入MOSI(master out slave in)引脚移位输出,同时另一个8位字节从主入从出MISO(master in slave out)引脚输入。这个传送过程可以理解为主机的8位移位寄存器和从机电路联合组成了一个16位循环移位寄存器,在每次传送发生时, 这个16位分布式移位寄存器就循环移动8位,这样就完成了主机和外设之间的数据交换。 No.4
SPI控制寄存器(SPCR) SPRIE:SPI接收中断允许位DMAS:DMA选择位,0=禁止SPRF和SPTE的DMA服务请求SPMSTR:SPI主机位,1=选择SPI主机模式CPOL:时钟奇偶位,1=选择低电平有效时钟CPHA:时钟相位位,1=从机以SPSCK的第一次沿跳变为移位开始信号, 0=从机以SS的下降沿作为移位开始信号SPWOM:SPI线或模式位,1=MOSI和MISO引脚为线或模式,0=普通推拉模式SPE:SPI允许位,1=允许SPI模块SPTIE:SPI发送中断允许位,1=允许发送中断 No.5
SPI引脚功能描述 SPI系统用D端口的四根I/O引脚来实现数据传送:串行时钟SPSCK/PD3(spi serial clock)、主入从出MISO/PD1、从入主出MOSI/PD2和低有效从机片选SS/PD0(slave select)。当不用SPI功能时,这四根引脚就被配置成通用并行输入线。 • 串行数据引脚(MISO,MOSI) • 串行时钟(SPSCK) • 外设片选(SS) No.6
串行数据引脚(MISO,MOSI) 主入从出(MISO)和主出从入(MOSI)用来串行发送和接收数据,数据格式为MSB在前,LSB在后。当SPI被置成主机模式时,MISO是数据输入线,MOSI是数据输出线。 No.7
串行时钟(SPSCK) SPSCK是数据流动的同步信号,对设备通过MOSI和MISO进行的数据输入、输出进行同步。SPSCK信号只能由处于主机模式的MCU发出,对处于从机地位的MCU或外设,SPSCK为输入信号。 在主机模式下,SPSCK信号来源于内部MCU总线时钟。当主机发起一次传送时,SPSCK线上会自动产生8个时钟周期。在主机与从机之间,数据移位发生在SPSCK信号的一个跳变上,待数据稳定后在另外一个跳变进行采样(sample)。SPI状态控制寄存器SPSCR的SPR0和SPR1两位选择SPSCK的时钟频率,共有4种选择。主机和从机之间必须遵守同样的时序模式,SPI控制寄存器SPCR中的CPOL和CPHA可以控制时序模式。 No.8
外设片选(SS) SS引脚的使用对于主机和从机是不同的:在从机模式下,SS是一次数据传送开始前允许从机SPI工作的片选信号;对于主机模式,一般都要将SS线吊成高电平。 No.9
数据/时钟时序图(CPHA=0) No.10
数据/时钟时序图(CPHA=1) No.11
SPI状态控制寄存器(SPSCR) SPRF:SPI接收结束位,1=接收数据寄存器满ERRIE:错误中断允许位,1=允许MODF和OVRF产生CPU中断请求OVRF:溢出标志位,1=溢出MODF:模式设置错误标志位,1=SS引脚逻辑电平不正确SPTE:SPI发送结束位,1=发送数据寄存器空MODFEN:模式设置错误检测允许位,1=允许MODF标志的置起SPR1/SPR0:SPI移位频率选择位 No.12
SPI时钟频率 计算公式为: No.13
SPI数据寄存器(SPDR) SPI数据寄存器由两个独立的数据寄存器:发送数据寄存器(只写)和接收数据寄存器(只读)组成,二者共用一个内存地址($0012)。 当CPU向SPDR执行写操作时,数据被写入发送数据寄存器中;当CPU向SPDR执行读操作时,接收数据寄存器中的数据被读出。 No.14
SPI范例 SPI的初始化代码 : …… LDA #%00111010 ;禁止中断,主机方式,时钟低电平有效, ;启动移位脉冲,普通推拉模式,允许SPI STA SPCR LDA #%00000000 ;禁止中断,禁止错误检测,时钟分频数为2 STA SPSCR …… SPI发送数据的代码 : BRCLR B_SPTE,SPSCR,* ;确认发送数据寄存器为空 LDA #%00111000 ;向SPI液晶送“00111000" STA SPDR …… No.15
SPI应用举例 ——LCD No.16