当前位置:文档之家› SPI协议

SPI协议


External Signal Description
Memory Map/Register Definition
Address Use Access
$___0 $___1
$___2 $___3 $___4 $___5
SPI Control Register 1 (SPICR1) SPI Control Register 2 (SPICR2)
SPICR1
CPOL — SPI Clock Polarity Bit(SPI时钟极性控制位) 该位选择反相或非反相SPI时钟。 要在SPI模块之间传输数据,SPI模块必 须具有相同的CPOL值。 在主模式下,该位的更改将中止正在进行的传输, 并强制SPI系统进入空闲状态。 1 = 低电平时钟有效,在空闲状态SCK为高电平。 0 = 高电平时钟有效,在空闲状态SCK为低电平。
SPICR2
双向引脚配置
SPI Baud Rate Register(SPIBR)
Register Address: $___2
Read : anytime Write : anytime; writes to the reserved bits have no effect
SPIBR
SPPR2–SPPR0 — SPI Baud Rate Preselection Bits (波特率预分频位) SPR2–SPR0 — SPI Baud Rate Selection Bits ( SPI波特率选择位)
General
Master Mode
当MSTR置位时,SPI工作在主模式。 只有SPI主机可以传输数据。 数 据传输通过对主机SPI数据寄存器写入开始。 如果移位寄存器为空,则字 节立即传送到移位寄存器。 字节在串行时钟的控制下开始在MOSI引脚上 移出。
• S-clock SPI波特率寄存器中的波特率选择位SPR2,SPR1和SPR0及波特率预分 频位SPPR2,SPPR1和SPPR0控制波特率发生器及决定传输速度。 SCK引脚 就是是SPI时钟输出。 主机的波特率发生器通过SCK引脚控制外围从机的 移位寄存器。
Register Descriptions
SPI Control Register 1
SPI Control Register 2 SPI Baud Rate Register SPI Status Register SPI Data Register
SPI Control Register 1(SPICR1)
SPICR2
SPISWAI — SPI Stop in Wait Mode Bit(SPI等待模式停止位) 该位用于在等待模式下降低功耗。 1 = 在等待模式下停止产生SPI时钟 0 = 在等待模式下SPI时钟正常工作
SPICR2
SPC0 — Serial Pin Control Bit 0(串行控制位0) 该位使能双向引脚配置。 在主模式下,该位的更改将中止正在进行的传 输,并强制SPI系统进入空闲状态。
LSBFE — LSB-First Enable(最低有效位使能位) 该位不影响数据寄存器中MSB和LSB的位置。 对数据寄存器的读和写包含 MSB( Bit 7 )。在主模式下,该位的更改将中止正在进行的传输,并强 制SPI系统进入空闲状态。 1 = 数据传输从最低有效位开始。 0 = 数据传输从最高有效位开始。
SPIDR
当SPIF置位时,SPIDR中的接收的数据是有效的。 如果SPIF清零且接收到一个字节,接收到的字节将从接收移位寄存器 传送到SPIDR,且SPIF被置位。 如果SPIF置位且未服务,并且接收到第二个字节,则第二个接收字节 在接收移位寄存器中保持为有效字节直到下一次传输开始。 期间在SPIDR 中的字节不更改。 如果SPIF置位且接收移位寄存器中有一个有效字节,并且在第三次传 输开始前SPIF服务,则接收移位寄存器中的字节将传输到SPIDR中,SPIF 保持置位。 如果SPIF置位且接收移位寄存器中有一个有效字节,并且在第三次传 输开始后SPIF服务,则接收移位寄存器中的字节变为无效,并且不会传 输到SPIDR中。
Register Address: $___0
Read : anytime Write : anytime
SPICR1
SPIE — SPI Interrupt Enable Bit(SPI中断使能位) 如果SPIF或MODF状态标志位置位,则该位控制SPI中断请求。 1 = SPI中断使能 0 = SPI中断禁用
Master Mode
Master Mode
注意:在主模式下,CPOL,CPHA,SSOE,LSBFE,MODFEN,SPC0及 BIDIROE(SPC0置位)的变化,SPPR2-SPPR0及SPR2-SPR0的更改将中止正 在进行的传输,并强制SPI进入空闲状态。 远处的从机无法检测到这一点, 因此主机必须保证远处从机进入空闲状态。 另外,在从模式下,CPOL,CPHA,SSOE,LSBFE,MODFEN,SPC0 及BIDIROE(SPC0置位)的更改,将破坏正在进行的传输,必须避免。
SPICR1
SPTIE — SPI Transmit Interrupt Enable(SPI传输中断使能位) 如果SPTEF标志位置位,则该位控制SPI传输中断。 1 = SPI中断使能 0 = SPIr/Slave Mode Select Bit(SPI主/从模式选择位) 该位用于选择SPI工作在主模式还是从模式。让SPI从主模式转换到从模式 或者反过来也可以强制SPI系统进入空闲状态。 1 = SPI工作在主模式 0 = SPI工作在从模式
SPICR1
CPHA — SPI Clock Phase Bit(SPI时钟相位控制位) 该位用于选择SPI时钟格式。在主模式下,该位的更改将中止正在进行的 传输,并强制SPI系统进入空闲状态。 1 = 在每个周期的第二个时钟沿采样数据 0 = 在每个周期的第一个时钟沿采样数据
SPICR1
SPICR1
SPI Control Register 2(SPICR2)
Register Address: $___1
Read : anytime Write : anytime; writes to the reserved bits have no effect
SPICR2
SPICR2
BIDIROE — Output enable in the Bidirectional mode of operation (双向模式输出使能位) 当处于双向工作模式(SPC0置位)时,该位控制SPI的MOSI和MISO输出 缓冲器。在主模式下,该位控制MOSI端口的输出缓冲器。在从模式下该 位控制MISO端口的输出缓冲器。在主模式下,且SPC0置位时,该位的更 改将中止正在进行的传输,并强制SPI进入空闲状态。 1 = 输出缓冲器使能 0 = 输出缓冲器禁用
SPI Baud Rate Register (SPIBR) SPI Status Register (SPISR) Reserved SPI Data Register (SPIDR)
Read / Write
Read / Write
$___6 $___7
Reserved Reserved
NOTES: 1.某些位是不可写的。 2.对该寄存器的写操作将被忽略。 3.从此寄存器读取全部返回零。
SPI Block Diagram
Features
主模式和从模式 双向模式 从选择输出 模式错误标志,具有CPU中断能力 双缓冲数据寄存器 串行时钟的极性和相位可编程 对SPI在等待模式期间的操作控制
Modes of Operation
• Run Mode
基本运行模式
SPISR
SPI Data Register(SPIDR)
Register Address: $___5
Read : anytime; normally read only when SPIF is set Write : anytime
SPIDR
SPI数据寄存器既是SPI数据的输入寄存器也是数据的输出寄存器。当对该 寄存器进行写操作时允许将数据字节排队并传输。当SPI被配置为主机时, 排队的数据字节在上一个传输完成后立即传输。SPISR 中的SPTEF 用于表 明SPIDR是否准备好接收新数据。
SPIBR
SPI Status Register(SPISR)
Register Address: $___3
Read : anytime Write : has no effect
SPISR
SPIF — SPIF Interrupt Flag(SPIF中断标志位) 该位在接收到的数据字节传输到SPI数据寄存器后置位。 该位通过 读取SPISR寄存器(SPIF置位),随后读SPI数据寄存器来清零。 1 = 新数据已复制到SPIDR 0 = 传输尚未完成
SPISR
SPTEF — SPI Transmit Empty Interrupt Flag(SPI传输空中断标志) 如果置位,该位表明传输数据寄存器为空。要清零该位并将数据放入传 输数据寄存器,SPISR必须被读且SPTEF = 1,然后写入SPIDR。任何写入 SPIDR没有读SPTEF = 1,会被忽略。 1 = SPI数据寄存器为空 0 = SPI数据寄存器不为空
SPICR1
SPE — SPI System Enable Bit(SPI系统使能位) 该位用于控制SPI系统使能和SPI端口引脚用于SPI系统功能。 如果SPE清零, SPI被禁用并强制进入空闲状态,SPISR寄存器中的状态位被复位。 1 = SPI使能,端口引脚用于SPI功能 0 = SPI禁用(低功耗)
• Stop Mode
SPI在停止模式下是空闲的,以降低功耗。 如果SPI被配置为主机,则 任何传输都被停止,但在CPU进入运行模式后恢复。 如果SPI被配置为从 机,则继续接收和发送字节,以使从机与主机保持同步。
相关主题