SD卡上电后,需要等待74个Clk,网上很多教程都是这么写的
在片选使能之前
for(retry=0; retry<10; retry++)
{
_spi_read_write(DUMMY_BYTE);
}
而_spi_read_write()的定义如下:
__inline int _spi_read_write(uint8_t data)
{
/* Loop while DR register in not emplty */
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
/* Send byte through the SPI2 peripheral */
SPI_I2S_SendData(SPI2, data);
/* Wait to receive a byte */
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Return the byte read from the SPI2 bus */
return SPI_I2S_ReceiveData(SPI2);
}
我的问题是,片选没有使能,从机会返回数据吗?如果不返回,那不是会死在while里?如果返回,多从情况下不是会造成总线冲突? |