STM8S105K4使用硬件spi读LSM9DS1的注意
- SPI配置的几个要素:MSB、主从、PHASE_EDGE、POLARITY、NSS ;
- 主机时钟和SPI的速度的匹配,需要测试。
- STM8的spi初始化函数中的CRC是个什么鬼
?
- SPI读取LSM9DS1时,需要先指定读取地址,然后再发一个直接的时序,读取该地址的数据。此时一定把第一次读地址的数据(虽然没有用)也读出来。
代码
SPI_Cmd(ENABLE);
CS_M_L;
while(SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET);
SPI->DR = address|0x80;
while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == SET);
tmp_rx = SPI->DR;
while(SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET);
SPI->DR = 0x00;
while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == SET);
tmp_rx = SPI->DR;
CS_M_H;
SPI_Cmd(DISABLE);