乐鑫技术交流
直播中

麦特拉布

12年用户 1080经验值
私信 关注
[问答]

如何设置I2S寄存器以接收32位字的24位音频数据?

在寄存器I2SCONF位中,12-15 表示每 16 位之后移出的额外位数。但是,使用 4 位时,我无法将其设置为 16,而 32 位样本中的 24 位音频数据将需要 16 位。I2S_FIFO_CONF寄存器的第 16-18 位的 Rx FIFO 模式设置为 2 (= 每通道 24 位,全数据中断)。从从ADC接收的数据来看,当我将I2S_BITS_MOD设置为15时,似乎丢失了最高有效位。
如何设置 I2S 寄存器以接收 32 位字的 24 位音频数据?

回帖(1)

刘敏

2024-7-20 16:31:26
要设置I2S寄存器以接收32位字的24位音频数据,您需要按照以下步骤操作:

1. 首先,确保您的硬件和软件环境已经正确配置,以支持I2S通信。

2. 设置I2SCONF寄存器。在I2SCONF寄存器的12-15位中,您可以设置每16位之后移出的额外位数。由于您需要接收24位音频数据,您可以将这些位设置为8(二进制为1000),这样每16位之后将移出8位。这将确保您接收到24位音频数据。

   I2SCONF |= (8 << 12);

3. 设置I2S_FIFO_CONF寄存器。在I2S_FIFO_CONF寄存器的16-18位中,您可以设置Rx FIFO模式。根据您的描述,您希望将其设置为2(每通道24位,全数据中断)。这将确保FIFO在接收到完整的24位音频数据时触发中断。

   I2S_FIFO_CONF |= (2 << 16);

4. 设置I2S_BITS_MOD寄存器。这个寄存器用于设置每个通道的位宽。由于您需要接收24位音频数据,您可以将这个寄存器设置为23(二进制为10111),这样每个通道将有24位数据。

   I2S_BITS_MOD |= 23;

5. 确保其他I2S寄存器(如I2S_SCLK_CONF、I2S_TX_FIFO_MOD和I2S_RX_FIFO_MOD)已根据您的硬件和软件需求正确配置。

6. 启动I2S接收。在配置完所有寄存器后,您可以启动I2S接收过程,以便开始接收32位字的24位音频数据。

请注意,具体的寄存器名称和位设置可能因不同的硬件平台和软件库而有所不同。请根据您的具体硬件和软件环境进行相应的调整。
举报

更多回帖

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