stm32通过网口向tf卡内写大数据探究

项目中需要将15M的大表格数据通过网口发到stm32,我用的还是407ram能达到64KB,有经验的可能一看就知道怎么写,没经验的只能摸索。

硬件平台

Stm32f407

金士顿tf+znfat

网口:IP101  10M

Lwip   udp传输

一开始我使用网络调试助手,在没有上位机软件的情况下,使用udp传输一个达10M的数据,arm中我使用znfat循环写数据,明白人睁眼一看便知道此法愚蠢至极,实际上sd内数据也只能写进1.46M左右,网传的速度还是相当快的,10M的文件,也就12s左右传输完毕,但写tf的数据是十分慢的,所以丢包必须存在。

 

 

后来我又把文件大小改成12KB,用文件发送,arm里边不写数据,直接返回来,发现丢包现象还是存在。

1010_1.png

源文件UART5.C    12.9KB

 

 1010_2.png


接收的文件 1.c   11.9KB

 1010_3.png


丢包是间隔的。

 

反复思索没有写数据也会丢包,后来请教前辈说,你可以将电脑的数据分包发送,可能还是arm处理不过来,比如将一个10KB的数据分10次发送,每次发送1KB,间隔10ms10ms应该能写进去1KB数据,可以测试一下。

 

 

经过测试此种方法的确可行。

分包发送大数据。

根据这种方法,上传一个10M左右的文件需要10几分钟。

sitemap