ST意法半导体
直播中

李泽坚

7年用户 1345经验值
私信 关注
[问答]

有没有办法在I2S固件中的外围设备之间同步WS和SCLK信号呢?

除了对音频数据进行一些非常轻的处理外,微控制器几乎不会做其他事情。I2S 源有一个 MCK、SCK、WS 和 4 个立体声输出(其中 3 个将被使用),I2S 源只能用作主设备,让我将 STM32 用作从设备。我看到 I2S 有一个标记为 I2S2_CKIN 的 CKIN 引脚。查看数据表中的时钟路由图,看起来可以在分配回 I2S 外设(1、4、5 以及 2、3)之前路由到 I2SPLL。我可能会将其作为硬件选项提供,以便我可以在外部 I2S 时钟输入或使用 HSI/HSE 时钟之间进行选择。我的问题在于所有 I2S 数据通道共享 WS 和 SCLK 信号。我是否需要缓冲/拆分这些信号以转到每个外围设备实例,或者有没有办法在固件中的外围设备之间同步它们?我没有看到在固件中立即执行此操作的机制,但正在寻找可能遇到相同问题的人!

回帖(1)

刘艳

2022-12-15 14:39:34
如果您在从属模式下使用 SPI/I2S 块,据我所知,没有办法在内部同步这些 IP。外部音频设备提供的 WS 必须分配到每个 SPI/I2S 块的 WS 输入。这同样适用于 SCK 信号。
STM32F413/423也内嵌了一个SAI,可以帮你节省2个IO,但是要付出使用一个SAI和一个SPI/I2S的代价。SAI 包含 2 个子块,它们可以共享它们的 WS 和 SCK。
请注意,只有一个 SAI,如果您需要第三个 I2S 链接,则还需要一个 SPI/I2S。
SAI 还可以处理多声道,如果您的外部音频编解码器支持它,您可以节省 IO。处理可能有点复杂,但这实际上取决于应用程序。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分