摘要:本文给出依据Kinetis MK60N512微控制器和16位/24位音频数模转化器MAX5556的立体声响频接口规划。MK60N512由I2S总线向MAX55 56传输音频数据,输出音频信号经有源滤波器进行滤波,确保音频质量的一起进步其带负载才能。由MK60N512内部高功能可编程的增强型DMA向I2S模块传送音频数据,减轻微控制器内核的担负。
关键词:Kinetis;MK60N512;MAX5556;增强型DMA;I2S总线
导言
MK60N512是飞思卡尔公司Kinetis系列微控制器集成度最高的芯片,它依据ARM Cortex—M4内核,具有功耗低、功能高、成本低的特色,旨在为嵌入式音频、轿车电子和电源办理等供给灵敏的解决方案。MAX5556是美信公司一款低功耗、立体声响频数/模转化器(DAC),支撑规范I2S总线协议,采样精度最高可达24位,采样率为2~50 kHz。选用∑-△调制技能,能够对量化噪声进行有用整形,减小量化噪声。
音频处理体系中,选用DMA完结音频数据在微控制器内的传输,能削减内核的参加,下降内核担负。体系的数据传输通道如图1所示,音频信号暂存在缓存区中,由DMA传输到I2S总线模块的发送电路。为了坚持音频信号的接连性,选用“乒乓RAM”规划缓存。图中A/B标明乒乓RAM的编号。
发送电路和接纳电路均有两个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模块自己完结的。
DMA的初始化代码略——编者注。
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系列微控制器音频解决方案供给参阅。