OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9499|回复: 9

STM32读取SD卡内TXT文件数据然后串口无线传输数据,速度不够快有没有可以优化的地方

[复制链接]

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
发表于 2022-12-31 16:39:59 | 显示全部楼层 |阅读模式
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有什么具体的想法做法方便实现

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2676
金钱
2676
注册时间
2018-11-8
在线时间
431 小时
发表于 2022-12-31 18:11:43 | 显示全部楼层
肯定是DMA快啊 printf最慢了
SD卡读取和串口发送可以开DMA同时传输吧 感觉这里不用分先后
一般无线模块传的都挺慢的
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2022-12-31 19:01:36 | 显示全部楼层
本帖最后由 精英板 于 2022-12-31 19:09 编辑
babyrabbit 发表于 2022-12-31 18:11
肯定是DMA快啊 printf最慢了
SD卡读取和串口发送可以开DMA同时传输吧 感觉这里不用分先后
一般无线模块 ...

无线传输数据用DMA高速传输挺容易误码,SD卡开DMA读数据?没试过不过感觉应该没问题,但是FATFS咋开DMA啊,文件系统这个没怎么深学,是不是我开个SPI的DMA就行了,f_read就通过SPI通道能DMA传输了
回复

使用道具 举报

2

主题

446

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4133
金钱
4133
注册时间
2018-5-14
在线时间
902 小时
发表于 2023-1-3 08:53:35 | 显示全部楼层
用串口的无线模块本身就是错误,你波特率上到115200也才10kb/s,哪怕再快5倍上到60W波特率也就50kb/s。所以把串口的wifi模块改成SPI接口的就可以上到2M/s了。接下来就是想办法提升文件系统的读取速度了。
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2023-1-3 15:46:08 | 显示全部楼层
姚先起 发表于 2023-1-3 08:53
用串口的无线模块本身就是错误,你波特率上到115200也才10kb/s,哪怕再快5倍上到60W波特率也就50kb/s。所以 ...

目前用汇承的hc04的SPP模式波特率921600能最快70KB/s无误码,但是确实有点想转换一下数传的接口,但是目前没有好的想法,哥你说的SPI接口这个有什么产品的链接或例程吗
回复

使用道具 举报

2

主题

446

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4133
金钱
4133
注册时间
2018-5-14
在线时间
902 小时
发表于 2023-1-3 15:56:03 | 显示全部楼层
本帖最后由 姚先起 于 2023-1-3 15:58 编辑
精英板 发表于 2023-1-3 15:46
目前用汇承的hc04的SPP模式波特率921600能最快70KB/s无误码,但是确实有点想转换一下数传的接口,但是目 ...

淘宝有卖一个SPI接口的ESP8266模块,之前店家也在论坛里打了几个月的广告。我入手了一个测试 过,2M/s的传输不成问题。@anylinkin,看看他的帖子吧
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2023-1-3 16:07:55 | 显示全部楼层
姚先起 发表于 2023-1-3 15:56
淘宝有卖一个SPI接口的ESP8266模块,之前店家也在论坛里打了几个月的广告。我入手了一个测试 过,2M/s的 ...

多谢多谢我看看,另外我那个读文件操作速度换下SPI用了SDIO也才160KB/s也不快,这个有什么办法吗,能开DMA吗,我就在uart和spi上开过DMA,感觉要是用f_lseek和f_gets这种已有写好的函数不会改呀
回复

使用道具 举报

2

主题

446

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4133
金钱
4133
注册时间
2018-5-14
在线时间
902 小时
发表于 2023-1-3 16:30:29 | 显示全部楼层
精英板 发表于 2023-1-3 16:07
多谢多谢我看看,另外我那个读文件操作速度换下SPI用了SDIO也才160KB/s也不快,这个有什么办法吗,能开DM ...

SDIO速度也可以到2M/s的,但是我没用ST的测试过,NXP的官方库轻轻松松。所以理论上ST可以达到,就是软件优化了。不推荐把SD卡设置成SPI模式,直接上SDIO模式。
回复

使用道具 举报

34

主题

94

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2022-4-8
在线时间
81 小时
发表于 2023-1-16 21:55:29 | 显示全部楼层
为什么我的只能读扇区,你的就能根据路径读?你是从哪里下载的例程?能发我一份吗?
回复

使用道具 举报

15

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2016-9-7
在线时间
103 小时
发表于 2023-2-7 16:18:20 | 显示全部楼层
1684908828 发表于 2023-1-16 21:55
为什么我的只能读扇区,你的就能根据路径读?你是从哪里下载的例程?能发我一份吗?

他有文件系统,你直接操作的SD卡呗,原子例程FATFS
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 18:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表