sd card的写入速度

beyound
Posts: 20
Joined: Sat Jan 01, 2022 9:55 am

sd card的写入速度

Postby beyound » Thu Feb 24, 2022 2:13 pm

我在做的DSP产品,采样率是44100,16BIT,通过i2s采样音频,再输出到i2s。中间进行DSP。为了降低音频延迟,我是128个sample读写一次i2s.

在将音频样本保存的sd card上(WAV格式),遇到写入速度不够的问题。(sd卡用的mmc,40mhz的速度)

如果直接在i2s_read和i2s_write之间调用fwrite, 就会非常卡, 声音也是卡顿的。

没办法,我就开了两个线程, 在i2s 读写之外,另一个线程用xRingbufferReceive去读取i2s线程写入的ringbuffer,然后,等到8192个字节以后,再一次性调用 fwrite ,可是每个几秒,sd卡还是会卡一下,这一次的fwrite延迟高达170多毫秒,我换了很多张sd卡都有类似现象。

请问这个该如何解决?

ESP_Yake
Posts: 109
Joined: Mon Mar 06, 2017 12:23 pm

Re: sd card的写入速度

Postby ESP_Yake » Mon Feb 28, 2022 2:23 am

请问使用的是 ESP32 么?尝试优化以下选项:
1. 保证 CPU 已经处于 240M,
2. SPI flash 使用 QIO 80M,如果使用了 wrover 模组,请确保 psram 也配置成了 80M
3. 跟 SD 卡通信使用 4 线高速模式
4. 尝试将 I2S 和 SD 写卡操作的 TASK 放置在两个不同的 core 上面

beyound
Posts: 20
Joined: Sat Jan 01, 2022 9:55 am

Re: sd card的写入速度

Postby beyound » Thu Mar 03, 2022 5:34 pm

谢谢,我已经自己解决了。

还有一点, 1,就是SD卡在格式化的时候,数据分块大小也最好和写入buff一样大。

另外,2,44100采样率,还需要v2等级以上的sd卡(标称的写入速度最少要60mb/s),否则还是很低概率出现卡顿。

目前测试下来,读写速度都满足产品需求。

beyound
Posts: 20
Joined: Sat Jan 01, 2022 9:55 am

Re: sd card的写入速度

Postby beyound » Thu Mar 03, 2022 5:34 pm

beyound wrote:
Thu Mar 03, 2022 5:34 pm
谢谢,我已经自己解决了。

还有一点, 1,就是SD卡在格式化的时候,数据分块大小也最好和写入buff一样大。

另外,2,44100采样率,还需要v2等级以上的sd卡(标称的写入速度最少要60mb/s),否则还是很低概率出现卡顿。

目前测试下来,读写速度都满足产品需求。
另外,1 line 和4 line的差异很小,我最终还是选择了1 line,这样节约出来的GPIO可以做一些别的功能。

Who is online

Users browsing this forum: No registered users and 116 guests