基于Kinetis微控制器和16位/24位MAX5556的立体声音频接口设计

发布时间:2024-09-06  

本文给出基于Kinetis MK60N512微控制器和16位/24位音频数模转换器MAX5556的立体声音频接口设计。MK60N512由I2S总线向MAX55 56传输音频数据,输出音频信号经有源滤波器进行滤波,保证音频质量的同时提高其带负载能力。由MK60N512内部高性能可编程的增强型DMA向I2S模块传送音频数据,减轻微控制器内核的负担。


引言

MK60N512是飞思卡尔公司Kinetis系列微控制器集成度最高的芯片,它基于ARM Cortex—M4内核,具有功耗低、性能高、成本低的特点,旨在为嵌入式音频、汽车电子电源管理等提供灵活的解决方案。MAX5556是美信公司一款低功耗、立体声音频数/模转换器(DAC),支持标准I2S总线协议,采样精度最高可达24位,采样率为2~50 kHz。采用∑-△调制技术,能够对量化噪声进行有效整形,减小量化噪声。

音频处理系统中,采用DMA实现音频数据在微控制器内的传输,能减少内核的参与,降低内核负担。系统的数据传输通道如图1所示,音频信号暂存在缓存区中,由DMA传输到I2S总线模块的发送电路。为了保持音频信号的连续性,采用“乒乓RAM”设计缓存。图中A/B表示乒乓RAM的编号。

c.JPG

1 MK60N512 I2S总线和eDMA介绍

1.1 I2S总线模块

MK60N512的I2S总线模块有3种基本操作模式:普通模式、网络模式和门控时钟模式,针对音频上的应用,I2S总线模块还支持两种衍生模式:I2S总线模式和AC97模式。I2S总线模块的结构如图2所示,由发送电路、接收电路、串行时钟和帧同步时钟产生电路组成。STCK、SRCK分别为串行发送、接收时钟端口,STFS、SRFS为串行发送、接收帧同步端口,STXD、SRXD为串行发送和接收数据端口。在同步模式下,STCK端口被发送和接收单元共同使用。


发送电路和接收电路均有两个FIFO,宽度为32位,深度为15。对发送数据寄存器TX0/TX1和接收数据寄存器RX0/RX1的写入与读取可以访问这些FIFO。发送逻辑将TX FIFO中的数据转移出来,装入发送串行移位器TXSR,然后从STXD端口串行发送;接收逻辑将数据从输入的数据帧中转移出来后,将它们放入接收RXFIFO的入口。当TX FIFO中空缺数目或RX FIFO数据达到设定的数目时,会触发中断或者DMA传输。

1.2 eDMA

MK60N512的eDMA高度可编程,数据传输高度优化而几乎不需要CPU内核干预。与普通的DMA不同,eDMA的传输由主循环(Major Loop)和辅循环(MinorLoop)组成。主循环由外设自动触发,每次主循环结束后源地址、目的地址都会按照TCDn_SOFF、TCDn_DOFF寄存器中的值自动偏移而不需要CPU去修改。除了所有传输结束后产生中断申请外,eDMA还支持“半中断”,即主循环完成总循环次数一半时产生中断申请,这特别适合“乒乓RAM”设计。

2 MAX5556介绍

2.1 引脚定义和内部结构

MAX5556内部结构如图3所示,MCLK为主时钟,LRCLK为左/右声道选择时钟,SCLK为外部串行时钟,SDATA为串行音频输入,OUTL/OUTR为左/右声道输出。串行接口模块获取音频数据后,由内置数字插值器、滤波器对其进行滤波,以去除基带音频信号携带的谐波噪声;音频数据经∑-△调制器调制后由DAC转换,输出的模拟信号经由内部的模拟低通滤波器进行滤波,衰减高频量化噪声;内置输出缓存器能驱动大于3 kΩ的负载电阻和高达100 pF的负载电容;最终模拟音频信号从OUTL/OUTR输出。


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。

3 系统硬件电路设计

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 软件设计

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)所示。

I2S总线的初始化代码略——编者注。

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模块自己完成的。

5 测试结果

图8为TX_FS和TXD的波形图,通道1为TX_FS,通道2为TXD。左/右声道发送的音频数据均是0x555。图8(a)的发送帧频率为48 kHz,图8(b)的为44.1 kHz。从图8中可以看出,数据长度为24位,左对齐模式,而且数据与帧同步有一个采样时钟的延时,符合MAX5556的数据格式和时序。

结语

本文设计了基于Kinetis MK60N512和MAX5556的立体声音频接口,MK60N512将音频数据按照MAX5556的数据格式和时序通过I2S总线传输给MAX5556,MAX5556内部DAC将数据转化为模拟信号输出,并由滤波电路对音频信号进行滤波,同时提高带负载能力。使用MK60N512内部高性能可配置的eDMA提高系统数据传输速率,降低CPU的负担。测试表明,系统能输出立体声音频,输出频率可调,可以为Kinetis系列微控制器音频解决方案提供参考。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    器过载的原因有以下几种:(1)负载过重:当负载超过电机设计器定的负载时,电机会发出过载信号,这时变频器就会限制输出电流,以保护电机不受损坏。(2)工作条件不良:比如机器运行环境温度过高、机器加速度过快等。(3)控制器参数......
    电机通常配备有编码器,用于实时反馈电机的位置和速度信息。如果编码器故障或损坏,可能会导致伺服电机回原点不准。   控制器参数设置不正确:伺服电机的控制器通常需要根据具体应用进行参数设置,如果控制器参数......
    伺服控制器的参数设置_伺服控制器报警代码;  伺服控制器的参数设置   伺服控制器的参数设置涉及到多个方面,包括电气参数控制参数、运动参数等。下面列举一些常见的伺服控制器参数设置:   电气参数......
    伺服驱动器故障代码_伺服驱动器参数详解;  伺服驱动器故障代码   伺服驱动器又称为“伺服控制器”、“伺服放大器”,是用来控制伺服电机的一种控制器,其作用类似于变频器作用于普通交流马达,属于......
    三菱变频器外部接线,应用实例及变频器参数设置; 详解三菱变频器外部接线图分为主电路和控制电路 三菱......
    起着重要的影响。 当用SinamicsS120对西门子电机进行控制时,仅仅需要核对电机的序列号,电流控制器参数会自动默认。如果用S120驱动第三方电机,就需要认真核对电机的每个参数,并需......
    兼容,可实现快速开发并缩短设计周期。EPC 提供控制接口板 (EPC9147X),用于将此逆变器参考设计与许多常见的 BLDC 电机配合使用。该EPC9194KIT包括EPC9194评估板和控制器......
    比例度法(Ziegler-Nichols) 1.1  在纯比例作用下,逐渐增加增益至产生等副震荡,根据临界增益和临界周期参数得出PID控制器参数,步骤如下: (1)将纯比例控制器接入到闭环控制系统中(设置控制器参数......
    兼容,可实现快速开发和缩短设计周期。EPC提供控制接口板 (EPC9147X),以便使用常见的BLDC电机来操作该逆变器参考设计。EPC9194KIT包含EPC9194评估板和控制器......
    器软件或定点工产品具箱,你激活后计算抗饱和的方法,这种方法可能会导致在你的控制器的代数环。代数环可能会导致生成的代码速度较慢。 Trapezoidal (选择双线性逼近) main P参数 I参数 D参数......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>