一.问题概述
关于使用SPI总线驱动外置的25qxx系列Flash。使用SDK中写好的wm_fls_gd25qxx.c驱动只能驱动GD25Q128,而驱动常用的华邦(Winbond)w25q128时会出现无法成功读取Flash ID, 读到的是0x0或者0xfffffff 导致驱动失败。
二.修改方法
对wm_fls.c文件下的tls_spifls_read_id函数做如下修改:
static int tls_spifls_read_id(u32 * id)
{
u32 cmd;
int err;
cmd = FLS_CMD_READ_DEV_ID;
*id = 0;
//将这个发送命令的字节数改为1
err = tls_spi_read_with_cmd((const u8 *) &cmd, 1, (u8 *) id, 3);
if (err != TLS_SPI_STATUS_OK)
{
TLS_DBGPRT_ERR("flash read ID fail(%d)!\n", err);
return TLS_FLS_STATUS_EIO;
}
TLS_DBGPRT_FLASH_INFO("flash ID - 0x%x.\n", *id);
return TLS_FLS_STATUS_OK;
}