28.6.1.1初始化
I2S特性是两个时钟单元,两个配置成接收发射的串化器。两个串化器能共享相同的时钟单地或者用
单独的时钟单元。
在使能I2S之前,下列寄存器必须被配置:
。时钟控制寄存器(CLKCTRLn)
。串化器控制寄存器(SERCTRLm)
。在主机模式,一个供I2S的通用时钟必须被配置到需要操作的频率,如"Principle of Operation"
。fs是采样频率,它定义了帧周期,如:48kHz
。CLKCTRLn.NBSLOTS定义了每帧的时隙数量,如:如果NBSLOTS=5六时隙每帧
。CLKCTRLn.SLOTSIZE定义了每个时隙的比特数量,如果SLOTSIZE=3
。SCKn频率必须是(fs*时隙数*每个时隙的比特数),如9.216MHz
列如:如果一个384fs MCKn 主机时钟被需求,如:18.432MHz(fs=48kHz),所以I2S通用时钟就应是
18.432MHz并且CLKCTRLn.MCKOUTDIV=0,以得到MCKn频率是18.432MH。I2S通用时钟除以2,通过设置
CLKCTRLn.MCKDIV=1,将输出期望的SCKn频率,9.216MHz输出到SCKn管脚。如果MCKn不需要,通用时钟能被
设为9.216MHz且CLKCTRLn.MCKDIV=0。
让我们思考如果一个384fs MCKn 主机时钟还需要,如:18.432MHz,这时通用时钟在18.432MHz并且
MCLKn 被2分频,通过设置CLKCTRLn.MCKDIV=1,来获得SCKn期望的频率。如果MCKn不需要,通用时钟能达
到9.216MHz并且CLKCTRLn.MCKDIV=0.
如果配置被写,I2S时钟单元和串化器通被通过向控制寄存器(CTRLA)使能比特,CKENn和SERENm比特写1
。如果串化器使能,时钟单元必须被使能。
时钟单元和串化器能通过向CTRLA.CKENn或CTRLA.SERENm写0被单独禁止。一但请求停止,它们将只在
正在传输帧完成之后停止。
当请求停止,连续接收的当前时隙将被完成并且串化器将被停止。
|