大家好、我 最近使用了 MAX541音频 DAC 芯片(此处提供数据表)和 TM4C123G LaunchPad。 我的音频输出工作正常、但现在我正在尝试让它播放不同的正弦波音调、这些正弦波音调是根据用户想要听到的音调"动态"计算的。
我的设计方法是设置 一 个"多次触发" SysTick 中断、每~1500个周期调用一次 ISR。 ISR 计算当前的采样值、并使用 SSI 将其发送到 MAX541 DAC 芯片。
我遇到的问题是、我听到的音调不是恒定的。 它的间距会缓慢下降。 我非常确信、我的"动态"采样计算花费的时间太长、从而导致在将采样值获取到 DAC 以供输出时出现延迟。
我非常确定这一点、因为我可以在开始音频回放之前、先将单个正弦波样本预先计算到数组中、然后在开始音频回放之后 、只需循环这些样本、 在这种情况下、将当前索引上的采样值发送到 DAC、并且间距保持恒定。
使用“动态”方法时,我认为延迟可能是由 math.h 中的 sin ()调用引起的,我在计算当前样本值时需要执行该调用。 我已经单步执行了这个函数的代码、它运行了很多指令。
我想知道、是否有人有任何想法或建议可以让它在没有延迟问题的情况下工作?