地址和数据总线读出接收缓冲区介MOSID移位寄存器MISOtLSBFIRST个控制位发送缓冲区写入通信电路SCKCBR2:0]波特率发生器主控制电路NSSO图9-4STM32F103微控制器SPI内部结构图
图9-4 STM32F103 微控制器SPI内部结构图
通常SPI通过4个引脚与外部器件相连:①MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。②MOSl:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。③SCK:串口时钟,作为主设备的输出,从设备的输入O4)NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为片选引脚,让主设备可以单独地与特定从设备通信,避免数据线上的冲突
通常SPI通过4个引脚与外部器件相连: ① MISO:主设备输入/从设备输出引脚。该引脚在从模 式下发送数据,在主模式下接收数据。 ② MOSI:主设备输出/从设备输入引脚。该引脚在主模 式下发送数据,在从模式下接收数据。 ③ SCK:串口时钟,作为主设备的输出,从设备的输入 。 ④ NSS:从设备选择。这是一个可选的引脚,用来选择 主/从设备。它的功能是用来作为片选引脚,让主设备可以 单独地与特定从设备通信,避免数据线上的冲突
9.2.3时钟信号的相位和极性SPLCR寄存器的CPOL和CPHA位,能够组合成四种可能的时序关系。CPOL(时钟极性)位控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。如果CPOL被清O,SCK引脚在空闲状态保持低电平:如果CPOL被置1,SCK引脚在空闲状态保持高电平。如图9-5所示,如果CPHA(时钟相位)位被清0,数据在SCK时钟的奇数(第1、3、5个·)跳变沿(CPOL位为C时就是上升沿,CPOL位为1时就是下降沿)进行数据位的存取,数据在SCK时钟偶数(第2、4、6个.··)跳变沿(CPOL位为O时就是下降沿,CPOL位为1时就是上升沿)准备就绪
SPI_CR寄存器的CPOL和CPHA位,能够组合成四种 可能的时序关系。CPOL(时钟极性)位控制在没有数据传 输时时钟的空闲状态电平,此位对主模式和从模式下的设备 都有效。如果CPOL被清0,SCK引脚在空闲状态保持低电 平;如果CPOL被置1,SCK引脚在空闲状态保持高电平。 如图9-5所示,如果CPHA(时钟相位)位被清0,数据 在SCK时钟的奇数(第1、3、5个···)跳变沿(CPOL位为0 时就是上升沿,CPOL位为1时就是下降沿)进行数据位的 存取,数据在SCK时钟偶数(第2、4、6个···)跳变沿( CPOL位为0时就是下降沿,CPOL位为1时就是上升沿)准 备就绪。 9.2.3 时钟信号的相位和极性
CPHA=OCPOL=1CPOL=O最低位最高位MISO(来自从设备)由SPICR1决定数据顿格式是8位还是16位最低位最高位MOSI(米自从设备)NSS(至从设备)采样时间点图9-5CPHA=0时SPI时序图
图9-5 CPHA=0时SPI时序图
如图9-6所示,如果CPHA(时钟相位)位被置1,数据在SCK时钟的偶数(第2、4、6个:)跳变沿(CPOL位为0时就是下降沿,CPOL位为1时就是上升沿)进行数据位的存取,数据在SCK时钟奇数(第1、3、5个.:·)跳变沿(CPOL位为O时就是上升沿,CPOL位为1时就是下降沿)准备就绪O
如图9-6所示,如果CPHA(时钟相位)位被置1,数据 在SCK时钟的偶数(第2、4、6个···)跳变沿(CPOL位为0 时就是下降沿,CPOL位为1时就是上升沿)进行数据位的存 取,数据在SCK时钟奇数(第1、3、5个···)跳变沿(CPOL 位为0时就是上升沿,CPOL位为1时就是下降沿)准备就绪