我正在调用 PCM 固件模块来合成音频并驱动扬声器。它工作得很好,但 PCM 以 4MHz 运行,这对于我的特定输出驱动器(H 桥驱动器)来说有点太快了。另一方面,Sigma Delta 固件模块以固定的 312 kHz 频率生成 PWM,这将是理想的,但不可能以来自 Lua 的音频频率“馈送”它。
我一直盯着 C 源代码,试图弄清楚 PCM 固件模块如何设置 Sigma Delta 硬件,但就是看不到它。如果使用 pcm.SD 参数创建新的 PCM 对象,它似乎会检查 sigma_delta 模块:
代码:
全选if (driver == PCM_DRIVER_SD) {
cfg->pin = luaL_checkinteger( L, 2 );
MOD_CHECK_ID(sigma_delta, cfg->pin);
但我留下了很多问题——一些简单的问题,比如使用这两个固件模块时有什么依赖关系。我可以在没有 Sigma Delta 模块的情况下构建固件,但 PCM 模块工作正常。我希望有人能够澄清并可能提供一些有关如何更改 PCM 基频的提示