STM32 SPI 接口的简单实现 通常 SPI通过 4个引脚与外部器件相连: ● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。 ● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。 ● SCK:串口时钟,作为主设备的输出,从设备的输入 ●NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的 NSS引脚可以由主设备的一个标准 I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在 SPI处于主模式时拉低;此时,所有的 SPI设备,如果它们的 NSS引脚连接到主设备的 NSS引脚,则会检测到低电平,如果它们被设置为 NSS硬件模式,就会自动进入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果 NSS被拉低,则这个 SPI设备进入主模式失败状态:即 MSTR位被自动清除,此设备进入从模式。 时钟信号的相位和极性 SPI_CR寄存器的 CPOL和 CPHA位,能够组合成四种可能的时序关系。CPOL(时钟极性)位控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。如果 CPOL被清’0’,SCK引脚在空闲状态保持低电平;如果 CPOL被置’1’,SCK引脚在空闲状态保持高电平。 如果 CPHA(时钟相位)位被置’1’,SCK时钟的第二个边沿(CPOL位为 0时就是下降沿,CPOL位为’1’时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。如果 CPHA位被清’0’,SCK时钟的第一边沿(CPOL位为’0’时就是下降沿,CPOL位为’1’时就是上升沿)进行数据位采样,数据在第一个时钟边沿被锁存。 CPOL时钟极性和 CPHA时钟相位的组合选择数据捕捉的时钟边沿。 图 212显示了 SPI传输的 4种CPHA和 CPOL位组合。此图可以解释为主设备和从设备的 SCK脚、MISO脚、MOSI脚直接连接的主或从时序图。 CPOL时钟极性和CPHA时钟相位的组合选择数据捕捉的时钟边沿。 上图显示了SPI传输的4种CPHA和CPOL位组合。此图可以解释为主设备和从设备的SCK脚、MISO脚、MOSI脚直接连接的主或从时序图。 注意: 1. 在改变CPOL/CPHA位之前,必须清除SPE位将SPI禁止。 2. 主和从必须配置成相同的时序模式。 3.SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL为’1’时,空闲时应上拉 SCK为高电平;CPOL为’0’时,空闲时应...