音频主机

主机  时间:2021-01-03  阅读:()

1概述本应用笔记介绍了FlexIO外设模块的一种典型用例,该模块最初是在FreescaleKinetisKL43MCU系列(ARMCM0+MCU)中作为I2S音频总线主机推出的.
FlexIO是一个高度可配置的模块,能够模拟多种串行/并行通信协议,包括UART、I2C、SPI、I2S等.
本应用笔记旨在展示FlexIO外设能够生成所有必需的I2S总线信号,也可用于取代传统I2S/SAI外设来传输音频数据流,而不会对功能或CPU资源造成任何明显限制.
为了验证I2S用例,本应用笔记中实现了一个简单的软件驱动程序.
本演示采用Freescale塔式系统.
音频记录存储在MCU的内部Flash存储器中.
音频记录采样率为8.
000kHz,单通道(单声道),采用16位分辨率.
I2S字大小设置为32位.
TWR-AUDIO卡上的SGTL5000音频编解码器IC用于重现音频.
FreescaleSemiconductorDocumentNumber:AN4955应用笔记Rev1,04/2015使用FlexIO模块模拟I2S总线主机作者:MichaelGalda2014–2015FreescaleSemiconductor,Inc.
内容1概述.
12所需硬件.
23I2S总线理论.
24使用FlexIO模拟I2S主机.
35软件描述.
45.
1初始软件设置.
45.
2软件中的I2S总线模拟.
46结语.
57参考资料.
58修订历史记录.
5TWR–音频SGTL5000音频数据TWR–KL43Z48MKL43MCUKL43驱动程序内部Flash存储器中的音频记录音频控制FlexIO模拟I2S缓冲区播放状态机I2S音频总线I2C控制语音输出图1.
塔式系统上的应用实现2所需硬件本文档介绍了基于Freescale塔式系统的应用,但其中的基本概念和思路也可以在定制硬件上轻松重现.

