Ai8051U单片机内部有一个I2S外设,因为IO引脚是可以被复用的,在使用I2S外设时,可以按照以下方式分配I2S使用的一脚接口,
其它相关的寄存器:
1、控制寄存器(I2SCR)
TXEIE:输发送缓冲区空中断允许位。
0:禁止发缓冲区空中断
1:允许发送缓冲区空中断
RXNEIE:接收缓冲区非空中断允许位。
0:禁止接收缓冲区非空中断
1:允许接收缓冲区非空中断
ERRIE:错误中断允许位。
0:禁止错误中断
1:允许错误中断
FRF:帧格式
0:Motorola 格式
1:TI 格式
TXDMAEN:发送DMA控制
0:禁止发送 DMA
1:使能发送 DMA
RXDMAEN:接收DMA控制
0:禁止接收 DMA
1:使能接收 DMA
2、状态寄存器(I2SSR)
FRE:帧格式错误
BUY:I2S忙状态。(正在通讯中或者发送缓冲区非空)
OVR:发生上溢
UDR:发生下溢
CHSID:通道选择标志
0:左通道正在发送或接收数据
1:右通道正在发送或接收数据
TXE:发送缓冲区空标志位
RXNE:接收缓冲区非空标志位
3、数据寄存器(I2SDRH、I2SDRL)
DR[15:0]:接收或发送的数据。写数据寄存器时应先写高字节I2SDRH,后写I2SDRL。读数据寄存器时应先读高字节I2SDRH,后读I2SDRL。
4、分频寄存器高字节(I2SPRH)
MCKOE:I2S主时钟输出控制
0:禁止 I2S 主时钟输出
1:使能 I2S 主时钟输出
ODD:预分频器的奇数因子控制
0:实际分频值=DIV*2
1:实际分频值=DIV*2+1
5、分频寄存器低字节(I2SPRL)
DIV[7:0]:I2S的时钟预分频器。DIV不可设置为0或者1。
I2S 比特率=每个通道的比特数×通道数×音频采样频率(FS)
对于 16 位音频、左声道和右声道,I2S 比特率计算如下:I2S 比特率=16×2×FS
对于 32 位宽度的数据包长度,I2S 比特率=32×2×FS。
当 I2S 主时钟输出使能时(MCKOE 设置为 1):
当信道帧宽度为 16 位时,音频采样频率 FS=I2S 时钟÷[(16×2)×(2×DIV+ODD)×8)]
当信道帧宽度为 32 位时,音频采样频率 FS=I2S 时钟÷[(32×2)×(2×DIV+ODD)×4)]
当 I2S 主时钟输出被禁用时(MCKOE 设置为 0):
当信道帧宽度为 16 位时,音频采样频率 FS=I2S 时钟÷[(16×2)×(2×DIV+ODD)]
当信道帧宽度为 32 位时,音频采样频率 FS=I2S 时钟÷[(32×2)×(2×DIV+ODD)]
上述 I2S 时钟为系统时钟或 PLL 时钟
6、配置寄存器高字节(I2SCFGH)
I2SE:I2S模块控制
0:禁止 I2S 功能
1:使能 I2S 功能
I2SCFG[1:0]:I2S模式配置
00:从机发送模式
01:从机接收模式
10:主机发送模式
11:主机接收模式
7、分频寄存器低字节(I2SCFGL)
PCMSYNC:PCM帧同步
0:短帧同步
1:长帧同步
STD[1:0]:I2S标准选择
00:I2S 飞利浦标准
01:MSB 左对齐标准
10:LSB 右对齐标准
11:PCM 标准
CKPOL:稳态时钟极性
0:I2S 时钟稳定状态为低电平
1:I2S 时钟稳定状态为高电平
DATLEN[1:0]:数据长度
00:16 位
01:24 位
10:32 位
11:保留
CHLEN:通道长度(每个音频通道的位数)
0:16 位
1:32 位
8、从模式控制寄存器(I2SMD)
内部测试用,若用户需要使用 I2S 的从机模式,则需要将此寄存器设置为 FFH
9、主时钟分频寄存器(I2SMCKDIV)
主时钟分频寄存器(I2SMCKDIV)