在线时间0 小时
UID324561
注册时间2011-10-25
NXP金币0
该用户从未签到
新手上路

- 积分
- 88
- 最后登录
- 1970-1-1
|
利用K60的SPI2读写sst25vf016b.c ,现在遇到问题是连sst25vf016b.c的状态寄存器都读不出来,测试代码在附件的工程里面,SPI的片选是模拟出来的,这样比较灵活。下面贴上部分代码,主要是读、写寄存器。请大家帮忙分析下,先谢啦。
void SPI_FLASH_Write_SR(Uint8 sr)
{
SST25_CS_LOW; /* 片选*/
#if NOP==1
for(Uint8 j=NOP_NUM;j>0;j--)
asm("NOP");
#endif
SPI_Write(SPI2, CMD_EWSR); /* 使能写状态寄存器命令*/
SST25_CS_HIGH; /* 取消片选*/
#if NOP==1
for(Uint8 j=NOP_NUM;j>0;j--)
asm("NOP");
#endif
SST25_CS_LOW; /* 片选 */
#if NOP==1
for(Uint8 j=NOP_NUM;j>0;j--)
asm("NOP");
#endif
SPI_Write(SPI2, CMD_WRSR); /* 发送写取状态寄存器命令 */
SPI_Write(SPI2, sr); /* 写入一个字节 */
SST25_CS_HIGH; /* 取消片选*/
}
Uint8 SPI_Flash_ReadSR(void)
{
Uint8 byte=0;
SST25_CS_LOW; /* 使能器件 */
#if NOP==1
for(Uint8 j=NOP_NUM;j>0;j--)
asm("NOP");
#endif
SPI_Write(SPI2, CMD_RDSR); /* 发送读取状态寄存器命令*/
byte = SPI_Read(SPI2); /* 读取一个字节 */
SST25_CS_HIGH; /* 取消片选 */
return byte;
}
测试程序:
while(1)
{
RecTmp = SPI_Flash_ReadSR();
SPI_FLASH_Write_SR(0x04);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
SPI_FLASH_Write_SR(0x0C);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
SPI_FLASH_Write_SR(0x1C);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
SPI_FLASH_Write_SR(0x3C);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
SPI_FLASH_Write_SR(0x84);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
SPI_FLASH_Write_SR(0x8C);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
SPI_FLASH_Write_SR(0x9C);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
SPI_FLASH_Write_SR(0xBC);
RecTmp = SPI_Flash_ReadSR();
asm("NOP");
}
读出来的寄存器状态不对,基本是0x80或是0x82
|
|