STM32的DAC输出波形等比缩放怎么实现?

最近在做一个通过DAC输出音频的项目,已经实现播放音频功能;

** 问题 : 现在想加一个通过软件实现音量控制功能**。?

我的想法是通过DAC等比例缩放达到音量的控制。如果用单片机一个一个算的话时间来不及,因为单片机还有其他的任务要完成。有没有什么高效率的方案可以实现DAC波形等比例缩放?

从源端缩放不是一个好主意,这会影响输出信号的质量,建议在输出运放上加个数字电位器,调节放大倍数

如果用一个变量去与音频数据计算(一般是乘法),CPU的负担会比较大。
可以用一个常数去与音频去计算(一般是乘法),常数的计算可以被编译器优化(一般会优化成左右移和加法),会大量减少CPU的开销。
可以用将音量的放大限制在一定的范围,比如 0-15,选出合适的 16 个常数(比如用 case),用常数去运算。