OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11417|回复: 12

STM32F407 FATFS+SD,单次写文件大于1kb,写入函数返回FR_DISK_ERR错误,请教原因?

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-12-19
在线时间
49 小时
发表于 2020-5-13 15:39:08 | 显示全部楼层 |阅读模式
1金钱
使用f_write()函数单次往文件里写1kb或者2kb的数据长度时,函数返回FR_DISK_ERR错误,偶尔写入成功几次,比如写10次成功3次,各位大佬,求教?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-13 15:39:08 | 显示全部楼层
虽然我不懂,但还是帮顶!
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7462
金钱
7462
注册时间
2015-1-15
在线时间
1367 小时
发表于 2020-5-13 17:13:34 | 显示全部楼层
这种问题一般都是底层驱动问题,具体原因只能自己检查了
一分耕耘一分收获。
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-12-19
在线时间
49 小时
 楼主| 发表于 2020-5-13 17:40:39 | 显示全部楼层
yklstudent 发表于 2020-5-13 17:13
这种问题一般都是底层驱动问题,具体原因只能自己检查了

单次读写512个字节就非常稳定,这个感觉和FATFS的配置有关。
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-12-19
在线时间
49 小时
 楼主| 发表于 2020-5-13 17:41:34 | 显示全部楼层
电来了当 发表于 2020-5-13 15:39
虽然我不懂,但还是帮顶!

感谢~感谢~感谢~
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-12-19
在线时间
49 小时
 楼主| 发表于 2020-5-13 17:43:17 | 显示全部楼层
尝试修改过_MIN_SS和_MAX_SS为1024或者2048,还是不行。
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7462
金钱
7462
注册时间
2015-1-15
在线时间
1367 小时
发表于 2020-5-13 19:23:19 | 显示全部楼层
Sanas777 发表于 2020-5-13 17:40
单次读写512个字节就非常稳定,这个感觉和FATFS的配置有关。

你底层多sector写有问题吧
一分耕耘一分收获。
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-9-13
在线时间
4 小时
发表于 2021-9-29 11:37:23 | 显示全部楼层
遇到了相同的问题,512字节特别稳,多一个字节都不行,请问解决了吗?
回复

使用道具 举报

34

主题

94

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2022-4-8
在线时间
81 小时
发表于 2023-1-31 00:08:28 | 显示全部楼层
为什么我的只能写入4个字符?以下是我的代码:
  1. //写入数据到文件
  2. void testWrite(char *filePath, char *writeBuffer)
  3. {
  4.         FIL fnew;        //文件对象
  5.         FRESULT write_SD;     //fatfs返回代码
  6.         UINT fnum; //函数到时返回写入的字节数
  7.         write_SD= f_open(&fnew,filePath, FA_OPEN_ALWAYS|FA_WRITE);
  8.         write_SD= f_lseek(&fnew,f_size(&fnew));
  9.         write_SD= f_write(&fnew, writeBuffer , sizeof(writeBuffer), &fnum);
  10.         if(write_SD==FR_OK)
  11.                 printf("-testWrite: 写入成功!\r\n");
  12.         else {
  13.                 printf("-testWrite: 写入失败!\r\n");
  14.         }
  15.         write_SD=f_close(&fnew);
  16. }
复制代码

testWrite("Test/testWrite.txt", "0123456789abcdef");
回复

使用道具 举报

4

主题

96

帖子

0

精华

高级会员

Rank: 4

积分
505
金钱
505
注册时间
2022-7-23
在线时间
92 小时
发表于 2023-1-31 09:27:07 | 显示全部楼层
虽然我不懂,但还是帮顶!
回复

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2023-2-2
在线时间
11 小时
发表于 2024-9-3 14:40:04 | 显示全部楼层
请问解决了吗……我用STM32f107VCT6  SPI FATFS 也遇到了同样的问题 1023字节就正常 1024字节就报错了
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-8-23
在线时间
3 小时
发表于 2024-9-9 16:00:32 来自手机 | 显示全部楼层
尘闲吖 发表于 2024-9-3 14:40
请问解决了吗……我用STM32f107VCT6  SPI FATFS 也遇到了同样的问题 1023字节就正常 1024字节就报错了:dizz ...

兄弟我用其他单片机也发现和你同样的错误
回复

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2023-2-2
在线时间
11 小时
发表于 2024-9-20 10:51:32 | 显示全部楼层
12356789 发表于 2024-9-9 16:00
兄弟我用其他单片机也发现和你同样的错误

我用这种方法解决了 把199行那个判断的 return FALSE; 屏蔽掉 超过512字节报错的一种问题原因(博客园)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 09:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表