可使用以下塔式系统板构建本应用:TWR-KL43Z48MTWR-AUDIO-SGTL5000TWR-PROTO(带额外的布线连接—请参见表1)TWR-ELEV(主板和辅板)FlexIO模块模拟I2S总线主机产生所有必需的信号:主机时钟(MCLK=12MHz)字选择(WS/FSYNC/LRCLK=8kHz)连续串行时钟(SCK/SCLK=256kHz)串行数据(SD/DOUT)FlexIO输入频率为总线时钟=48.
000MHzKL43MCU可通过I2C总线初始化和控制SGTL5000编解码器的设置.
3I2S总线理论I2S是一种音频总线,使用三线连接来同步串行数据通信.
还可以使用第四根线,用于I2S从机外设的同步主机时钟的MCLK输出.
所需硬件使用FlexIO模块模拟I2S总线主机,Rev1,04/20152FreescaleSemiconductor,Inc.
以小端格式在SD(DOUT)线(MSB优先)上发送数据.
数据长度为16、24或32位.
发送器数据在SCK的上升沿同步,接收器数据在SCK的下降沿同步.
双通道音频信号由在同一根线上传送和多路复用的两个数据字表示,即右通道样本和左通道样本.
FSYNC控制信号决定数据字表示右通道还是左通道.
此信号还指示数据长度(字的开始和结束).
FSYNC可与SCK上升沿或下降沿同步,并先于MSB一个SCK周期,以便有足够时间将数据存储在接收器中.
TIMER_FSYNCKL43MCU(发送器)SGTL5000(接收器)I2S主机I2S从机BCLKFSYNC音频编解码器ICI2C控制TIMER_BCLKSHIFTER_DINDINTIMER_MCLKMCLK12.
0MHzSHIFTER_DOUTDOUTFlexIO模块图2.
主机—从机,带模拟I2S4使用FlexIO模拟I2S主机可使用两个定时器、两个移位器和四个引脚支持I2S主机模式.
一个定时器用于生成位时钟和控制移位器,另一个定时器用于生成帧同步.
FlexIO模块等待第一次写入到发送数据缓冲区,然后才会使能位时钟和FSYNC的产生.
可使用DMA控制器支持数据传送,如果有发送下溢或接收溢出,则移位器错误标志会置位.
此外,一个定时器和一个引脚用于生成MCLK输出.
位时钟频率是FlexIO时钟频率的偶整数商,初始帧同步置位与第一个位时钟边缘同时出现.
定时器使用起始位确保在第一个输出数据之前一个时钟周期生成FSYNC.
由于同步延迟,接收器输入的设置时间为1.
5个FlexIO时钟周期.
因此,最大波特率为FlexIO时钟频率除以4.
音频样本由TWR-AUDIO-SGTL卡上的SGTL5000音频编解码器IC重现.
SGTL5000以I2S从机模式工作.
任何其他I2S音频编解码器IC可用于在定制硬件上重建音频信号.
表1汇总了所需的有线连接,这些连接必须在TWR-PROTO板上单独建立.
必须将用粗体标注的TWR-PROTO信号互相连接.
使用FlexIO模拟I2S主机使用FlexIO模块模拟I2S总线主机,Rev1,04/2015FreescaleSemiconductor,Inc.
3表1.
用于I2S模拟的TWR-PROTO信号连接I2S功能TWR-KL43Z48TWR-AUDIOTWR-PROTO(需连接)I2STx数据PTD0ELEV_I2S0_DOUTA24B46I2SRx数据PTD1ELEV_I2S0_DINA25B48I2S位时钟PTD2ELEV_I2S0_SCLKA23B45I2SFSYNC/WSPTD3ELEV_I2S0_LRCLKA22B44I2S主机时钟PTD4ELEV_I2S0_MCLKA21B595软件描述本软件应用基于KL43外设裸机驱动程序.
注本软件编写为在TWR-TWR-KL43Z48M上工作,无需对MCU塔式卡进行额外的硬件修改.
面向塔式卡设计的一般用例会导致FlexIO时钟精度受限.
在塔式卡上,内核时钟派生自高频IRC48MHz,为系统和FlexIO模块输入48.
0MHz的频率.
考虑到这样的输入频率,很难通过FlexIO模块中提供的整数分频器实现标准音频采样率,如22.
050kHz或44.
100kHz.
为了获得最佳性能和兼容性,MCU时钟可由12.
288MHz、24.
576MHz或49.
152MHz(典型音频应用晶体频率)的外部晶体或振荡器提供.
5.
1初始软件设置在初始化期间,在SIM中使能所有必需的外围模块时钟,且选择48MHzHIRC作为时钟源.
然后将系统:总线:Flash之间的时钟比率设置为1:2:2.
PortD多路复用器切换为支持FlexIO功能.
FLEXIO_I2S_Init函数中将会初始化FlexIO移位器和定时器.
配置值由文件appconfig.
h提供.
这些值指示哪些定时器、移位器和引脚用于模拟I2S.
I2C总线用于对TWR-AUDIO卡上的SGTL5000音频编解码器IC进行初始配置,本应用的演示和测试即使用此卡进行.
音频记录存储在内部Flash存储器中.
开始时,必须使用音频数据初始化空的RAM缓冲区.
此后,将Flash存储器中的数据读取到RAM内的双缓冲区.
在FLexIOIRQ回调函数中将音频样本写入到移位器中.
每当选择空闲(未使用的)RAM缓冲区并提供新的音频样本时,填充的缓冲区将用于移位器输出.
5.
2软件中的I2S总线模拟可通过以下机制模拟I2S总线功能,其确保FlexIO输出平稳连续的音频数据流:1.
SHIFTER0用于采用32位帧的音频数据输出.
第一次移位时加载传送数据.
停止位被禁用.
数据传送由定时器0驱动.
在时钟上升沿通过Pin0移出数据.
2.
SHIFTBUF0:可将传送数据写入SHIFTBUFBBS.
移位器状态标志用于指示何时可以使用中断或DMA请求写入数据.
通过写入SHIFTBUF寄存器代替可支持第一种数据格式的LSB.
软件描述使用FlexIO模块模拟I2S总线主机,Rev1,04/20154FreescaleSemiconductor,Inc.
3.
SHIFTER1可用于音频数据输入.
该移位器配置用于接收,使用定时器0在时钟下降沿通过Pin1输入数据.
SHIFTER1起始/停止位被禁用(未使用).
4.
SHIFTBUF1:可从SHIFTBUFBBS读取接收的数据.
移位器状态标志用于指示何时可以使用中断或DMA请求读取数据.
通过写SHIFTBUF寄存器可支持LSB优先的数据格式.
5.
定时器0配置为使用引脚2输出(BCLK)的双8位计数器,移位器0标志作为反向触发.
PINPOL设置为将输出移位时钟反转.
使能起始位,且在触发高电平使能定时器.
初始时钟状态为1.
定时器0比较(TIMCMP)寄存器配置用于32位传输,波特率等于FlexIO时钟除以4.
设置TIMCMP[15:8]=(位数*2)–1.
设置TIMCMP[7:0]=(波特率分频系数÷2)–1.
6.
定时器1配置为16位计数器,使用反转的引脚3输出(作为FSYNC信号).
在定时器0使能时使能定时器1(并且永不禁用).
7.
定时器2配置为生成用于外部编解码器IC的MCLK(主机时钟)输出.
6结语本应用展示了FreescaleKL43MCU可用的FlexIO外设,以I2S主机传送器的角色模拟I2S音频总线.
音频记录存储在MCU的内部Flash存储器中,并由I2S从设备SGTL5000音频编解码器重现.
本应用使用Freescale塔式系统进行演示.
可使用本文档所述方法成功模拟I2S总线功能.
可从Freescale网站免费下载应用软件例程.
7参考资料1.
Freescale塔式系统模块化开发平台:www.
freescale.
com/tower2.
TWR-KL43Z48M:用于L4KS的TWR板:www.
freescale.
com/webapp/sps/site/prod_summary.
jspcode=TWR-KL43Z48M8修订历史记录本节记录了对本文档进行的改动.
表2.
修订历史记录修订版重要改动0最初公开版本1删除了外部引用结语使用FlexIO模块模拟I2S总线主机,Rev1,04/2015FreescaleSemiconductor,Inc.
5HowtoReachUs:HomePage:freescale.
comWebSupport:freescale.
com/support本文档中的信息仅供系统和软件实施方使用Freescale产品.
本文并未明示或者暗示授予利用本文档信息进行设计或者加工集成电路的版权许可.
Freescale保留对此处任何产品进行更改的权利,恕不另行通知.
Freescale对其产品在任何特定用途方面的适用性不做任何担保、表示或保证,也不承担因为应用程序或者使用产品或电路所产生的任何责任,明确拒绝承担包括但不局限于后果性的或附带性的损害在内的所有责任.

