大家好。
在我的 CC1312项目中,我需要将音频数据(短 jingle - CCA 3 s 持续时间)从外部 SPI 内存流式传输到外部 I2S DA 转换器,而不会中断。 我开始修改 i2secho 示例,但没有成功。 我不知道如何在队列中使用 SPI 并将其绑定到 I2S 队列。
请有人告诉我正确的方法吗?
非常感谢
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.
大家好。
在我的 CC1312项目中,我需要将音频数据(短 jingle - CCA 3 s 持续时间)从外部 SPI 内存流式传输到外部 I2S DA 转换器,而不会中断。 我开始修改 i2secho 示例,但没有成功。 我不知道如何在队列中使用 SPI 并将其绑定到 I2S 队列。
请有人告诉我正确的方法吗?
非常感谢
您好,弗兰蒂塞克,
我们有一些音频示例。 您是否查看了音频插件?
https://dev.ti.com/tirex/explore/node?node=AFFVIsO6lK9zZEzi2G-Sig__RW99gST__LATEST
谢谢,
玛丽·H
Marie,您好!
感谢您的反馈。 您的链接非常有趣,我还不知道音频插件。 我看了看,但不幸的是我没有找到解决方案。 所有示例都不适用于 SPI 外围设备,我不确定如何将 SPI 读数链路到连续工作。 AudioHAL 看起来很有希望,但我担心从外部 SPI 内存读取的实施会非常复杂。 我正在寻找一个像 i2secho 示例一样简单的解决方案。 是否有办法为 SPI 修改它?
巴西
弗兰蒂塞克·莱西
您好,
我经历了一些个人项目,在播放前,我将音频数据存储在外部闪存中。 由于 TI 提供了一个出色的 NVS 驱动程序(构建于用于外部闪存的 SPI 之上),我直接使用了该驱动程序。
我目前可能不记得所有细节,但以下是您可能感兴趣的一些要素。
最后,我认为 i2secho 的例子是正确的起点。 这里提供的结构将有助于我在第3点所解释的内容。 剩余的工作是用从 I2S 接收的数据替换填充 I2S 缓冲区的代码。
我希望这将有所帮助,
感谢大家的回应。
我仍然是基于 i2secho 的例子。 我能够从外部 SPI 闪存读取数据,并且能够将一些数据写入 I2S DA 转换 器 CS4349。 但问题可能是我对 list 函数不熟悉。 在 i2secho 示例中是一个循环列表,因为输入和输出都是 I2S。 我的项目具有 SPI 输入和 I2S 输出,因此我创建了两个循环列表(首先是 SPI 输入,第二是 I2S 输出)。 我很难在它们之间同步。 从外部 SPI 闪存读取的速度快于 I2S 向输出写入的速度,必须确保新数据不会覆盖旧数据。 这是我不熟悉的名单上的工作。
巴西
您好,
对我来说,你应该只有一份清单。 这样,您就不必将数据从一个列表传递到另一个列表,而不会遇到您提到的时间问题。
有关 List 驱动程序的更多详细信息,您可能需要查看 https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_list_8h.html
此致,
大家好,
经过多次尝试,成功终于实现。 根据 i2secho 示例,我使用了一个包含六个元素的列表作为循环缓冲区。 它被用作传输缓冲区。 通过 I2S 从列表的每个元素发送数据后,将生成中断,并在其中开始从外部闪存加载 SPI 数据。 从外部 SPI 闪存读取数据的速度要比 I2S 写入快得多,因此 I2S 的数据不会出现不可用的风险。 I2S 任务具有最高优先级非常重要,否则 I2S 写入会中断且不会持续。
非常感谢你的帮助
此致