找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4886|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

想問下STM32控制sd卡,將數(shù)據(jù)實時保存在sd卡中,sd卡以一天為時間進(jìn)行循環(huán)存儲

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:481966 發(fā)表于 2021-8-23 22:54 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
50黑幣
現(xiàn)在已經(jīng)移植好了文件系統(tǒng),不知道怎么實現(xiàn)實時存儲和循環(huán)覆蓋存儲,有大佬做過相關(guān)項目嗎,有代碼可以參考下或者方案說下,感謝

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

15#
ID:514901 發(fā)表于 2021-9-6 16:42 | 只看該作者
FATFS的的fopen函數(shù)有個參數(shù)FA_CREATE_ALWAYS,如果創(chuàng)建了一個同名文件,則覆蓋原先的文件。這樣你每天fopen一次就可以了
回復(fù)

使用道具 舉報

14#
ID:207030 發(fā)表于 2021-9-6 14:35 | 只看該作者
文件名 就1.txt  2.txt  這樣 一天以后重頭來就好了   需要什么時間戳   24小時自己定時存  定時刪就行了。找找增刪改查的函數(shù),調(diào)用一下就好了
回復(fù)

使用道具 舉報

13#
ID:283954 發(fā)表于 2021-9-3 23:55 | 只看該作者
lkc8210 發(fā)表于 2021-9-3 21:31
請問當(dāng)電腦想讀取數(shù)據(jù)時要如何操作?

忘了說,把每個區(qū)的前兩個字節(jié)讀一下,如果是標(biāo)記符號,比如55H, 0AAH,那前一區(qū)就是最后的更新資料了。
回復(fù)

使用道具 舉報

12#
ID:161164 發(fā)表于 2021-9-3 21:31 來自手機(jī) | 只看該作者
dalaoshi 發(fā)表于 2021-9-1 23:01
用SD卡儲存資料非必要就不要用什么文件系統(tǒng)了,可采用緩存區(qū)的概念來執(zhí)行:
1.初始化:把全部SD寫成FFH, ...

請問當(dāng)電腦想讀取數(shù)據(jù)時要如何操作?
回復(fù)

使用道具 舉報

11#
ID:481966 發(fā)表于 2021-9-3 20:31 | 只看該作者
dalaoshi 發(fā)表于 2021-9-1 23:01
用SD卡儲存資料非必要就不要用什么文件系統(tǒng)了,可采用緩存區(qū)的概念來執(zhí)行:
1.初始化:把全部SD寫成FFH, ...

水平有限,感覺還是文件系統(tǒng)簡單些
回復(fù)

使用道具 舉報

10#
ID:283954 發(fā)表于 2021-9-1 23:01 | 只看該作者
用SD卡儲存資料非必要就不要用什么文件系統(tǒng)了,可采用緩存區(qū)的概念來執(zhí)行:
1.初始化:把全部SD寫成FFH,避免舊資料影響操作。
2.根據(jù)自己每一份資料需要用到的空間算出需要用到多少個扇區(qū)(SD卡每個扇區(qū)時512BYTES)
3.算出整張SD開能存多少份資料,也就是有多少個分區(qū)。
4.從第一區(qū)開始儲存,儲存后將接下來的區(qū)的第1,2個BYTE寫個標(biāo)記,比如55H, 0AAH。
5.每次儲存前先找到那個被標(biāo)記的區(qū)才寫入資料,并在接下來的區(qū)作標(biāo)記,如果已經(jīng)來到最后一區(qū)就回到第一區(qū)。
6.這樣就能夠循環(huán)不斷使用SD卡的每個空間,也不必用RTC之類。
回復(fù)

使用道具 舉報

9#
ID:624769 發(fā)表于 2021-9-1 19:45 | 只看該作者
缺少必要條件(存和留是兩個概念,我假定你是要留1天的數(shù)據(jù)),我腦補(bǔ)一下嘗試性回答你的問題,給你參考。
每4.5分鐘保存一個文件,文件名一個字節(jié),從0x00開始累加,當(dāng)遞增到0xff之后,再遞增就回到0x00,就會自動覆蓋最初的文件,你剛好保留一天的數(shù)據(jù)。以此類推,你可以把4.5分鐘,再256等分,雙字節(jié)文件名,看你實際需要。
回復(fù)

使用道具 舉報

8#
ID:415064 發(fā)表于 2021-8-30 18:32 | 只看該作者
創(chuàng)建新的時候把最舊的那個刪除掉
回復(fù)

使用道具 舉報

7#
ID:57657 發(fā)表于 2021-8-25 05:16 | 只看該作者
lkc8210 發(fā)表于 2021-8-24 20:24
STM32沒玩過,但用過Arduino來做差不多的東西
有沒有RTC?
有就在零時零分用日期做檔名建檔,

文件系統(tǒng),至少還要有一顆DS1302或1307等RTC電路才可以進(jìn)行寫操作。
某錄音筆操作內(nèi)存卡錄音,連接電腦上查看文件(夾)日期都不對,原因沒有RTC電路。
回復(fù)

使用道具 舉報

6#
ID:481966 發(fā)表于 2021-8-24 23:37 | 只看該作者
npn 發(fā)表于 2021-8-24 20:23
先按時間排序獲取目錄(子目錄)樹下的所有文件,然后只刪除第一個文件即可。

沒懂,創(chuàng)建目錄時按時間順序創(chuàng)建目錄嗎
回復(fù)

使用道具 舉報

5#
ID:481966 發(fā)表于 2021-8-24 23:30 | 只看該作者
lkc8210 發(fā)表于 2021-8-24 20:24
STM32沒玩過,但用過Arduino來做差不多的東西
有沒有RTC?
有就在零時零分用日期做檔名建檔,

FAT32文件系統(tǒng)有時間戳,沒注意怎么用這個來定時,
回復(fù)

使用道具 舉報

地板
ID:161164 發(fā)表于 2021-8-24 20:24 | 只看該作者
本帖最后由 lkc8210 于 2021-8-24 21:34 編輯

STM32沒玩過,但用過Arduino來做差不多的東西
有沒有RTC?
有就在零時零分用日期做檔名建檔,
建完把前一天的刪掉

多大的記憶卡?
多久寫入一條數(shù)據(jù)?
每條數(shù)據(jù)多大?
其實可以在電腦用復(fù)制貼上方法制作一個Txt檔
預(yù)計一下多久才會存滿
回復(fù)

使用道具 舉報

板凳
ID:57657 發(fā)表于 2021-8-24 20:23 | 只看該作者
yqyq 發(fā)表于 2021-8-24 19:57
sd卡會存滿,存一天時間,后面將前面的覆蓋掉,不知道咋實現(xiàn)

先按時間排序獲取目錄(子目錄)樹下的所有文件,然后只刪除第一個文件即可。
回復(fù)

使用道具 舉報

沙發(fā)
ID:481966 發(fā)表于 2021-8-24 19:57 | 只看該作者
sgd985437 發(fā)表于 2021-8-24 08:05
一天創(chuàng)建一個txt文件  寫入存儲的數(shù)據(jù)不就好了

sd卡會存滿,存一天時間,后面將前面的覆蓋掉,不知道咋實現(xiàn)
回復(fù)

使用道具 舉報

樓主
ID:207030 發(fā)表于 2021-8-24 08:05 | 只看該作者
一天創(chuàng)建一個txt文件  寫入存儲的數(shù)據(jù)不就好了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表