找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4715|回復: 1
收起左側

stm32通過網(wǎng)口向tf卡內寫大數(shù)據(jù)探究

[復制鏈接]
ID:91350 發(fā)表于 2015-10-29 22:53 | 顯示全部樓層 |閱讀模式
項目中需要將15M的大表格數(shù)據(jù)通過網(wǎng)口發(fā)到stm32,我用的還是407,ram能達到64KB,有經(jīng)驗的可能一看就知道怎么寫,沒經(jīng)驗的只能摸索。
        硬件平臺
        Stm32f407
        金士頓tf卡+znfat
        網(wǎng)口:IP101  10M
        Lwip  的 udp傳輸
        一開始我使用網(wǎng)絡調試助手,在沒有上位機軟件的情況下,使用udp傳輸一個達10M的數(shù)據(jù),arm中我使用znfat循環(huán)寫數(shù)據(jù),明白人睜眼一看便知道此法愚蠢至極,實際上sd內數(shù)據(jù)也只能寫進1.46M左右,網(wǎng)傳的速度還是相當快的,10M的文件,也就12s左右傳輸完畢,但寫tf的數(shù)據(jù)是十分慢的,所以丟包必須存在。


        后來我又把文件大小改成12KB,用文件發(fā)送,arm里邊不寫數(shù)據(jù),直接返回來,發(fā)現(xiàn)丟包現(xiàn)象還是存在。
       
        源文件UART5.C    12.9KB

         

        接收的文件 1.c   11.9KB
         

        丟包是間隔的。

        反復思索沒有寫數(shù)據(jù)也會丟包,后來請教前輩說,你可以將電腦的數(shù)據(jù)分包發(fā)送,可能還是arm處理不過來,比如將一個10KB的數(shù)據(jù)分10次發(fā)送,每次發(fā)送1KB,間隔10ms,10ms應該能寫進去1KB數(shù)據(jù),可以測試一下。


        經(jīng)過測試此種方法的確可行。
        分包發(fā)送大數(shù)據(jù)。
        根據(jù)這種方法,上傳一個10M左右的文件需要10幾分鐘。

回復

使用道具 舉報

ID:214006 發(fā)表于 2017-6-30 16:04 | 顯示全部樓層
很精神的一種解決思路 學習了
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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