微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > 外部flash读写

外部flash读写

时间:10-02 整理:3721RD 点击:

我想在外部flash写入一个数,然后读出来,请问怎么写,谢谢

你按照你外部Flash的操作时序写和读就行了。

参考TI的SDK中的例子file_download

//-------------------------------------------------从网页下载数据写入SPI_Flash中---------------------------------------------------
// Open file to save the downloaded file
lRetVal = sl_FsOpen((_u8 *)FILE_NAME, FS_MODE_OPEN_WRITE, &Token, &fileHandle);
if(lRetVal < 0)
{
// File Doesn't exit create a new of 40 KB file
lRetVal = sl_FsOpen((unsigned char *)FILE_NAME, FS_MODE_OPEN_CREATE(SIZE_40K, _FS_FILE_OPEN_FLAG_COMMIT|_FS_FILE_PUBLIC_WRITE), &Token, &fileHandle);
ASSERT_ON_ERROR(lRetVal);
}
while(1)
{
len = HTTPCli_readResponseBody(cli, (char *)g_buff, sizeof(g_buff) - 1, &moreFlag);
if(len < 0)
{
// Close file without saving
lRetVal = sl_FsClose(fileHandle, 0, (unsigned char*) "A", 1);
return lRetVal;
}

lRetVal = sl_FsWrite(fileHandle, bytesReceived,(unsigned char *)g_buff, len);

if(lRetVal < len)
{
UART_PRINT("Failed during writing the file, Error-code: %d\r\n", \
FILE_WRITE_ERROR);
// Close file without saving
lRetVal = sl_FsClose(fileHandle, 0, (unsigned char*) "A", 1);
return lRetVal;
}
bytesReceived +=len; //偏移地址增加

if ((len - 2) >= 0 && g_buff[len - 2] == '\r' && g_buff [len - 1] == '\n')
{
break;
}

if(!moreFlag)
{
break;
}
}
//
// If user file has checksum which can be used to verify the temporary
// file then file should be verified
// In case of invalid file (FILE_NAME) should be closed without saving to
// recover the previous version of file
//

// Save and close file
UART_PRINT("Total bytes received: %d\n\r", bytesReceived);
lRetVal = sl_FsClose(fileHandle, 0, 0, 0);
ASSERT_ON_ERROR(lRetVal);
//--------------------------------------------------------------------------------------------------------------------------------------------

谢谢。

这个外部flash是通过spi读写数据的吗?

我的程序里有用到spi干别的事,会影响吗?为什么一到写的时候就运行不下去了

lRetVal = sl_FsOpen((unsigned char *)USER_FILE_NAME, FS_MODE_OPEN_CREATE(SIZE_40K, \ _FS_FILE_OPEN_FLAG_COMMIT|_FS_FILE_PUBLIC_WRITE), ulToken, lFileHandle);

到这一句就死了

你在操作fsopen之前,需要调用sl_Start的,请问你调用了吗?也就是说你要把WIFI先enable起来才可以。

谢谢回复。我用的是多个task,加上了sl_start()就成功了。

这个外部flash是通过spi读写数据的,你的程序里有用到spi干别的事只要不要调用 SPI Flash的SPI就不会有影响,CC3200有3个SPI模块,一个内部总线使用,一个给外部的SPI Flash芯片,另一个给用户使用。你调用用户使用的SPI 就可以了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top