您将如何播放来自微控制器(STM32 等)的声音?

How would you play sounds from a microcontroller (STM32 etc.)?

例如,洗衣机在完成后如何播放特定的声音(mp3 或 wav 或其他)?需要哪些外部组件?

我知道这是一个非常模糊的问题,但我找不到任何真正的解决方案,除了某种 mp3 播放器模块,它似乎更“最终用户友好”,而不是以编程方式使用(跳过和暂停按钮) .

只需拨动一个别针即可发出各种蜂鸣声,但我假设您正在寻找更悦耳的声音,并且不使用声音合成器。

对于简短的声音片段:您可以将它们存储在(外部)存储器中并通过 DAC 播放它们,如果您的 MCU 有的话。我为基于 SAMD21G 的 Arduinos here 做了一个基本实现;所有具有 DAC 的 MCU 的想法都是一样的。如果你的 MCU 没有 DAC,你可以使用外部 DAC,或者通过使用 PWM 和低通滤波输出来制作一个“穷人的 DAC”。

另一种选择是从存储的样本创建一个 I2S 流并将它们发送到接受 I2[=24= 的外部放大器(模块) ]S。当您的 MCU 具有 I2S 外围设备时,它会有所帮助。

对于较长的声音,您最好的选择可能是从 MCU 控制的 MP3 播放器播放它们,因为对于大型声音文件,您需要 SD 卡存储或类似的大存储空间。

在所有情况下,您都需要外部放大器和扬声器。