硬汉嵌入式论坛

 找回密码
 立即注册
查看: 560|回复: 5
收起左侧

[FatFs] f_write 失敗

[复制链接]

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 2023-7-12 11:41:56 | 显示全部楼层 |阅读模式
本帖最后由 iriss 于 2023-7-12 17:10 编辑

在stm32f4 測試sd卡 寫個簡單測試
文件打得開但寫入跟關閉都失敗  err =1
請問 需要檢查哪裡或調整?

還有是因為上述的失敗
所以sd卡內沒有test.txt這個文件 ??
不是有f_open成功就會產生文件在sd卡內??
感謝
  
// open
  fs_handle.retSD = f_open(&fs_handle.SDFile, "test.txt", FA_CREATE_ALWAYS | FA_WRITE);
  //if (fs_handle.retSD  != FR_OK) {
      db_printf(DB_ALWAYS,"f_open fail:%d\n",fs_handle.retSD);
// }
  // write
  char* data = "Hello, world!";
  UINT bytes_written;
  fs_handle.retSD = f_write(&fs_handle.SDFile, data, strlen(data), &bytes_written);
// if (fs_handle.retSD != FR_OK) {
      db_printf(DB_ALWAYS,"f_write fail:%d\n",fs_handle.retSD);
  //}

  // close
  fs_handle.retSD  = f_close(&fs_handle.SDFile);
// if (fs_handle.retSD != FR_OK) {
      db_printf(DB_ALWAYS,"f_close fail:%d\n",fs_handle.retSD);
// }

回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2023-7-13 09:02:29 | 显示全部楼层
一開始測試是用128G, 剛剛發現改2G卡就可以寫入成功, 想說是跟128卡跟exfat有關嗎?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-7-13 15:23:20 | 显示全部楼层
iriss 发表于 2023-7-13 09:02
一開始測試是用128G, 剛剛發現改2G卡就可以寫入成功, 想說是跟128卡跟exfat有關嗎?

128G卡要开exFAT
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2023-7-13 17:38:54 | 显示全部楼层
感謝回覆!!

我還想請問
f_write 只能寫入char 型態
但我實驗的數據存在浮點數陣列
跟網路上操作
      char SensorBuff[100];
      uint8_t log_array[4]={1,2,3,4};
      if(f_open(&fs_handle.SDFile,(const char*)"Sensor.csv",FA_OPEN_APPEND | FA_WRITE | FA_READ) == FR_OK){
             sprintf(SensorBuff, "Item,Temp,Humi,Light\r\n");
             f_write(&fs_handle.SDFile,SensorBuff,strlen(SensorBuff),&byteswritten);

             sprintf(SensorBuff, "%d,",log_array[0]);
             f_write(&fs_handle.SDFile,SensorBuff,strlen(SensorBuff),&byteswritten);

             sprintf(SensorBuff, "%d,",log_array[1]);
             f_write(&fs_handle.SDFile,SensorBuff,strlen(SensorBuff),&byteswritten);

               sprintf(SensorBuff, "%d,",log_array[2]);
               f_write(&fs_handle.SDFile,SensorBuff,strlen(SensorBuff),&byteswritten);

                 sprintf(SensorBuff, "%d,",log_array[3]);
                 f_write(&fs_handle.SDFile,SensorBuff,strlen(SensorBuff),&byteswritten);
  }
確實是要存成char才能寫入
但是陣列有點大,
請問想把整個浮點數陣列存在char 陣列
?請問有簡化一點的語法嗎??感謝
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-7-14 08:24:13 | 显示全部楼层
iriss 发表于 2023-7-13 17:38
感謝回覆!!

我還想請問

使用结构体封装下,获取结构体变量地址和字节大小,整体写入即可。

类似此贴:

实战技能分享,各种数据类型的SPI, UART, I2C,FDCAN等方式的通信传输以及存储到EEPROM, Flash等设备的简易实现方法
https://www.armbbs.cn/forum.php? ... 9659&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2023-7-14 12:25:05 | 显示全部楼层
請問我看網路上有直接寫入整數陣列,也有人說需char才能寫入
我自己測試 寫入整數陣列
             uint8_t log_array[4];
             for(int i = 0; i < 4; i++){
                 log_array[i]=i*10;}
             f_write(&fs_handle.SDFile,log_array,4,&byteswritten);
測試完打開txt檔 卻是獲得\00\00\00\00
想請問它的限制??感謝
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 00:22 , Processed in 0.192306 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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