Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2977|回復: 5
打印 上一主題 下一主題

UNO SD卡模組 速度+存檔問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2016-9-28 21:42:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用UNO+SD模組 寫程式碼讀取SD卡容量
每次讀取都會花上數秒才會讀完
想要能快速讀完SD卡容量的話,請問這無解還是有解?

另外請問如果我今天SD存TXT檔的檔名我用 月/日/時 共8碼當檔名
如果要存了1萬筆數據之後去將第一個刪除創新的檔名這有辦法嗎?
ex
092821
092822
092912
..........1萬筆
後將
092821刪除

101007存資料
下一筆
092822刪除

101012存資料
2#
發表於 2016-9-29 11:13:42 | 只看該作者
>>想要能快速讀完SD卡容量的話,請問這無解還是有解?
SD 卡有一些基本的原則
例如以SECTOR為單位(如512BYTES)去讀寫, 會比一個BYTE一個 BYTE讀寫還快
所以你可以先把資料放到 buffer中, 再統一寫,
或是讀一大筆資料到buffer出來, 再分別讀
速度應該會快一點
換快一點的 sd, 然後改 spi 的速度也是可以嘗試的方法

>>如果要存了1萬筆數據之後去將第一個刪除創新的檔名這有辦法嗎?
雖然Arduino 上的SD功能比較陽春
但基本上...PC上可以做到的
Arduino 上八成也沒問題
3#
 樓主| 發表於 2016-9-29 17:35:30 | 只看該作者
本帖最後由 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]可否請教如何修改以提升它計算速度呢?
4#
發表於 2016-9-29 18:38:48 | 只看該作者
為什麼你的問題變成"提升它計算速度"?
這應該沒什麼好改
改了速度也頂多增加幾個 ms 不到
5#
 樓主| 發表於 2016-9-30 08:58:14 | 只看該作者
回復 4# 超新手


感謝~原本就是要問這個速度問題!!
可能表達錯誤,抱歉
6#
發表於 2016-9-30 15:15:18 | 只看該作者
找到你的 Arduino\libraries 中的 sdfat 目錄下(名稱不見得相同)
找到 SdFatConfig.H,
把其中一行
#define MAINTAIN_FREE_CLUSTER_COUNT 0
改成
#define MAINTAIN_FREE_CLUSTER_COUNT 1
重新執行你的程式
試試看吧! 不確定可不可以...
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-30 14:23 , Processed in 0.214824 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表