TI中文支持网
TI专业的中文技术问题搜集分享网站

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。但是我想请教一下老师,这是什么原因。

谢谢!

 

Shine:

第二次dummy write(空写)是为读操作提供clock。

但应该读一次就可以了,你试试读一次能否读到正确数据?

Meng Huang1:

回复 Shine:

读一次结果不正确呢?读出来的数都是0。

Shine:

回复 Meng Huang1:

确定是写-写-读么?那就要量一下时序看是哪根信号不对。

Meng Huang1:

回复 Shine:

量时序使用示波器么?

Shine:

回复 Meng Huang1:

对,用示波器量

赞(0)
未经允许不得转载:TI中文支持网 » 5501读spi flash at25f2048状态寄存器的程序
分享到: 更多 (0)