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.

[参考译文] RTOS/CC1352R:TI 是否在 CC13x2 SDK 中使用 PDM 驱动程序开发项目?

Guru**** 2538930 points
Other Parts Discussed in Thread: CC1350, CC1352R, CC1350STK

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/714945/rtos-cc1352r-does-ti-have-project-using-pdm-drivers-in-cc13x2-sdk

器件型号:CC1352R
主题中讨论的其他部件:CC1350CC1350STK

工具/软件:TI-RTOS

您好!

我还是从 pdmstreamCC1350 STK 示例项目移植了应用层、并在 CC13x2 SDK 中使用了 PDM 驱动程序文件、但它最终无法正常工作。

我注意到、在比较 CC1350和 CC1352的 PDM 驱动程序时、存在一些差异。 我想 TI 正在测试 CC13x2 PDM 驱动程序文件并进行更新、请问您是否在 CC13x2 SDK 中提供使用 PDM 驱动程序文件的示例项目? 如何测试新的驱动程序文件? 我真的不知道驱动程序中的哪个部分出错了。

非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    开始流式传输后、Queue 元素仍然为空、我认为这会导致对 PDM 数据进行采样失败。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jason、

    CC13x0和 CC13x2 PDM 之间应该没有区别、因为我知道它完全是同一个驱动程序。
    正如您看到的一些差异一样、我希望这是因为没有对 CC1350使用与对 CC1352相同的 SDK 版本、这是正确的吗?

    有一些内部回归会运行以测试每个驱动程序、遗憾的是、从2.10 SDK 开始、目前没有任何适用于 PDM 的示例。

    如果您想尝试将 pdmstream 示例移植到较新的 SDK、我建议您也导入旧的 PDM 驱动程序文件作为开始、以查看在使用较旧的驱动程序版本时是否可以使其正常运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我比较了 TI RTOS 2.21.00.06中的 PDM 驱动程序文件和 Simplelink SDK 中用于 CC13x2的另一个文件、存在一些差异、例如信标与 SemaphoreP、Hwi 与 Hwip 以及结构元素、 因此、我认为 TI 正在更新 CC1352的驱动程序文件、我应该使用新版本的驱动程序文件。

    但是、正如您所说的、旧版本和新版本都应该工作、因为同一个硬件模块。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我希望这两个版本之间有相当大的差异、主要是在"信标"等被替换的调用中。 实际上、"Semaphore 和 SemaphoreP"之间没有区别、这是一种使驱动程序可移植的更改。

    您是否已经使用旧版驱动程序尝试过移植示例? 我建议您先替换 PDM 驱动程序的链接库文件、进行交换。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    首先、我在  CC1352R 上的 TI-RTOS CC13xx/26xx 中使用 PDM 驱动程序尝试了 PDMstream 示例项目、launchpad 可以对 PDM 数据进行采样、但随后失败、我注意到该驱动程序中的硬件中断功能用于 ARM M3。 我不知道、但这可能是导致故障的原因、因此在本例中、Hwip 和其他一些具有移植接口的驱动程序可能是必要的。

    然后、与  TI-RTOS 中的 PDM 驱动程序相比、我在 Simple link SDK CC13X2中替换了 PDM 驱动程序文件。据我所知、 在队列方面存在一些差异、  TI-RTOS 中的 PDM 驱动程序相比、Simple link SDK 中缺少以下代码

    对于(i = 0;i < ui32NumberOfBlocks;i++){
    queueNodeI2S_t * tmpNode =(queueNodeI2S_t *)&((uint8_t *) object->pvContMgtBuffer)[i * sizeof (queueNodeI2S_t)];
    /*分离连续缓冲器*/
    tmpNode->buf =&((uint8_t *) object->pvContBuffer)[i * ui32BlockSizeInBytesIn];
    Queue_enqueue (i2sBlockAvailInQueue、_tmpNode->_elem);
    } 

    我在  TI-RTOS CC13xx/26xx 中删除了 PDM 驱动程序中的此部分、 在 CC1350STK 上尝试使用 PDMstream 示例项目、然后该项目不起作用、显示了与我 在上一帖子中所说的相同的现象(PDM 驱动程序打开并成功开始流式传输、但从未转到 DMA ISR)

    我对这个队列器件的机制不是很了解、因为 TI 没有很多文档、但是我认为我可以在 TI-RTOS 的驱动程序中将 Hwi 修改为 Hwip、或者在 Simple Link SDK 的驱动程序中修改队列器件。  

    非常感谢您为患者提供的帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更新:我拖动了 TI-RTOS CC13xx/26xx 中的 PDM 驱动程序文件、对 ARM 3使用了 Hwip 而不是 Hwi、使用 PDMStream 示例项目进行了尝试、CC1352R LP 似乎可以成功地对音频数据进行采样。 下面是 Matlab 图中的采样音频数据。

    根据我的实验和观察结果、我认为 Simplelink SDK CC1352的 PDM 驱动程序文件中存在错误、但我没有检查 Simplelink SDK 的 PDM 驱动程序文件中的许多详细信息、我对该驱动程序文件中的机制不了解太多。

    还有一点、您认为还需要在 TI-RTOS 的移植 PDM 驱动程序文件中使用 SemaphoreP 而不是信标、ClockP 而不是时钟吗?

    再次感谢您为患者提供的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jason、

    很高兴看到你让它运行了!

    关于 SemaphoreP 和 ClockP、您可以根据需要进行这些更改。 正如我在端口友好实现之前所说的那样、"P"版本基本上覆盖了本例中的正常函数。 您可以通过检查" /kernel/tirtos/packages/ti/dpl)"。