iriss 发表于 2023-7-12 11:41:56

f_write 失敗

本帖最后由 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);
// }

iriss 发表于 2023-7-13 09:02:29

一開始測試是用128G, 剛剛發現改2G卡就可以寫入成功, 想說是跟128卡跟exfat有關嗎?

eric2013 发表于 2023-7-13 15:23:20

iriss 发表于 2023-7-13 09:02
一開始測試是用128G, 剛剛發現改2G卡就可以寫入成功, 想說是跟128卡跟exfat有關嗎?

128G卡要开exFAT

iriss 发表于 2023-7-13 17:38:54

感謝回覆!!

我還想請問
f_write 只能寫入char 型態
但我實驗的數據存在浮點數陣列
跟網路上操作
      char SensorBuff;
      uint8_t log_array={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);
             f_write(&fs_handle.SDFile,SensorBuff,strlen(SensorBuff),&byteswritten);

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

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

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

eric2013 发表于 2023-7-14 08:24:13

iriss 发表于 2023-7-13 17:38
感謝回覆!!

我還想請問


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

类似此贴:

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

iriss 发表于 2023-7-14 12:25:05

請問我看網路上有直接寫入整數陣列,也有人說需char才能寫入
我自己測試 寫入整數陣列
             uint8_t log_array;
             for(int i = 0; i < 4; i++){
               log_array=i*10;}
             f_write(&fs_handle.SDFile,log_array,4,&byteswritten);
測試完打開txt檔 卻是獲得\00\00\00\00
想請問它的限制??感謝
页: [1]
查看完整版本: f_write 失敗