MCU与Audio Codec的安卓音频附件设计

发布者:TranquilSilence最新更新时间:2014-10-23 来源: elecfans关键字:MCU  Audio  Codec  安卓音频附件 手机看文章 扫描二维码
随时随地手机看文章

  概要

  安卓音频附件是Android Open Accessory (AOA) protocol 2.0中新增的功能,它通过标准USB Audio Class Interface将来自安卓设备音频输出到附件中,将音频通过附件声卡播放出去;并且附件可以作为一个人机接口设备来控制安卓设备,比如媒体播放的简单控制等。本文详细描述了基于Freescale MCU与Audio CODEC的安卓音频附件设计方案。

  Freescale安卓音频附件简介

  本安卓音频附件方案采用Freescale Kinetis K(Cortex-M4)系列的MCU MK70FN1M0VMJ12作为主控芯片,Freescale 的SGTL5000音频编解码器将音频输出。MCU与安卓设备通过USB接收原始音频数据,并通过I2S输出到SGTL5000音频编解码器。下面是Freescale安卓音频附件的主要特点:

  ·安卓设备到附件采用44.1KHz 采样率、双声道、16比特原始PCM音频输入

  ·通过HID实现安卓设备音乐曲目切换与暂停控制

  ·通过I2C调节SGTL5000输出音量

  ·采用SGTL5000低功耗高性能立体声输出

  ·Xtrinsic Low-Power Touch-Sensing interface控制输入

  1 安卓音频附件硬件介绍

  1.1 硬件整体结构

  硬件框图

 图1 安卓音频附件硬件框图 

图1 安卓音频附件硬件框图

  安卓音频附件基本构成

安卓音频附件基本构成

  1.2 硬件功能模块设计

  Freescale Kinetis MCU MK70FN1M0VMJ12

  Freescale Kinetis K系列是一款基于ARM Cortex-M4 的低功耗、高性能微控制器。本方案采用该系列中的MK70FN1M0VMJ12进行安卓音频附件设计,具备1MB Flash与128KB RAM容量,同时具备USB 2.0接口。安卓音频附件使用以下MCU功能:

  ·MCU工作平率120 MHz

  ·采用USB Full Speed 作为音频输入

  ·通过I2S 音频接口与SGTL5000 CODEC通讯传输音频信号

  ·通过I2C 与CODEC通讯传输控制信号

  ·使用Xtrinsic Low-Power Touch-Sensing Interface作为媒体控制输入

图 2 Kinetis MCU原理图

图 2 Kinetis MCU原理图[page]

  Freescale SGTL5000 CODEC

  本方案采用Freescale SGTL5000高性能、低功耗立体声CODEC,支持I2S IN/OUT, SPI/I2C控制通道。支持主/从模式。HP输出-100dB 信噪比,-80dB谐波失真。支持8KHz~96KHz采样率,16/20/24/32位宽。

  在安卓音频附件设计中,MCU与SGTL5000交互主要有以下几个方面:

  ·MCU作为I2S 主机,SGTL5000作为设备,由MCU提供SCLK;

  ·MCU通过I2C配置SGTL5000工作模式以及输入输出配置;

  ·SGTL5000输出音频过程中,支持MCU对其进行音量、音质等配置;

  图3 SGTL5000接口

图3 SGTL5000接口

  USB模块

  Freescale Kinetis K70 MCU集成了OTG模块,OTG实现了USB 2.0全速/低速的HOST和DEVICE功能,并且通过主机交换协议实现主机与设备之间的角色转换。在AOA 协议2.0中规定安卓设备为device,附件为主机,所以 本方案中使用MCU USB 全速HOST功能。

图4: USB模块

  图4: USB模块

  I2S模块

  Freescale Kinetis MCU K系列I2S模块提供同步音频接口 (SAI总线),它支持I2S、AC97、CODEC/DSP等全双工同步串行接口。本方案中,I2S模块主要负责将从来自安卓设备的音频流传输给SGTL5000 CODEC。MCU作为I2S主机,SGTL5000作为设备。

图5 I2S模块

  图5 I2S模块

  触摸感应输入(TSI)模块

  Kinetis系列MCU提供高灵敏度、高稳定性的电容触摸感应检测功能。每个TSI引脚实现一个电极的电容测量。TSI来源主要有两部分,一个为TWRK70板上的4个模拟按钮的电极,另外12个按钮连接到了触摸Tower开发板上;本方案使用板上的4个触摸按钮作为音频附件人机输入接口来控制安卓设备媒体播放。TSI模块支持边缘和范围检测,并且在触摸板短路时发生中断。[page]

