文章
博客 网店

 STM8 SPI的从设备选择功能问题


  STM8的硬件SPI当作主设备时从设备可以通过NSS(E5)端口自动选择或通过其它IO口用软件来选择,但是对于没有E5这个引脚的芯片,如STM8S003来说只能用软件选择。
  但是起初还以为既然没有NSS这个引脚,那设备成硬件模式也无妨,可这个想法是错误的,设置主模式后的CR2寄存器全0时SPI无法正常工作,只有将CR2寄存器设置成3,即SSM,和SSI位置位SPI才开始工作,这个不是很理解。也许SSM,和SSI引脚只是为从模式准备的,在主模式下工作时这两个位必须是1硬件SPI才能工作。
  硬件SPI在主模式下配置及读写代码:

void spi_init(void)
{
  SPI->CR1=SPI_CR1_SPE|/*SPI_CR1_CPHA|SPI_CR1_CPOL|*/SPI_CR1_MSTR|(3<<3); //16分频
  SPI->CR2=SPI_CR2_SSM|SPI_CR2_SSI; //在主模式下这两个位必须设置?
}

uint8_t spi_rw_byte(uint8_t dat)
{
  while(!(SPI->SR & SPI_SR_TXE));
  SPI->DR=dat;
  while(!(SPI->SR&SPI_SR_RXNE));
  return SPI->DR;
}


芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved