我们希望使用 CC1310实现 PDM 集合。 我们使用 CC1350STK 的"pdmstream"示例。使用的 SDK 为"simplelink_cc13x0_ SDK_ 3_10_ 00_ 11"。
项目计划使用两 个 cc1310板、板 A 作为发送板。 主要工作包括收集 PDM 数据并将其转换为 PCM、通过 IIC 与触摸芯片通信以及控制触摸按钮、控制电源管理芯片、通过 RF 将音频数据发送到另一个电路板 B; 另一个板 B 作为接收板、其主要工作是接收板 A 的射频数据、并通过 IIS 将接收到的数据发送到 wm8978;
目前,我们面临以下两个问题,实验如下:
问题1:
1) 1).PDM 的数据由 cc1310的8K 采样记录收集、数据转换为 PCM 格式数据。 STM32或 PC 可以正常播放 PCM 数据、这表明 8K 采集和转换的 cc1310代码正常;
2) 2) STM32中的相同数据播放正常、但 cc1310上通过 IIS 播放的声音 会破解语音。 已找到破解语音的原因。 原因是 来自 cc1310的 IIS 的数据 是右对齐或左对齐的、而来自 STM32 IIS 的数据是标准的一位延迟、即、将会有一个位右移位;
问题2:
1) 1)当我们将 cc1310的参数更改为 16K 采样时、通过 RF 传输的声音将具有微弱的嘶声(实时)。
2) 2)在 STM32上、16K 采样获得的数据如图 CC1310 的值如图1所示。 从图中可以看出、STM32收集的16K 数据非常规律、 而 cc1310的数据 找不到规则(此处的规则是奇数列数据都是大小类似的数字、变化很小)。
3) 3) STM32上以16K 采样记录的语音将保存到 cc1310的存储器中。 如果 使用 cc1310进行播放、则不会发出嘶嘶声、并且安装和回放速度正常(非实时)。 如果 通过 计算机播放 cc1310记录的16K 语音数据,则安装和回放速度将会变得更快和更高(非实时); 如果数据保存到 cc1310的内存 并通过 IIS 播放,速度和安装速度也将变得更快和更高(非实时)。
4)实验现象分析和推测结论如下: cc1310的回放速率 与数据采集速率不匹配、回放速率高于采集速率。 从而导致:
1) 1)在实时射频回放期间、发送板无法向接收板提供足够的数据、从而导致"丢包"。 此处的数据包丢失不是指射频数据包丢失、而是指类似的数据包丢失现象。
2) 2)在非实时回放期间、由于数据太少、回放音和回放速度变得越来越快。
将问题1和问题2的两个实验结果相结合,我们认为有两个问题:
- cc1310的破解问题要求将 IIS 中的数据向右移动一位;
- cc1310 在16K 采样方面存在问题、无法提供足够的数据速率、8K 采样正常。根据 PDMCC26XX.h(C:\ti\simplelink_cc13x0_sdk_3_10_00_11\source\ti\drivers\PDM)中的注释、第二个问题可能是由于某些数据被丢弃。但是、在 Depmpderth 中修改变量描述不起作用。
正在等待您的帮助。
此致。