spi无论是主机发送从机接收,还是主机接收从机发送,都是要主机发送数据,以此来产生时钟(时钟只能由主机产生)。若flash只想要从机读取主机的数据,发送一个空数据dummy(0x00)
产生时钟。
若flash只想要主机读取从机机的数据,可以接收dummy(0x00)。因此接收和发送都是相同的程序。(野火)
//发送并接收一个字节
uint8_t SPI_FLASH_Send_Byte(uint8_t data)
{
SPITimeout = SPIT_FLAG_TIMEOUT;
//检查并等待至TX缓冲区为空①首先判断TEX是否为1(TEX标志->(0:有数据,1:为空)),为1则发送数据,且一位一位传送。然后再等待
while(SPI_I2S_GetFlagStatus(FLASH_SPIx,SPI_I2S_FLAG_TXE) == RESET)
{
if((SPITimeout--) == 0) return SPI_TIMEOUT_UserCallback(0);
}
//程序执行到此处,TX缓冲区已空
SPI_I2S_SendData (FLASH_SPIx,data);
SPITimeout = SPIT_FLAG_TIMEOUT;
//检查并等待至RX缓冲区为非空②判断RXNE是否为1,为1,说明数据发送完毕,到RX缓冲区了,并且一个字节。
whil