This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

5501读spi flash at25f2048状态寄存器的程序



我用5501的McBSP0接口连接flash at25f2048,进行读寄存器操作,时序如下图:

读状态寄存器的程序如下:

Uint16 SPI_ReadStatusReg(void)

{

Uint16 value=0;

hMcbsp=MCBSP_open(MCBSP_PORT0,MCBSP_OPEN_RESET);

SPI_8bit(hMcbsp); //将MCBSP0配置成时钟停止模式,数据长度为8bit

GPIO_RESET(IODATA,0X00);

 

while(!MCBSP_xrdy(hMcbsp)){};

MCBSP_write16(hMcbsp,RDSR);

while(!MCBSP_xrdy(hMcbsp)){};

MCBSP_write16(hMcbsp,0);

 

while(!MCBSP_rrdy(hMcbsp)){};

MCBSP_read16(hMcbsp);

SPIEND_Delay();

while(!MCBSP_rrdy(hMcbsp)){};

MCBSP_read16(hMcbsp);

 

GPIO_REST(IODATA,0x10);

SPIEND_Delay();

MCBSP_close(hMcbsp);

return value;

}

我想问的是为什么在发送了读寄存器命令RDSR之后,还要再一次执行MCBSP_write16(hMcbsp,0)语句,为什么MCBSP_read16(hMcbsp)语句也执行了两次。以上程序经过验证是正确的,如果发送RDSR命令后只执行一次MCBSP_read16(hMcbsp)读出来的数据将全部为0。但是我想请教一下老师,这是什么原因。

谢谢!