使用STM32儲存採集的資料,應該儲存在片內flash還是SRAM呢?

時間 2021-06-04 03:02:45

1樓:TopSemic

既然資源足夠多,建議在SRAM開兩個陣列,Buffer1[1024], Buffer2[1024], 這樣在ADC往其中乙個Buffer存數的時候,可以同時把另乙個Buffer中的資料上傳PC。這樣處理起來簡單一些。Flash的讀寫速度比SRAM慢很多,而且Flash的擦寫次數都是有限制的,往Flash中寫入資料時一般還會導致程式的暫停。

2樓:chenpeng

移植一下freemodbus協議,或者現在mqtt+雲的應用也非常的多,我覺得都行啊。用不用在本地備份儲存,看你需求吧,如果需要,就在flash也存乙份,不需要的話,就不用存在flash了。用flash建議掛乙個U盤或者ST卡,這個移植工作會稍微難一點。

3樓:熊貓刷牙

當然是 SRAM。用它的FLASH要經常擦除的, 壽命是有限制的。你打算它工作一段時間就掛了嗎?

SRAM分配兩塊記憶體(實際上是一塊), 採集滿一塊,傳送【通訊如果是用UART的話, 直接用DMA, 不影響其他的採集流程。】, 然後採集放到另一部分。 這樣互不影響。

保證通訊時間 < 採集的時間。

我有個跟你這個相似

static int32_t adval[MAX_INDEX];

void calcval( uint32_t adc_val )

4樓:春和景明

資料存flash裡,掉電後不丟失。開個陣列,存sram的話掉電就丟了。

看你的要求,採集1k後直接上傳,然後再採集。所以不需要掉電儲存。開個陣列,存sram,陣列滿後,直接上傳。

另外,不知道你跟pc怎麼通訊,你算過1k,傳到pc時間是多少嗎。採集40次的時間有是多少?

我覺得應該是上傳pc完成後,再開始採集,採集完,在上傳,在採集,在上傳。。。。

5樓:鐘昊

實時資料還放flash,你是嫌採集速度太快嗎,這類資料傳完就丟的東西,放最快的地方才能提高效率,48k內存放1k的資料開個佇列加幾個dma傳傳資料完全沒問題。

6樓:兔子MCU

這明顯是上傳後就丟的資料。

存片內flash,也是先存到sram中,後再寫入flash。

直接開個陣列,存sram裡就行。

前提是你MCU速度跟的上,得一次採集存sram,再到上傳上位機的時間。乙個動作做完了有充足裕量等待下一次的資料採集。

STM32如何實現不同埠下引腳的資料輸入輸出?

這樣的硬體設計是不合理的,但這不意味著LCD沒法使用,如果LCD介面分散在PORTD和E,那你在輸出資料的時候要特別小心。譬如使用了PORTD的高八位和PORTE的低八位,然後你要輸出16位資料 譬如0x4E96 那麼必須進行兩次操作。且必須注意不可改變PORTD的低8位和PORTE的高8位的管腳值...

為什麼 STM32 暫存器版本的學習資料如此少見,而實驗室的老師都要求學習暫存器版本的?

rundstedt 如果完全沒有操作過暫存器的底子的話,了解暫存器還是非常必要的,不然出了問題你都不知道怎麼去查。如果有用過51的經驗,操作過暫存器,那就完全沒必要搞什麼暫存器版本。 默丶distance 個人不是相關專業,但做微控制器相關競賽,也算稍微了解微控制器。以下我的觀點 什麼都不會就hal...

嵌入式linux和用stm32微控制器做應用比如電機控制 兩者是什麼區別 ?

raymond fisher 用linux就是你在用裝好系統的計算機。直接用stm32有點類似於沒作業系統,你自己用裸機,不要作業系統,直接程式設計實現功能。當然這只是打個比方。 已登出 最大的區別就是M系列和A系列,也就是實時性問題的差別,給你乙個建議,學完STM32就得開始學ARM9 linux...