主题中讨论的其他器件:TLV320ADC3101、 SYSBIOS、 PCM1864
我们有一个将麦克风阵列连接到 C674x 的硬件设计、我们在保持麦克风数据的相位对齐方面存在间歇性问题。 麦克风以 TDM 的方式通过多个立体声 ADC (TLV320ADC3101)连接到 DSP、并且一个或多个 ADC 的音频间歇性延迟一个采样、而不是其他 ADC。
在我们的 DSP 启动过程中、McASP 和连接的硬件通过一个固定的启动序列进行配置、此启动序列源自 TI 参考-例如 pspdrivers 中的 McASP 启动示例和 SLAA508A 等应用手册中提供的指南。 重复启动测试后、可以评估相位对齐情况、并且特定的 DSP 编译/映像会落入三种情况之一- 1)它始终以正确的相位对齐启动、2)它永远不会以正确的相位对齐启动或3) 有时、它是相位对齐的、在某些重新启动后、它不是相位对齐的。 目前、每当我们有一个属于案例2或3的 DSP 构建时、我们都会调整 McASP 和 ADC 启动序列中的任务延迟值、以使相位对齐恢复到案例1、这是一个有点任意的过程、而不是一个非常有条理的过程。 那么、问题就是这样、我们如何在启动时有条不紊地配置 McASP 和 ADC 以确保麦克风数据的相位对齐?
此处列出了一些相关的注意事项和观察结果:
a)我们使用具有 DSP BIOS 5.41.10.36的 CCS4.2工具链。
b)所有 ADC 采样都由来自 McASP 的单帧脉冲(@16KHz 速率)控制、因此 ADC 中的瞬时采样数据应该是正确的。
c)我们调用 McASP 串行器、以将每个 TDM 帧的采样数据收集到2ms 缓冲区中、以进行 DSP 处理。
d)我们的 DSP 映像足够大、我们必须将大量代码放入外部 DDR 存储器中、包括一些 DSP BIOS 和 PSP/EDMA 驱动程序。
e)当代码更改与 McASP/ADC 启动过程无关时、仅对 DDR 存储器映射进行简单的重新排列后、我们就遇到了相位对齐中断的情况。 在这些情况下、假设 DDR 页边界或高速缓存行填充过程会影响 McASP 和 ADC 硬件启动序列中的时序、从而导致问题。
底线是在不对 DSP 子系统中的时序有任何此类敏感性的情况下启动 DSP、并确保麦克风/ ADC 数据的相位对齐。 也许我们不知道有刷新/重新同步序列、以确保正确对齐 McASP/串 行器?