金牌会员
- 积分
- 1011
- 金钱
- 1011
- 注册时间
- 2021-7-26
- 在线时间
- 184 小时
|
20金钱
STM32读取SD卡内TXT文件数据然后串口无线传输数据,速度不够快有没有可以优化的地方
想要把离线采集的数据从SD卡里读取出来放到一个数组里,然后把这个数组无线传输给电脑。
试过串口DMA虽然快但在无线传输中容易丢包误码,用寄存器操作比直接printf快一点点,但是从SD卡里去读数据也花时间
量化着看就是我要传16005个字节的数据,从SD卡内读出来放到数组里需要大约128ms,再串口传输到电脑需要200+ms,那就总共需要几乎330+ms这么长时间,大概数传速率不到50KB/s
目前想的优化解决方法有:
1.再用DMA看看试一下。但以不误码为主
2.把从SD卡读数据放到数组里和串口传输这两个功能中的一个放到定时器中断里,但是担心出bug并且FATFS用着还不太熟练不知道可行性高不高,目前的逻辑算是串行运行,相关代码如下
result=f_open(&fnew,"0:/ABCD.TXT", FA_READ);
for(i=0;i<4;i++)
{
if(i!=0)
f_lseek(&fnew,i*4005-i);
else
f_lseek(&fnew,i*4005);
f_gets(readbuf,4005,&fnew); //?5??????
for(j=0;j<4005;j++)
{
USART1->DR=readbuf[j];
while((USART1->SR&0X40)==0);
}
}
不知道大佬有没有其他的好的建议,或者对方法2有什么具体的想法做法方便实现
|
|