stm32通过网口向tf卡内写大数据探究
项目中需要将15M的大表格数据通过网口发到stm32,我用的还是407,ram能达到64KB,有经验的可能一看就知道怎么写,没经验的只能摸索。
硬件平台
Stm32f407
金士顿tf卡+znfat
网口:IP101 10M
Lwip 的 udp传输
一开始我使用网络调试助手,在没有上位机软件的情况下,使用udp传输一个达10M的数据,arm中我使用znfat循环写数据,明白人睁眼一看便知道此法愚蠢至极,实际上sd内数据也只能写进1.46M左右,网传的速度还是相当快的,10M的文件,也就12s左右传输完毕,但写tf的数据是十分慢的,所以丢包必须存在。
后来我又把文件大小改成12KB,用文件发送,arm里边不写数据,直接返回来,发现丢包现象还是存在。
源文件UART5.C 12.9KB
接收的文件 1.c 11.9KB
丢包是间隔的。
反复思索没有写数据也会丢包,后来请教前辈说,你可以将电脑的数据分包发送,可能还是arm处理不过来,比如将一个10KB的数据分10次发送,每次发送1KB,间隔10ms,10ms应该能写进去1KB数据,可以测试一下。
经过测试此种方法的确可行。
分包发送大数据。
根据这种方法,上传一个10M左右的文件需要10几分钟。