OpenEdv-开源电子网

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

新手求助!关于WAV录音实验采用DMA缓冲区合适大小的计算原理!以及读取SD卡音频文件导致文件损坏问题!求大佬指导!

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2024-4-8
在线时间
2 小时
发表于 2024-4-19 16:36:11 | 显示全部楼层 |阅读模式
2金钱
在STM32F407战舰V3开发板中的WAV录音与播放器实验中,通过在B站视频以及代码的学习中,想求助各位佬为什么当WM8978音频解编码芯片设置为192KHz@24bit时,需要将缓冲区的大小设置为8192?本人新手,只是知道由于采集的音频质量非常高,采集并进行A/D转换出来的音频数据量会非常大,DMA需要及时将音频数据搬运到SD卡中这一个基本概念,但是对于该如何计算出这个"8192"是完全不清楚的。
望大佬讲解!!


另外一个问题就是想通过串口通信与FATFS文件系统   将SD卡中的音频数据读取出来,并仿照了ymodem协议写了一个自定义发送协议
发送给QT上位机接收(QSerialPort配置波特率为115200,连接信号与槽来写入PC端文件,实现将音频文件上传至上位机)
现在的问题就是OLED屏过了一会显示上传成功,应该是我QT端的逻辑不对,只能接收到第一个SOH,后面的接收不到并且QT程序直接卡死了……
最后想回放录音文件,发现SD卡中的录音文件已经损坏了……问题是就算是QT端接收失败,我这边的延时函数结束返回导致错误显示发送成功,但是为什么最后导致了SD卡中的录音文件损坏了呢?



最后附上QT的代码,C++太烂了,大佬清喷……
把写入代码注释了只打印数据,但是只是打印了两次"?"就又卡死了……QT也是初学者
之前查CSDN说是linux C中的文件系统会阻塞主线程需要用到QFile或者重写一个QThread
求大佬指导一下思路……万分感谢



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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 15:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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