基于LPC2138的AES3数字音频接口设计
模拟音频信号经过滤波电路后功率比较小,如果直接输出,则输出音频的音量会非常小。因此必须对滤波后的模拟音频信号进行非失真放大,提高输出模拟音频信号的功率,使得音量能达到更好效果。如图4所示,经过滤波后的模拟音频信号由NE5532放大器进行功率放大,放大倍数为:
3.5 模数转换模块
模数转换模块采用Cirrus Logic公司的模数转换芯片CS5368。它具有24位转换位宽,114 dB的动态范嗣,-105 dB的总谐波失真加噪声,可选的音频接口格式,低延迟数字滤波器,差分模拟结构,从模式(slave mode)下支持速度自检,支持标准的I2C控制接口,适用于专业的音响设备。
在本设计中,CS5368工作于控制端口模式(control portmode),通过LPC2138的I2C总线控制,器件地址为0x98H。CS5368可接收8路的差分模拟信号AINLx+、AINLx-,输出的4路数字音频信号CS5368_SDOx格式设置为I2S模式,采样频率为48kΩ。MCLK、SCLK、LRCK分别为12.288 MHz、3.072 MHz、48 kHz,由外部提供。CS5368的外围电路如图5所示。
3.6 数模转换模块
数模转换模块采用Cirrus Logic公司的数模转换芯片CS4382。它是一个完整的8通道数模转换系统,具有114 dB的动态范围,-100 dB的总谐波失真加噪声,支持标准的I2C控制接口,具有理想的差分线性,高保真机制,无线性漂移等优势,适用于专业的音响设备。
在本设计中,CS4382工作于控制端口模式,通过LPC2138的I2C总线控制,器件地址为0x30H。CS4382可接收4路I2S的数字音频信号SDIN1~SDIN4,输出8路的差分模拟信号,采样频率取48k。MCLK、SCLK、LRCK同CS5368,分别为12.288 MHz、3.072MHz、48kHz,由外部提供。
3.7 音频格式转换模块
音频格式转换模块采用TI公司的SRC4382芯片。它是一款专用于广播数字音频系统的芯片,它集成了带有采样频率转换的数字音频接口发送器(DIT)和接收器(DIR),2个音频串行接口,以及支持数据和时钟内联的分布式逻辑,DIT和DIR兼容AES3,S/PDIF,IEC 60958和EIAJ CP-1201接口标准,采样频率最高支持216 kHz,并且支持通过I2C总线控制芯片的工作状态。
本设计中,通过LPC2138的I2C总线接口控制SRC4382的工作模式,器件地址为0xE0H。通过设置SRC4382内部寄存器,使其同时有2条工作的信号路径,一条为RX+、RX-差分信号经过DIR单元的采样频率转换和解码后,转换为I2S信号,由SDOUT输出;另一条为I2S信号SDIN经过DIT单元的采样频率转换和编码后,转换为数字音频接口AES3信号,由差分线TX+、TX-输出。LRCK与SCLK同CS5368,均由外部提供。RX+、RX-与DIN+、DIN-之间以及TX+、TX-与DOUTR+、DOUTR-之间均需要用变压器做隔离去耦合,以防止前后级之间相互干扰。SRC4382的外围电路如图6所示。
4 软件程序设计
CS5368、CS4382、SRC4382 3款芯片均可通过设置其内部寄存器,获得不同的工作状态。
4.1 CS5368软件部分
系统上电之后需对CS5368进行初始化。GCTL(globalmode control register)控制芯片的工作模式,本设计工作状态为:控制端口模式,时钟为256采样率,输出I2S模式,从模式下的所有采样频率。因此GCTL的值设置为0x87H。其他寄存器保持默认值即可。初始化程序如下:
//I2C写一个字节0x87到地址GCTL(0x01)
I2c_WriteNByte(CS5368_Addr,1,GCTL,gctl,1);
当CS5368发生溢出中断时,会向LPC2138的外部中断INT0发送中断信号,同时LED灯D1被点亮。在中断程序中,查询OVFL寄存器状态,设置相应通道的输出消声(mute)。中断服务程序如下:
char ovfl,mute;
I2c_ReadNByte(CS5368_Addr,1,OVFL,&ovfl,1);
mute=~ovfl;
I2c_WriteNByte(CS5368_Addr,1,MUTE,mute,1);
4.2 CS4382软件部分
系统上电之后需对CS4382进行初始化。MC1、MC2和FC共同控制CS4382的工作状态,本设计中将其值分别设置为0x80H,0x10H,0x05H。芯片工作存控制端口模式下,输入音频格式为24位I2S信号,去加重滤波器响应频率为48 kHz。其他寄存器保持默认值。初始化程序如下:
mc1=0x80;mc2=0x10;fc=0x05;
I2c_WriteNByte(Cs4382_Addr,1,MC1,mc1,1);
I2c_WriteNByte(CS4382_Addr,1,MC2,mc2,1);
I2c_WritcNByte(CS4382_Addr,1,FC,&fc,1);
4.3 SRC4382软件部分
4.3.1 SRC4382初始化
系统上电之后需要对SRC4382进行初始化。SRC4382的寄存器分为4页,第0页为控制和状态寄存器,第1页为DIR通道状态和用户数据缓冲寄存器,第2页为DIT通道状态和用户数据缓冲寄存器,第3页保留。在操作每页寄存器之前,必须通过设置每页的页选择寄存器来确定要操作的页。初始化程序中只需将寄存器07,09,0b,0d,0e,0f,16,17,2d分别设置为0x22,0x02,0x33,0x08,0x09,0x12,0xfe,0x01,0x42,其他保留默认值即可。各寄存器的具体值及其含义请参考技术手册。初始化程序如下:
数字音频 LPC2138 AES3 谐波失真 信噪比 相关文章:
- 朗谷数字音频处理技术在音频及网络通讯领域的应用(05-19)
- 基于AVR 8位单片机的短距离立体声数字音频无线传输系统开发(06-04)
- 内含DSP的数字音频放大器协助降低设计成本(12-21)
- I2S音频总线学习(一)数字音频技术(12-14)
- Cirrus CS485xx系列数字音频DSP处理方案(09-16)
- 高性能数字音频传输系统的设计与实现(06-17)