Robofun 機器人論壇
標題:
UNO SD卡模組 速度+存檔問題
[打印本頁]
作者:
bnm890bnm
時間:
2016-9-28 21:42
標題:
UNO SD卡模組 速度+存檔問題
使用UNO+SD模組 寫程式碼讀取SD卡容量
每次讀取都會花上數秒才會讀完
想要能快速讀完SD卡容量的話,請問這無解還是有解?
另外請問如果我今天SD存TXT檔的檔名我用 月/日/時 共8碼當檔名
如果要存了1萬筆數據之後去將第一個刪除創新的檔名這有辦法嗎?
ex
092821
092822
092912
..........
1萬筆
後將
092821刪除
創
101007存資料
下一筆
092822刪除
創
101012存資料
作者:
超新手
時間:
2016-9-29 11:13
>>想要能快速讀完SD卡容量的話,請問這無解還是有解?
SD 卡有一些基本的原則
例如以SECTOR為單位(如512BYTES)去讀寫, 會比一個BYTE一個 BYTE讀寫還快
所以你可以先把資料放到 buffer中, 再統一寫,
或是讀一大筆資料到buffer出來, 再分別讀
速度應該會快一點
換快一點的 sd, 然後改 spi 的速度也是可以嘗試的方法
>>如果要存了1萬筆數據之後去將第一個刪除創新的檔名這有辦法嗎?
雖然Arduino 上的SD功能比較陽春
但基本上...PC上可以做到的
Arduino 上八成也沒問題
作者:
bnm890bnm
時間:
2016-9-29 17:35
本帖最後由 bnm890bnm 於 2016-9-29 17:38 編輯
回復
2#
超新手
[size=13.2295px]#include <SdFat.h>
[size=13.2295px]SdFat sd;
[size=13.2295px]const uint8_t csPin = 4;
[size=13.2295px]void setup() {
[size=13.2295px] Serial.begin(9600);
[size=13.2295px] if (!sd.begin(csPin)) sd.initErrorHalt();
[size=13.2295px] uint32_t freeKB = sd.vol()->freeClusterCount();
[size=13.2295px] freeKB *= sd.vol()->blocksPerCluster()/2;
[size=13.2295px] Serial.print("Free space KB: ");
[size=13.2295px] Serial.println(freeKB);
[size=13.2295px]}
[size=13.2295px]void loop() {}
[size=13.2295px]請問我是使用上面這個網路的開源碼來讀取剩餘容量
[size=13.2295px]可否請教如何修改以提升它計算速度呢?
作者:
超新手
時間:
2016-9-29 18:38
為什麼你的問題變成"提升它計算速度"?
這應該沒什麼好改
改了速度也頂多增加幾個 ms 不到
作者:
bnm890bnm
時間:
2016-9-30 08:58
回復
4#
超新手
感謝~原本就是要問這個速度問題!!
可能表達錯誤,抱歉
作者:
超新手
時間:
2016-9-30 15:15
找到你的 Arduino\libraries 中的 sdfat 目錄下(名稱不見得相同)
找到 SdFatConfig.H,
把其中一行
#define MAINTAIN_FREE_CLUSTER_COUNT 0
改成
#define MAINTAIN_FREE_CLUSTER_COUNT 1
重新執行你的程式
試試看吧! 不確定可不可以...
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2