BabyOS_Example使用bFS功能模块 BabyOS提供了FatFS和LittleFS,同时SPIFLASH驱动使用了SFUD开源代码。关于这几个第三方代码,想进一步了解的可以去对应的仓库。下面主要是介绍如何使用。
添加b_drv_spiflash驱动添加b_hal_spi硬件抽象层int bHalSPI_Send(bHalSPINumber_t spi, uint8_t *pbuf, uint16_t len)
{
int i = 0;
uint8_t tmp;
if(pbuf == NULL)
{
return -1;
}
switch(spi)
{
case B_HAL_SPI_1:
Spi_SetCS(Spi0,FALSE);
for(i = 0;i < len;i++)
{
Spi_SendReceiveData(Spi0, pbuf[i], &tmp);
}
Spi_SetCS(Spi0,TRUE);
break;
default:
break;
}
return 0;
}
int bHalSPI_Receive(bHalSPINumber_t spi, uint8_t *pbuf, uint16_t len)
{
int i = 0;
if(pbuf == NULL)
{
return -1;
}
switch(spi)
{
case B_HAL_SPI_1:
Spi_SetCS(Spi0,FALSE);
for(i = 0;i < len;i++)
{
Spi_SendReceiveData(Spi0, 0xff, &pbuf[i]);
}
Spi_SetCS(Spi0,TRUE);
break;
default:
break;
}
return 0;
}
取消引脚定义的注释(b_hal.h内)///< SPIFLASH
#define HAL_SPIFLASH_QSPI_EN 0
#define HAL_SPIFLASH_TOTAL_NUMBER 1
#define HAL_SPIFLASH_IF {{B_HAL_QSPI_INVALID, B_HAL_SPI_1, {B_HAL_GPIOA, B_HAL_PIN4}},}
配置b_config.h注册设备(b_device_list.h)B_DEVICE_REG(SPIFLASH, bSPIFLASH_Driver[0], "flash")
初始化FS并运行测试程序int32_t main(void)
{
/*******************************************************************MCU Init**/
InitClock();
InitGPIO();
InitUart();
InitSPI();
InitRTC();
/************************************************************************/
bInit();
bShellInit();
bFS_Init();
bFS_Test();
while(1)
{
bExec();
BOS_PERIODIC_TASK(TestParam, 10000);
}
}
测试用的FLASH型号是(W25X16AV),这个型号SFUD不支持。可以看到如下打印: W:sfud_init 126 Start initialize Serial Flash Universal Driver(SFUD) V1.1.0.
W:sfud_init 127 You can get the latest version on https://github.com/armink/SFUD .
W:read_jedec_id 871 The flash device manufacturer ID is 0xEF, memory type ID is 0x30, capacity ID is 0x15.
W:read_sfdp_header 122 Error: Check SFDP signature error. It's must be 50444653h('S' 'F' 'D' 'P').
.....
添加设备信息至SPIFLASH设备表: //sfud_flash_def.h
#define SFUD_FLASH_CHIP_TABLE \
{ \
.......
{"W25X16AV", SFUD_MF_ID_WINBOND, 0x30, 0x15, 2L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
.......
}
#endif
实验效果: FS的测试程序是通过文件的方式记录启动次数
BabyOS master分支 https://gitee.com/notrynohigh/BabyOS
|