【发布时间】:2021-01-08 06:35:30
【问题描述】:
uint8_t SPI_Rx(uint8_t address)
{
GPIO_ResetBits(GPIOE,GPIO_Pin_3);
address = (0x80) | (address);
while(!SPI_I2S_GetFlagStatus(SPI1,SPI_FLAG_TXE));
SPI_I2S_SendData(SPI1,address);
while(!SPI_I2S_GetFlagStatus(SPI1,SPI_FLAG_RXNE));
SPI_I2S_ReceiveData(SPI1);
while(!SPI_I2S_GetFlagStatus(SPI1,SPI_FLAG_TXE));
SPI_I2S_SendData(SPI1,0x00);
while(!SPI_I2S_GetFlagStatus(SPI1,SPI_FLAG_RXNE));
SPI_I2S_ReceiveData(SPI1);
GPIO_SetBits(GPIOE,GPIO_Pin_3);
return SPI_I2S_ReceiveData(SPI1);
您好,您看到的是 LIS3DSH 传感器的 SPI 读取功能。首先,在我发送地址信息后,SPI RX 缓冲区接收 LIS3DSH 传感器的数据。但是为什么它需要通过发送“0x00”来接收LIS3DSH传感器的数据呢?简而言之,为什么我们已经收到了数据,还需要再次发送 else 数据?提前,谢谢。
【问题讨论】:
标签: spi