w25q64 linux,我用W25Q16的读写函数测试w25Q64怎么总是失败?需要改动什么吗?

none.gif

8deb71eece797498c4db253cc6b0ffee_257.png (0 Bytes, 下载次数: 60)

2010-12-14 22:54 上传

w25q64的SPI引脚和w25x16一样,只不过把片选改了,求解惑啊

[mw_shl_code=c,true]#define SPI_FLASH_PageSize 256

#define SPI_FLASH_PerWritePageSize 256

/* Private define ------------------------------------------------------------*/

#define W25X_WriteEnable 0x06

#define W25X_WriteDisable 0x04

#define W25X_ReadStatusReg 0x05

#define W25X_WriteStatusReg 0x01

#define W25X_ReadData 0x03

#define W25X_FastReadData 0x0B

#define W25X_FastReadDual 0x3B

#define W25X_PageProgram 0x02

#define W25X_BlockErase 0xD8

#define W25X_SectorErase 0x20

#define W25X_ChipErase 0xC7

#define W25X_PowerDown 0xB9

#define W25X_ReleasePowerDown 0xAB

#define W25X_DeviceID 0xAB

#define W25X_ManufactDeviceID 0x90

#define W25X_JedecDeviceID 0x9F

#define WIP_FlagMask 0x01 /* Write In Progress (WIP) flag */

#define Dummy_Byte 0xA5

u32 SPI_FLASH_ReadID(void)

{

u32 Temp = 0, Temp0 = 0, Temp1 = 0, Temp2 = 0;

/*????SPI_FLASH??????????*/

SPI_FLASH_CS_LOW();

/* ×???????ID ?±?ò??·????ü??*/

SPI_FLASH_SendByte(W25X_JedecDeviceID);

Temp0 = SPI_FLASH_SendByte(Dummy_Byte);

Temp1 = SPI_FLASH_SendByte(Dummy_Byte);

Temp2 = SPI_FLASH_SendByte(Dummy_Byte);

/*????SPI_FLASH??????????*/

SPI_FLASH_CS_HIGH();

Temp = (Temp0 << 16) | (Temp1 << 8) | Temp2;

return Temp;

}

void SPI_FLASH_Test(void)

{

__IO uint32_t FlashID = 0;

__IO uint32_t DeviceID = 0;

/*????SPI_Flash??ID*/

FlashID = SPI_FLASH_ReadID();

printf("\r\n ??????ID?? 0x%X", FlashID);

/* ??????????SPI_Flash??ID??·????· */

// if ((FlashID == W25X16_FLASH_ID))

{

/* ????SPI FLASH???????? */

SPI_FLASH_SectorErase(FLASH_SectorToErase);

printf("\r\n ????SPI FLASH????????: %s", Tx_Buffer);

/* ??Tx_Buffer??????SPI FLASH?? */

SPI_FLASH_BufferWrite(Tx_Buffer, FLASH_WriteAddress, BufferSize);

/* ??SPI FLASH??????????*/

SPI_FLASH_BufferRead(Rx_Buffer, FLASH_ReadAddress, BufferSize);

/* ?ì?é??????????????????????·????? */

TransferStatus1 = Buffercmp(Tx_Buffer, Rx_Buffer, BufferSize);

if(PASSED == TransferStatus1)

{

printf("\r\n ??????????????????????!\n\r");

}

else

{

printf("\r\n ?í?ó-->????????????????????????!\n\r");

}

/* ????SPI FLASH???????? */

SPI_FLASH_SectorErase(FLASH_SectorToErase);

/* ??SPI FLASH??????????*/

SPI_FLASH_BufferRead(Rx_Buffer, FLASH_ReadAddress, BufferSize);

/* ?ì?é??????????????·????· */

for (Index = 0; Index < BufferSize; Index++)

{

if (Rx_Buffer[Index] != 0xFF)

{

TransferStatus2 = FAILED;

}

}

if(PASSED == TransferStatus2)

{

printf("\r\n ?????ó??????????0xFF?????·!\n\r");

}

else

{

printf("\r\n ?í?ó-->?????ó????????????0xFF!\n\r");

}

if((PASSED == TransferStatus1) && (PASSED == TransferStatus2))

{

printf("\r\n W25x16???????é????!\n\r");

}

else

{

printf("\r\n W25x16???????é?§°?!\n\r");

}

}

// else

// {

// printf("\r\n W25x16???????é?§°?!\n\r");

// }

/*SPI FLASH????????????*/

SPI_Flash_PowerDown();

}[/mw_shl_code]

我的板子上是w25q16芯片,w25Q64的外围电路是照着这个弄得,应该合适的吧 怎么连ID都读不出来……板子上的芯片用惯了,实际用个芯片感觉好难!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值