java怎么拦截某个对象
280
2022-11-10
基于Kinetis MK60N512和MAX5556的立体声音频接口设计
1 MK60N512 I2S总线和eDMA介绍
1.1 I2S总线模块
1.2 eDMA
2 MAX5556介绍
2.1 引脚定义和内部结构
2.2 工作模式
MAX5556支持外部串行时钟模式和内部串行时钟模式。在一个LRCLK周期内,若检测到有效的SCLK,则进入外部串行时钟模式,SCLK作为采样时钟;如果检测不到有效的SCLK,则进入内部串行时钟模式,采样时钟由内部生成。内部采样时钟的频率根据检测到的MCLK与LRCLK的比值确定,若MCLK与LRCLK的比值为384,则内部采样时钟频率为48×fLRCLK;若MCLK与LRCLK的比值为256或512,则内部采样时钟频率为32× fLRCLK。
2.3 数据格式
MAX5556支持左对齐16位或者24位数据格式。当其工作在外部串行时钟模式,或工作在内部串行时钟模式,且同时MCLK与LRCLK的比值为384时,有效数据为24位。如果数据不足24位,低位补零;超过24位的数据会被忽略。当工作在内部串行时钟模式,且MCLK与LRCLK的比值为256或512时,有效数据为16位。MAX5556数据格式如图4所示。每次LRCLK沿变化后的第二个SCLK上升沿时,SDATA上数据开始有效,出现最高有效位(MSB);24个或者16个时钟周期后出现最低位有效位(LSB)。LRCLK为0时,数据进入左声道DAC;LRCLK为1时,数据进入右声道DAC。
MK60N512通过I2S总线将音频数据传输给MAX5556进行数模转换,输出模拟音频信号由滤波电路进行滤波,同时提高带负载能力。I2S总线模块工作在I2S总线主模式下,发送电路的STCK、STFS和STXD端口对应的引脚分别为BCLK、TX_FS和TXD,I2S总线模块的主时钟通过MCLK引脚输出。硬件电路如图5所示。由于MK60N512工作在3.3 V电压下,而MAX5556工作电压为5 V,为了提高数据传输的稳定性,接口均采用上拉方式。
LM358在5 V单电源供电时有效输出为1.5~3.5 V,而MAX5556的输出可以达到0~5 V,因而在输入端使用R1和R2对原始信号进行衰减,防止输出信号出现削顶失真。
4.1 “乒乓RAM”设计
MK60N512的I2S总线模块在I2S总线模式下支持双声道,音频数据在FIFO中交错存放,因此在缓存中的音频数据也需要交错存放。数据缓存如图6所示,其中L/R表示音频左/右声道。每个音频数据占用4个字节空间,缓存BUFF_A、BUFF_B在物理地址上是连续的,它们大小均为512字节,共存储256个音频数据。当DMA从缓区BUFF_A中读取数据时,CPU向缓存区BUFF_B中存储下一组音频信号;当DMA将BUFF_A中的数据全部传输结束后,将DMA通道源地址切换到BUFF_B,同时CPU向BUFF_A存储数据,如此反复。
4.2 I2S总线模块的配置
配置I2S总线模块工作在I2S总线主模式下,默认一帧数据长度是32位,而且为左对齐模式;使用帧同步TX_FS作为声道选择时钟,且同步帧长度为一个字。由于MAX5556的SCLK信号由MK60N512提供,MAX5556工作在外部串行时钟模式,有效数据位是24位,因而配置发送数据位为24位。按照MAX5556的数据格式,数据需要在SCLK下降沿输出从TXD数据,且需要发送早期帧同步,让数据延迟一个采样时钟,还需要根据音频采样频率设置帧频率。
使能TX FIFO和其DMA请求,当FIFO中空缺数达到8时,启动一次DMA主循环。图7为音频数据在TXFIFO移动过程。图7(a)中FIFO为满,随着发送移位逻辑从FIFO从取出一个数据后,FIFO产生一个空缺,如图7(b)所示。当发送8次数据后,FIFO空缺数达到8个,则触发DMA主传输,如图7(c)所示。
4.3 eDMA配置
当TX FIFO空缺数达到8时,触发DMA主循环,故每次主循环传输数据数目是32字节,每次主循环源地址偏移也是32字节,完成缓存区1 024字节数据传输需要32次主循环。第16次主循环结束,DMA已经将BUFF_A中所有数据传输完毕,DMA源地址指向BUFF_B,并产生“半中断”请求,CPU开始向BUFF_A中存储下一组512字节音频数据。
当BUFF_B中数据传输结束后,源地址恢复到BUFF_A起始地址,并产生中断请求,CPIJ响应中断并向BIJFFB中存储下一组512字节音频数据。可以看出,在传输过程中,CPU只需要响应两次中断请求,然后向缓存区写入音频数据。每次主循环结束后源地址偏移32字节,完整的传输结束后,源地址恢复到BUFF_A起始地址,这些操作都是通过eDMA模块自己完成的。
图8为TX_FS和TXD的波形图,通道1为TX_FS,通道2为TXD。左/右声道发送的音频数据均是0x555。图8(a)的发送帧频率为48 kHz,图8(b)的为44.1 kHz。从图8中可以看出,数据长度为24位,左对齐模式,而且数据与帧同步有一个采样时钟的延时,符合MAX5556的数据格式和时序。
结语
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~