音频主机

主机  时间: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对其产品在任何特定用途方面的适用性不做任何担保、表示或保证,也不承担因为应用程序或者使用产品或电路所产生的任何责任,明确拒绝承担包括但不局限于后果性的或附带性的损害在内的所有责任.

易探云:香港大带宽/大内存物理机服务器550元;20Mbps带宽!三网BGP线路

易探云怎么样?易探云隶属于纯乐电商旗下网络服务品牌,香港NTT Communications合作伙伴,YiTanCloud Limited旗下合作云计算品牌,数十年云计算行业经验。发展至今,我们已凝聚起港内领先的开发和运维团队,积累起4年市场服务经验,提供电话热线/在线咨询/服务单系统等多种沟通渠道,7*24不间断服务,3分钟快速响应。目前,易探云提供香港大带宽20Mbps、16G DDR3内存、...

爱用云互联租用服务器租美国、日本、美国、日本、购买2天内不满意可以退换,IP可免费更换!

爱用云互联怎么样?爱用云是一家成立于2018年的老牌商家旗下的服务器销售品牌,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端...

水墨云历史黑名单IDC,斟酌选购

水墨云怎么样?本站黑名单idc,有被删除账号风险,建议转出及数据备份!水墨云ink cloud Service是成立于2017年的商家,自2020起开始从事香港、日本、韩国、美国等地区CN2 GIA线路的虚拟服务器租赁,同时还有台湾、国内nat vps相关业务,也有iplc专线产品,相对来说主打的是大带宽服务器产品。注意:本站黑名单IDC,有被删除账号风险,请尽量避免,如果已经购买建议转出及数据备...

主机为你推荐
网站空间购买不用备案的网站空间,哪里可以有这样的网站空间购买?网站空间商哪有好一点的网站空间商?欢迎友友们给我推荐下,网站空间价格我想自己弄个小网站,但我不会懂域名和买空间价格,便宜一点的一共要多少钱?深圳网站空间深圳网站设计 哪家好一些?论坛虚拟主机最近想买虚拟主机,用来做论坛。域名交易域名如何买卖??备案域名购买什么是已备案域名?那里 有已备案域名动态域名解析如何解析动态域名查域名怎么查域名命令是否被惩罚过域名城域名在注册缴费成为自己的之后,可以马上和别人进行交易么
广西虚拟主机 重庆vps租用 godaddy域名解析 asp.net主机 256m内存 cpanel主机 服务器怎么绑定域名 网通代理服务器 河南移动网 美国网站服务器 hkt 免费邮件服务器 万网主机管理 lamp兄弟连 深圳域名 服务器防御 免费获得q币 rsync 性能测试工具 国内云主机 更多