百纵科技云主机首月9元,站群1-8C同价,美国E52670*1,32G内存 50M 899元一月

百纵科技:美国高防服务器,洛杉矶C3机房 独家接入zenlayer清洗 带金盾硬防,CPU全系列E52670、E52680v3 DDR4内存 三星固态盘阵列!带宽接入了cn2/bgp线路,速度快,无需备案,非常适合国内外用户群体的外贸、搭建网站等用途。官方网站:https://www.baizon.cnC3机房,双程CN2线路,默认200G高防,3+1(高防IP),不限流量,季付送带宽美国洛杉矶C...

Hostodo,美国独立日特价优惠,四款特价VPS云服务器7折,KVM虚拟架构,NVMe阵列,1核512M内存1Gbps带宽3T月流量,13.99美元/月,赠送DirectAdmin授权

Hostodo近日发布了美国独立日优惠促销活动,主要推送了四款特价优惠便宜的VPS云服务器产品,基于KVM虚拟架构,NVMe阵列,1Gbps带宽,默认分配一个IPv4+/64 IPv6,采用solusvm管理,赠送收费版DirectAdmin授权,服务有效期内均有效,大致约为7折优惠,独立日活动时间不定,活动机型售罄为止,有需要的朋友可以尝试一下。Hostodo怎么样?Hostodo服务器好不好?...

friendhosting:(优惠55%)大促销,全场VPS降价55%,9个机房,不限流量

每年的7月的最后一个周五是全球性质的“系统管理员日”,据说是为了感谢系统管理员的辛苦工作....friendhosting决定从现在开始一直到9月8日对其全球9个数据中心的VPS进行4.5折(优惠55%)大促销。所有VPS基于KVM虚拟,给100M带宽,不限制流量,允许自定义上传ISO...官方网站:https://friendhosting.net比特币、信用卡、PayPal、支付宝、微信、we...

主机为你推荐
台湾vps台湾服务器 哪里稳定速度快?jsp虚拟空间请问如何卖掉JSP虚拟主机asp虚拟空间怎样在一个虚拟空间里放上一个ASP和一个PHP的网站网站空间购买在哪里购买网站空间虚拟主机软件虚拟主机管理软件那个最好用?美国免费虚拟主机美国虚拟主机怎么样?美国虚拟主机那个比较好?虚拟主机测评哪一种虚拟主机比较好用?安徽虚拟主机有没有免费使用的主机,网站刚做完,本地测试没有问题,想在线测试一下页面会不会跑版。有谁知道有没有免费的虚拟主机试用,两三天即可。域名解析域名解析怎么弄?域名网谁能帮我推荐一些较好的免费域名的申请网站。。。谢谢了啊。。。
高防服务器租用qy 免费试用vps inmotionhosting 12306抢票攻略 mobaxterm 华为网络硬盘 域名转向 日本bb瘦 河南m值兑换 asp免费空间申请 hostloc 静态空间 umax120 hkt 鲁诺 web服务器安全 drupal安装 域名dns www789 个人免费邮箱 更多