This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1310:CC1310上的 PDM 实现

Guru**** 645810 points
Other Parts Discussed in Thread: CC1310
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/922123/cc1310-pdm-implementation-on-cc1310

器件型号:CC1310

我们希望使用 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的两个实验结果相结合,我们认为有两个问题:

  1. cc1310的破解问题要求将 IIS 中的数据向右移动一位;
  2. cc1310 在16K 采样方面存在问题、无法提供足够的数据速率、8K 采样正常。根据 PDMCC26XX.h(C:\ti\simplelink_cc13x0_sdk_3_10_00_11\source\ti\drivers\PDM)中的注释、第二个问题可能是由于某些数据被丢弃。但是、在 Depmpderth 中修改变量描述不起作用。

正在等待您的帮助。

此致。