新手上路
- 积分
- 20
- 金钱
- 20
- 注册时间
- 2022-1-16
- 在线时间
- 10 小时
|
5金钱
请问一下各位前辈,在下参考 STM32 Mini的教程,用SPI驱动SD卡,并照着教程移植了FATFS 文件系统,但是发现了一个很奇怪的问题:
不挂载文件系统,SPI读写 扇区 正常
挂载FATFS系统,f_open - f_read -f_close,可以把SD卡中txt文件中的内容读出来
但是,挂载FATFS系统,f_open - f_write -f_close,这个过程返回值全部为(FR_OK:成功),整个过程没有报错,但用Windows读的时候,是没有写入内容的,
文件如果事先不存在,只会创建一个文件,但是只有 0KB ,请各位大哥指教一下什么原因啊
软硬件平台:
SPI驱动: 正点原子MiNi板,SPI 驱动SD卡SPI配置
硬件平台:正点原子 开源飞控STM32F405
已经换过2张SD卡,现象均一致
SD卡格式化为FAT32,块区大小也修改过,还是无法写入
尝试加入 f_sync(&FileSystemDst);,没有解决
ffconf.h中的 READONLY配置是 0
现将main函数 贴上来,请各位大哥帮忙看下什么原因 ,感激不尽
int main(void)
{
//FAT功能测试:格式化测试,文件写入测试,文件读取测试(基本功能)
FATFS fs; //FatFs文件系统对象
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //延时初始化
uart_init(115200); //串口初始化波特率为115200
LED_Init(); //初始化与LED连接的硬件接口
while(SD_Initialize())//检测不到SD卡
{
printf("没有 SD 卡\n");
GPIO_SetBits(GPIOB,GPIO_Pin_9 );//GPIOF9,F10设置高,灯灭
delay_ms(500);
GPIO_ResetBits(GPIOB,GPIO_Pin_9 );//GPIOF9,F10设置高,灯灭
delay_ms(500);
}
res = f_mount(&fs, "0:", 1 );
if (res != FR_OK)
{
printf("挂载文件系统失败 (%s)\r\n", FR_Table[res]);
}
else
{
printf("挂载文件系统成功 (%s)\r\n", FR_Table[res]);
}
res = f_open( &FileSystemDst , "0:/Demo1.TXT", FA_OPEN_ALWAYS | FA_WRITE );
if( res == FR_OK )/* 对f_open()函数的返回值进行检查 */
{
printf("File Open SUCCESS! \n\t");
res = f_lseek(&FileSystemDst, f_size(&FileSystemDst));
if(res != FR_OK)
printf("f_lseek失败 (%s)\r\n", FR_Table[res]);
else
printf("f_lseek成功 (%s)\r\n", FR_Table[res]);
res = f_write( &FileSystemDst , TxFileBuffer , sizeof(TxFileBuffer) , &bw);
f_sync(&FileSystemDst);
if(res != FR_OK)
printf("f_write失败 (%s)\r\n", FR_Table[res]);
else
printf("f_write成功 (%s)\r\n", FR_Table[res]);
/* 关闭文件 */
f_close(&FileSystemDst);
}
else
printf("f_open error! \r\n");
f_mount(0, "0:", 0 );
while(1)
{ }
}
谢谢各位!
@正点原子
|
|