图6 TSI模块

  图6 TSI模块

  2 安卓音频附件软件设计

  软件架构

  本方案基于Freescale 实时操作系统MQX。在Freescale USB HOST STACK 上实现了AOA 2.0协议栈,并在MQX RTOS上实现了音频输出接口模块。数据流经由USB Host模块流入AOA 2.0协议栈,再由应用程序传递给音频输出接口,通过调用MQX I2S 驱动,将音频数据发送到SGTL5000 CODEC。对于来自TSI的操作命令,分为两种情况处理:音量操作输入经应用处理后直接通过音频输出接口控制I2C来调节SGTL5000输出音量;而媒体曲目切换及播放/暂停命令,经应用处理后,发送给 HID,通过AOA 2.0 Stack发送给安卓设备。

图7 软件架构框图

  图7 软件架构框图

  程序在Flash的布局

  程序在flash中的布局如图8所示,0x0000 0000~0x0000 6000空间分配给boot loader,用于对安卓音频附件固件进行SD卡升级,剩下部分为应用程序空间。

图 8 MCU Flash 布局

  图 8 MCU Flash 布局

  软件功能

  ·支持AOA Protocol 2.0 audio profile及HID*

  ·支持USB同步音频输入(44.1kHz采样率,16位,双声道)*

  ·支持I2S 立体声音频输出*

  ·支持TSI触摸板控制输入,进行音量调节、曲目切换与暂停/播放操作*

  ·支持I2S0的DMA传输以减少CPU负载*

  ·支持I2C与CODEC进行控制传输*

  ·支持SD卡升级固件功能,简单方便*

  编译环境

  采用 CodeWarrior Freescale Tool Chain编译

  结论

  本文主要介绍了基于Freescale MCU与Audio Codec的安卓音频附件设计, 该设计实现了将安卓设备媒体音频轻松传输到附件的进行高品质播放的解决方案。音频附件作为USB主机迎合了安卓设备对功耗的要求。

  参考

  K70_120: Kinetis K70 Graphic LCD 120/150 MHz MCUs

  http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=K70_120&nodeId=01624698C9DE2DDDB1

  Android Open Accessory Protocol 2.0

  http://source.android.com/accessories/aoa2.html

关键字:MCU  Audio  Codec  安卓音频附件 引用地址:MCU与Audio Codec的安卓音频附件设计

上一篇:基于EPP-CAN智能接口卡硬件电路设计
下一篇:基于USB接口和智能卡的PKI客户端设计

推荐阅读最新更新时间:2024-03-16 13:43

