20.5 I2S发送和接收接口
I2S 接口可发送和接收 8、16 或 32 位立体声道或单声道音频信息。某些 I2S 实现的细节
包括:
当 FIFO 为空时,发送通道将重复发送相同的数据直至新的数据被写入 FIFO;
当静音被选中(true)时,发送数据值 0;
当单声道为错误时,两个连续的数据字分别是左声道和右声道的数据;
数据字长度由配置寄存器中字宽度的值决定。接收通道和发送通道有各自字宽度的
值;
-0:字被看作为含有 4 个 8 位的数据字。
-1:字被看作为含有 2 个 16 位的数据字。
-3:字被看作为含有 1 个 32 位的数据字。
当发送 FIFO 含有不足够的数据时,发送通道将重复发送最后的数据直至新的数据
可用。当微处理器或 DMA 在某些时候不能足够快地提供新数据时可能出现这种情
况。由于在新数据中存在这种延时,因此需要填充间隙,通过连续发送最后的采样
来完成该操作。数据不能被屏蔽(muted),因为这将会在声音上产生明显而不合乎
需要的效果;
发送通道和接收通道仅处理 32 位对齐的字,数据程序块(chunk)必须被省略一部
分或将其扩展为 32 位的倍数。
在数据宽度或模式之间切换时,I2S 必须通过控制寄存器中的复位位进行复位来确保正
确的同步操作。建议同时置位停止位直至有足够的数据被写入发送 FIFO。需要注意的是,
在停止时数据输出被屏蔽(muted)。
所有访问 FIFO 的数据为 32 位。图 20.2 所示为可能的数据序列。
FIFO 中的数据采样包括:
1×32 位,在 8 或 16 位立体声道模式下;
1×32 位,在单声道模式下;
2×32 位,第一个为左声道数据、第二个为右声道数据,在 32 位立体声道模式下。
数据在 WS 下降沿后从发送 FIFO 中读出,它将在 WS 上升沿后被传输到发送时钟域。
在 WS 的下一个下降沿上,左声道数据将被载入移位寄存器并发送,在 WS 的下一个上升沿
上,右声道数据被载入并发送。
1