百姓大小事,一呼百应!

百姓网 | 百姓知道

电子产品

如何极大限度地扩展STM32的内存数量,可否使用DDR RAM?

大家好,我想设计一个按照乐谱播放采样的小玩意,希望能在最短的延迟(希望小于30ms)播放约4M/s的wav采样文件,使用的wav采样总计大小约400M,想全部预读入内存,可否做到?如果无法做到的话,有什么方法将播放延迟做到最小?最小延迟大概有多少?谢谢。

2 个回答

  • 万致远 | 2017-10-16 15:40:24

    换坑吧骚年 开源创客神器NanoPi NEO,全志H3开发板,运行UbuntuCore,秒树莓派

    本问答由万致远提供

  • 万致远 | 2017-10-16 14:56:14

    完全没可能给STM32的FSMC装载400M以上的内存。不过也完全没必要,SDIO接口达到10MB/s轻而易举,随机访问也只有1ms的latency,批量传输更无压力。

    4Mbps的WAV文件大概是96K/24bit/2的规格。STM32的内部总线是可以承受的。这样的东西用STM32做出来毫无难度。

    不过,STM32F1/2/3/4系列还没有DDR接口。使用标准DDR SDRAM,如果不由FPGA转接,断无可能。用SDRAM,密度太低。F7/H7系列价格昂贵,铺货未铺开,难以和Cortex-A系列抗衡,故不考虑。但是使用FPGA后,就完全不必用STM32了。倒是有少量公司生产QSPI接口/OSPI接口的DDR。只是也难于购买,PSRAM同理。

    看题主的意思,似乎更想实现完整的MIDI音源。如果要实现完整的MIDI音源,必然涉及到对采样的处理,如改变音高/速度/滤波/拉伸以及复音/效果系统。以STM32的性能,简易的GM较难完成,并且需要FSMC外挂SRAM。XG规格的音源完全无可能。

    且此种应用存在大量随机读取的情况。需要较大的缓冲区抵消外存的访问延迟。

    最好使用Cortex-A系列处理器的系统搭建这类设备。如全志A64等SoC。当然,也可以考虑用FPGA。这是目前我选用的器件,毕竟性价比为王。

    当然,最简便的方式就是用一台小电脑上跑宿主,或者去淘宝上收SoundBlaster MIDI子卡用单片机控制,或者Hack YMF744。这样就不需要主体了解数字信号处理和音频处理/效果的理解。开发成本最低。

    虽然系统原理不难,但是不少堆人力的活儿和堆性能的活儿无法避免。如果题主有兴趣,可以私信我。

    本问答由万致远提供

* 本站部分内容来源自网络,仅作分享之用,侵删。