MSP430FR59x:超低功耗嵌入FRAM MCU开发方案
TI公司的MSP430FR59x系列是超低功耗(ULP)嵌入FRAM的MCU,16位RISC架构高达16MHz时钟,工作电压1.8V~3.6V,多达64kB非易失存储器工作模式功耗约为100 µA/MHz,待机模式功耗为0.4µA,关断时功耗为0.02µA。器件主要用在仪表、能量收获传感器节点、可穿戴电子、传感器管理和数据记录应用中。 MSP430超低功耗(ULP)的FRAM平台,结合了独特的嵌入式FRAM,和整体的超低功耗系统架构,使得创新者可以在降低能耗的同时提高性能。 FRAM技术结合了速度、灵活性、耐久性、SRAM的稳定性和闪存可靠性,并且,大大降低了功耗。 MSP430的超低功耗FRAM产品,包括了FRAM的各种
[单片机]
MSP430FR59x:超低功耗嵌入FRAM <font color='red'>MCU</font>开发方案
16位MCU市场逐渐萎缩:正在重新定义的微控制器
在ARM核心的开放开发环境之下,研发人员利用32位元微控制器(MCU)开发应用的成本逐渐降低,芯片价格亦因为供应商众多而随之下降。尽管如此,8位元MCU具备更低廉的价格,加上低阶应用市场的规模依然庞大,因此,尽管32位元MCU出货量急起直追,仍未超越8位元MCU。相较之下,16位元MCU便成为被8位元与32位元MCU夹杀的产品。 盛群半导体业务行销中心副总经理蔡荣宗认为,以目前全球市场看来,尽管32位元MCU产值较高,然销售数量依然是以8位元MCU为大宗。16位元MCU则处于被夹杀的状态,由于8位元MCU的效能持续提升,目前已足以满足较为低阶的16位元MCU应用需求;32位元MCU的成本逐渐降低,则瓜分了高阶的16位元MCU市场。
[单片机]
GPRS模块与单片机开发的注意事项
单片机微控制器以其体积小、功耗低、使用方便等特点,广泛应用于各种工业、民用的嵌入式系统中;而随着互联网(Internet)的兴起与普及,使微控制 器通过互联网传送数据就变得非常有意义。目前使微控制器上网的解决方案一般有两种:一种是采用微控制器驱动网卡,通过以太网连接Internet;另一种 是使微控制器直接驱动调制解调器(MODEM)通过电话线向ISP拨号上网。这两种方案的缺点在于都要使用有线的网络,无法应用于在边远地区或可移动系统 中。 针对这一问题,提出一种基于GPRS的单片机上网的解决方案,即在单片机中实现PPP协议,并通过驱动GPRS模块经过GPRS无线网连接到 Internet实现上网。这种方案的优点在于:① 覆盖面广
[单片机]
基于PIC18单片机的新颖Bootloader设计
Bootloader是操作系统在内核运行之前运行的一段小程序,其功能主要是完成软硬件设备初始化,建立内存空间映射,从而将系统的软硬件环境带到一个合适的状态,或者加载操作系统映像文件实现系统软件升级,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。   针对PIC18系列单片机,目前市面上仅存在HI-TECH公司提供的Bootloader程序,并且需要借助串口调试助手。本文基于Microchip公司的MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界面
[单片机]
基于PIC18<font color='red'>单片机</font>的新颖Bootloader设计
单片机 液体点滴控制
//==============================200700821=================// //====================从机滴速测量========================// #include reg52.h //====================数据类型定义========================// #define Uchar unsigned char #define Uint unsigned int //====================常量定义============================// Uchar t; Uchar p; U
[单片机]
基于AT89C51单片机直流电机PWM调速程序分享
这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、AT89S51,STC89C51、STC89C52单片机中,单片机晶振采用11.0592M,直流电机由L298集成电路控制,产生的PWM的频率约为91Hz。L298各引脚已在程序中标明,原理图大家可以自己画一下,这里就不具给出。下面是源程序。 #include[reg52.h》//注意请把‘ [ ’换成 “《”,下同。否则编译时会出错。 #include [intrins.h》// #define uchar unsigned char #define uint unsigned int sbit en1=P2^
[单片机]
基于AT89C51<font color='red'>单片机</font>直流电机PWM调速程序分享
基于51单片机的大气压温度检测系统
一.硬件方案 本设计主要通过气压传感器BMP180获得当前位置的温度和大气压值,并通过LCD1602显示。并根据测量值与设置好的阀值进行对比进而控制蜂鸣器与LED灯进行提示使用者。 主要由51单片机+最小系统+LCD1602液晶显示模块+BMP180气压检测模块+AT24C02存储电路+蜂鸣器模块+LED指示灯模块+按键模块;如图: 二.设计功能 (1)本设计采用STC89C51/52、AT89C51/52作为主控芯片,LCD1602实时显示信息,BMP180作为大气压温度传感器。 (2)当所采集到的温度超出设置好的限值时蜂鸣器红色LED灯发出声光提示; (3)当所采集到的气压超出设置好的限值时蜂鸣器绿色LED灯发出声光提
[单片机]
基于51<font color='red'>单片机</font>的大气压温度检测系统
单片机的输入 / 输出( I/O )口
MCS-51单片机有4个双向的8位I/O口的P0~P3口为三态双向口 P1,P2,P3口为准双向口(用作输入时,口线被拉成高电平,所以称为准双向口)。 P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。 P0口还可以用来输出外部存储器的第8位地址。 由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。 P1口是专门供用户使用的I/O口,用户可以利用它作为I/O口线使用。P1口是准双向口。每一位均由锁存器(SFR)、输出驱动器和输入缓冲器组成。 它们的上拉电阻实际上不是线性电阻,而是由场效应管构成 ,每位锁存器均由D触发器组成。 每个I/O口都有两种读入方法:读锁存器和读
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved