APP下载

基于WiFi的点对点双工音频传输系统

2016-11-26李忠廉

单片机与嵌入式系统应用 2016年10期
关键词:双工点对点外设

李忠廉

(南京邮电大学 通信与信息工程学院,南京 210003)

基于WiFi的点对点双工音频传输系统

李忠廉

(南京邮电大学通信与信息工程学院,南京210003)

WiFi是无线音频传输中较为理想的传输技术,本文介绍了TI公司的CC3200LaunchPad和CC3200BoostPack套件,在此套件平台上以SDK例程为基础编码,调试实现了一种以WiFi为传输媒介的新型的点对点音频双工传输系统。介绍了硬件平台框架、程序的编写,以及程序的设计流程。

WiFi;音频传输方案;CC3200

引 言

无线音频系统应用十分广泛,所使用的技术也呈现多样化。目前常见的无线传输方案包括:红外传输、蓝牙、ZigBee、WiFi。

红外传输方式由于信号接收对于传输路径的方向性要求高、节点的移动性差,因此使用上受到约束。它的音频传输方式的特点是简单可靠,无电磁污染;缺点是传输距离近(<10 m),传输方向性要求高,功耗高,且易受特种光源干扰。蓝牙无线通信技术采用跳频工作方式,成本低,技术成熟,受到大多数厂商的支持与推广,但其最大缺点在于目前大多数蓝牙设备通信距离较短(<10 m),功耗较高。Zig-Bee是一种新兴的短距离、低速率、低功耗无线网络技术,主要用于近距离无线连接,也存在一些不足,诸如传输范围小、数据传输速率低、时延不易确定。WiFi是目前应用最广泛的无线局域网标准,其最高达每秒上百兆比特的传输速率使之成为高品质无线音频传输的理想选择。

1 一种基于CC3200的点对点双工音频传输方案

CC3200是TI推出的内置WiFi连接的微控制器,TI专为物联网的开发与应用设计了这块集成芯片。在这块芯片上集成了高性能的ARM Cortex-M4处理器核和WiFi网络处理器,CC3200的网络通信能力稳定可靠,并拥有完整的安全协议。不仅如此,CC3200平台还提供了完整的开发软件、开发样例、调试工具与文档,是十分理想的开发平台[1]。

Cortex-M4处理器的运行频率为80 MHz,并外接多种外设,包括快速并行接口、SPI、UART串口、I2S等。CC3200拥有一个通用多通道音频串行接口(Mc ASP),为多通道音频应用优化,支持通过两个数据引脚进行立体声传输,发送和接收部分可同步工作。而且CC3200的I2S可以配置成DMA方式传输,DMA传送过程无需CPU,数据可以通过DMA快速的传送,这就节省了CPU资源来做其他操作,为实现点对点双工传输音频提供支撑。

1.1 方案的选型

Simple Link WiFi CC3200 LaunchPad(CC3200LP)是用于CC3200无线微控制器的开发平台。此板使用FTDI器件实现板载仿真,并且包含提供开包即用体验的传感器,可以使用软件开发平台(本文使用CCS)直接将此板连接到PC。CC3200 LaunchPad作为主控模块,通过片内外设接口多通道音频串行接口I2S可以保证音频流准确而低延时的传输。CC3200音频Booster Pack上的TLV320AIC3254拥有立体声DAC 100 dB,ADC 93 dB的性能,立体声输入输出,低噪声干扰PGA,可扩展的编程选项等优势可胜任音频的编解码;与CC3200LP配合使用,即可实现基于WiFi点对点的音频传输系统。故本文采用CC3200LP+CC3200BP搭建起整套解决方案[2]。

1.2 系统总体方案

在这整套系统里,每一套既可当作音频输入,也可当作音频输出,支持同时收发音频流,即点对点双工传输方式,输入的音频流可来自于板载的MIC、MONO_IN或者是Line_IN输入端口。开发板则通过WiFi接收音频数据,再在BP上的Line Out端口输出。套件工作示意图如图1所示。

图1 套件工作示意图

1.3 硬件模块的组成

CC3200LP模块上的主控芯片MCU和CC3200BP上的音频处理芯片TLV320AIC3254主要引脚连接关系如图2所示,其中各部分电路连接都加有0Ω跨接电阻。图中MCLK是从CC3200发出的主控芯片的时钟同步信号, BCLK是音频流时钟信号,WCLK即FSYNC是音频流字节时钟同步信号,SCL是同步串行接口的片选信号,SDA是同步串行接口在I2C总线模式下的数据输入。从CC3200的63号引脚GPIO8输出到TLV320AIC3254的FSYNC的字节时钟信号,同时需将AIC3254上的spi_sel引脚接地,选择其为I2C总线工作模式。

1.4 TI-RTOS

TI-RTOS是TI推出的面向MCU平台、基于抢占式多线程内核的完整实时操作系统 ,此操作系统是在一个名为SYS/BIOS的实时多线程内核基础之上构建的,提供了实时多任务抢占式调度机制,并包含了硬件抽象和实时性能分析,可以有效地优化目标机的内存和CPU使用。在内核层之上,TI-RTOS不仅提供了一套设备驱动,还附加了诸如文件系统、网络层等组件,使开发者可以将精力集中在应用的开发上;另外,TI-RTOS[3]全面集成于TI Code Composer Studio集成型开发环境(IDE),提供电路板支持套件与开发套件,其中就包括TI MCU Launch-Pad等。

图2 CC3200LP和CC3200BP硬件连接图

2 软件调试

CC3200的RTOS采用SYS/BIOS的实时多线程内核,能够利用硬件中断、软件中断、任务线程以及后台任务以不同的优先级完成多重任务。可以对每个系统任务设置调度优先级,利用osi_TaskCreate()可以将任务添加到任务调度列表中,系统内核会根据每个任务的优先级和任务调度列表有秩序的调度任务。因此,将编写的任务代码,设置优先级,任务调度则交给系统内核完成osi_start(),极大地提高了开发效率。系统流程图如图3所示。

图3 系统流程图

2.1 开发版的初始化及其他相关硬件配置

在系统刚上电以后,首先应该进行的是开发板的初始化,包括设置中断向量表、允许处理器中断、允许中断,以及初始化MCU。因为开发板采用的是引脚复用,MCU初始化以后就要进行引脚的复用配置,本套系统中,需要用到I2C总线将DSP音频处理程序加载到TLV320AIC3254中去,还要用GPIO输出到LED灯作为指示,这些GPIO引脚共分为4组(A0,A1,A2,A3),通过每组内的偏移地址即可方便地找到对应引脚。使用I2S的两个音频通道,实现音频的发送和接收。

CC3200的外设时钟默认是没有开启的,这时要是访问外设会引发总线错误,因此在用到每个外设前都要使能相应的外设时钟,其时钟频率是CC3200分频后所得。TI 的SDK中有完整的外设API,只需要找到对应库,就能方便快速地进行开发。

在使能外设时钟以后,就可以对相应的外设进行配置。CC3200的各引脚可以根据预设的模式值选择其复用类型,模式值范围是0~13,要配置每个引脚的功能,查看引脚模式值就可确定。本文中将CC3200的64号引脚和50号引脚分别配置为I2S数据0和数据1通道,其引脚模式值分别为7和6;将53号的模式值选择为2,配置其为I2S时钟引脚,63号引脚模式值为7,配置其为I2S帧同步;将1号引脚和2号引脚配置为引脚模式1,这样就完成I2S的硬件配置。各项主要配置情况如下:

本文使用I2C总线TLV320实现MCU和音频编解码器的通信。I2C总线TLV320使用一根双向串行数据线SDA和一根双向串行时钟线SCL,可实现主、从设备之间的多主串行双向通信通信,电气特性上,SDA上的数据必须在SCL高电平时保持稳定,低电平时可以改变。发送器发送数据后释放SDA,接收器接收数据后必须在SCL低电平时将SDA变为低电平,并在SCL高电平时保持稳定,作为对发送器的应答。

本文使用I2C_IF_Open()、I2C_IF_Read()、I2C_IF_ Write()分别实现对I2C总线的打开、读、写操作。I2C_IF_ Open()函数内部首先重置了I2C总线,然后根据选择设置I2C总线的传输模式,默认情况下采用FAST模式,即400 kbps,本文即采用默认模式。

2.2 网络任务的配置

网络任务程序中数据的封装采用UDP实现,每一个数据包为1024个字节。发送环型缓存的内存大小RECORD_BUFFER_SIZE设置为10个数据报文大小,而接收环型缓存PLAY_BUFFER_SIZE的内存大小设置为70个数据报文大小,以充分保证音频流传输连续性。UDP套接字的数据结构中包括socket文件描述符、client地址包、server地址包、client地址包数据长度、server地址包数据长度。

为了实现点对点传输,程序中将每套系统都配置为STA模式。开发板在上电初期,首先要检测系统是否为STA模式,如果为AP模式,则要等待AP模式退出,最后利用Configure Mode(ROLE_STA)手动配置为STA模式,以保证音频的点对点顺利传输。此外,TI独特的SmartConfig[4]技术允许多个家用设备快速高效地连接到WiFi网络。嵌入式应用通常没有用于输入WiFi网络名称和密码的显示屏或键盘,而SmartConfig技术则为用户提供了将其设备轻松连接到AP的能力。本文中修改common.h文件中的下列信息,项目重建后会生成二进制文件,烧写到Flash以后,利用智能手机上的WiFi-Starter应用即可便捷地将设备连接到AP。

启动网络任务以后,本文设置全局变量g_ulStatus标识网络连接到指定AP与否,当网络连接正在建立时,用LED的闪烁标识;当网络连接建立完成后,用LED的长亮标识。在多次尝试建立连接仍然失败以后,可尝试用SmartConfig技术帮助建立连接。

2.3 音频流的传输接收

配置音频编解码器为AIC3254,音频编解码器采样数据宽度为16位;采样速率为16 k Hz;声道选择为立体声AUDIO_CODEC_STEREO;收发模式选择为收发同时进行I2S_MODE_RX_TX;采用DMA方式传输;配置音频输入为AUDIO_CODEC_MIC_ALL,这样可以从MONO_ IN、LINE_IN以及MIC三个信号源输入音频流;音频输出为AUDIO_CODEC_SPEAKER_ALL,可以从HEADPHONE_LINE和LINE_OUT输出音频流。

音频编解码器初始化以后,就需要对DMA通道进行配置,DMA用来提供在外设和存储器之间或者存储器和存储器之间的批量数据传输。CC3200包含的DMA称为μDMA(微型DMA),具有可乒乓连续数据流存储特性。μDMA的初始化包括允许μDMA时钟,复位μDMA,注册μDMA中断,允许μDMA设置通道控制表;设置通道控制表基址函数中μDMAControlBaseSet(void*pControl T-able),pControl Table是μDMA通道控制表地址指针。μDMA通道控制表包含μDMA通道的pvSrcEnd Addr源结束地址指针,pvDstEnd Addr目的结束地址指针,ulControl通道控制参数,而且通道控制参数包括传输模式、传输项大小等参数,本文中设置传输模式为UDMA_MODE_ PINGPANG乒乓模式。这样系统就可以利用主备用两个通道控制交替进行DMA传输。

此后,本文选择μDMA的32个通道中4号和5号通道,其通道编码为2,分别为I2S_RX和I2S_TX;同时,将音频的发送环型缓存和接收环型缓存区指针分别传递为DMA的PingPang传输发送和接收地址。代码如下:

此后,设置MAP_I2SEnable(I2S_BASE,I2S_MODE_ TX_RX_SYNC),即I2S同步收发音频流,这在硬件及代码上实现了音频流的双向传递。

2.4 编写系统任务调度函数

将音频编解码器和I2S配置完成以后,即可编写任务调度代码,本文要实现将输入音频流数据封装为UDP数据包,经WiFi传输,接收端的解码器再将音频解码输出,因此需要编写网络任务、音频发送任务、音频接收任务。网络任务负责套件和AP的连接,创建UDP套接字服务端以及DNS任务的实现。音频发送任务包括将数据发送到建立的套接字,将数据填充到发送环形缓冲区以及环形缓冲区的管理。音频接收任务包括从接收的套接字中提取到数据,写入到接收环形缓冲区等任务。为了协调三个任务之间的先后顺序,程序设置一个全局变量g_loopback,初始时设置g_loopback为1,表示循环模式还未配置好,在网络任务中,当套件间连接建立起来,套件分别获得合法IP以后,置g_loopback为0,表示可以开始进行音频流的循环收发任务。以下为音频接收任务函数:

结 语

本文利用Simple Link WiFi CC3200平台,与CC3200 BoosterPack结合,在SDK例程基础上编码调试实现了一套利用WiFi传输音频的点对点双工通信系统,为物联网音频流的解决方案提供了一条新的思路。另外,CC3200在物联网方向的能力远不止于此,它还拥有1个SD/ MMC接口,4个通用定时器,8位并行摄像头接口,4通道12位模数转换器,支持16位脉冲宽度调制,这些特性在家庭自动化、安防系统、智能能源、互联网网关、工业控制、智能插座和仪表计量等领域都会有较大范围的应用。

[1]Texas Instruments.CC3200 SimpleLink Wi-Fi and Internetof-Things Solution,a Single-Chip Wireless MCU[EB/OL]. [2016-04].http://www.ti.com/lit/ds/symlink/cc3200. pdf.

[2]Texas Instruments.CC3200 SimpleLink Wi-Fi and Io T Solution,A SingleChip Wireless MCU-Audio Booster Pack User 's Guide[EB/OL].[2016-04].http://www.ti.com.cn/cn/ lit/ug/swru383/swru383.pdf.

[3]Texas Instruments.TI-RTOS 2.14 User’s Guide[EB/OL]. [2016-04].http://www.ti.com/lit/ug/spruhd4j/spruhd4j. pdf.

[4]Texas Instruments.CC3200 SimpleLink Wi-Fi and Internetof Things Solution,a Single Chip Wireless MCU Technical Reference Manual[EB/OL].[2016-04].http://www.ti. com/lit/ug/swru367b/swru367b.pdf.

22

上看,未优化的同步计数器最高跑到465.55 MHz,而优化后可以达到600.96 MHz,速率提高了将近30%。

经过对比可以得到结论,采用并行进位优化方式的同步计数器比未优化的计数器运行速率提高了30%,这对于要求实时性较高的算法而言,具有比较重要的意义。但是速度的提升是以消耗资源为代价的,优化后的算法多使用了25%的逻辑资源。在进行算法设计的过程中,可以根据实际情况来选择使用哪种计数器,不单单只是使用一种,特别是在对资源或者速率要求较高时,要灵活使用。

[1]余孟尝.数字电子技术基础简明教程[M].北京:高等教育出版社,2006.

[2]许雪成.计数器在数字电路中的应用[J].科技创新与应用, 2016(4):299.

[3]司佑全,张学文.计数器竞争冒险及其处理的仿真分析[J].湖北师范学院学报:自然科学版,2015(1):25-28.

[4]杨欣,莱·诺克斯,王玉凤,等.电子设计从零开始[M].2版.北京:清华大学出版社,2010.

[5]黄继昌,王东,程宝平,等.常用数字集成电路应用280例[M].北京:中国电力出版社,2013.

[6]武亚雄.计数器在数字电路中的应用[J].数字技术与应用, 2013(11):61.

[7]徐忠根,蒋琳,王洽峰,等.一种任意进制计数器的快速设计方法探析[J].电子世界,2012(7):133-134.

[8]胡菊芳,熊春如.任意进制同步计数器的优化设计[J].新余高专学报,2005(2):12-14.

[9]陈学雄.同步计数器快速进位电路的设计方法[J].台州学院学报,2003(6):40-42.

[10]夏高峰,薛焱.基于MATLAB-Modelsim-ISE/Quartus的FPGA联合开发设计[J].航空电子技术,2014(3):5-11.

钟强(硕士研究生)、刘鹏飞(工程师),主要研究方向为数字信号处理应用。

Peer-to-peer Duplexing Audio Transmission System Based on WiFi

Li Zhonglian

(College of Telecommunications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210003,China)

WiFi is an ideal technology for the wireless audio transmission,the CC3200LaunchPad and CC3200BoostPack kits are introduced.In the paper,taking the SDK routine as the basic encoder,a new point audio duplex transmission system with WiFi transmission medium is achieved.The construction of hardware platform,the realization of software program and design process are introduced.

WiFi;audio transmission scheme;CC3200

TP368

A

(责任编辑:杨迪娜2016-04-18)

(责任编辑:薛士然2016-06-15)

猜你喜欢

双工点对点外设
“点对点”帮2万名农民工返岗
自适应多中继选择系统性能分析
OptiX155622H设备点对点以太网透传业务故障分析
社会工作和高校思政工作联动的理论与实践
双工模式引发网络故障
便携式点对点可见光通信终端的实验研究
中波自立塔天馈系统双工网络的设计和调试
点对点红外通讯装置的设计
Microchip推出具备双ADC外设的全新器件,扩展其低成本8位PIC®单片机产品线
贴身呵护 必不可少的PSP外设