Xilinx社区
首页 > 技术专栏 > 骁龙820A汽车与智能设备间进行USB音频分享方案介绍
骁龙820A汽车与智能设备间进行USB音频分享方案介绍
来源:车载技术工程师 时间:2017-12-04

随着技术发展,各种智能设备不断涌现,人们就希望汽车能够与这些智能设备进行互联,比如目前普及的智能手机,PAD设备等,达到音视频数据的分享,从而增强汽车的娱乐性。

本文重点介绍一种通过USB将骁龙820A汽车和智能设备连接,进行多种音频分享的方案。
    本方案中骁龙820A汽车作为USB Host端,可以发挥骁龙820A强大的音频处理能力,然后输出到汽车相关音频终端。而智能设备(比如智能手机)通过USB连接到骁龙820A汽车上,此时智能设备是作为USB device端,就可以将智能设备上的各种音频数据通过USB传输给骁龙820A汽车。

对于一个Host,即USB host-controller,可以连接多个外设,并且兼容不同速度的设备。为了让智能设备以USB device接入820A汽车主控端,智能设备需要支持UAC功能,即USB Audio Class设备。如下是USB设备连接逻辑。


Picture1.png


本方案中利用USB音频通道将音频数据传输到主机端。即每一个音频通道是一个USB驱动中为了传输PCM音频流,构造出的USB endpoint,用来独立的传输音频流。当820A接收到PCM数据后,会将之发送给820A上音频codec作处理和播放。

为了让上述USB音频传输达到灵活性和各种音频格式数据各自独立传输,可以通过一条物理USB线路,模拟出多个逻辑USB音频传输通道,每一种USB音频传输通道传输一种格式的音频数据,从而达到各种音频数据独立传输,互不干扰。而骁龙820A汽车可以根据需要从相关USB音频通道获取音频数据,然后做适当处理再输送到音频终端。

下图是方案中主要模块和物理逻辑连接。红色箭头表示数据和控制流。支持音频START,STOP,SUSPEND,RESUME功能。

Picture2.png 

基于上述方案的实施,用户在驾驶骁龙820A汽车时,就可以将智能手机通过USB连接到骁龙820A汽车上,手机就可以将手机上的实时导航音频传输到骁龙820A汽车上。用户同样可以将智能多媒体设备同样的利用USB连接到骁龙820A汽车,多媒体数据同样的可以传输到骁龙820A汽车上加以处理并输出到汽车音频终端上。

当设备连接到820A系统后,会被枚举成为一个USB Audio Class设备,即创建声卡设备和pcm设备,并设置SNDRV_PCM_STREAM_PLAYBACK和SNDRV_PCM_STREAM_CAPTURE接口。应用程序打开声卡设备可以获取到pcm数据流。

static struct snd_pcm_ops uac2_pcm_ops = {

.open = uac2_pcm_open,

.close = uac2_pcm_null,

.ioctl = snd_pcm_lib_ioctl,

.hw_params = uac2_pcm_hw_params,

.hw_free = uac2_pcm_hw_free,

.trigger = uac2_pcm_trigger,

.pointer = uac2_pcm_pointer,

.prepare = uac2_pcm_null,

};
该方案的实现思路比较清晰,而且骁龙820A汽车可以利用普通USB线实现与各种智能设备互联,达到娱乐分享。一条物理USB线路可以模拟出多个逻辑USB音频通路,达到各种音频独立传输,互不干扰。骁龙820A汽车强大音频处理能力,能够同时处理USB链路上的多路音频数据,提升用户娱乐体验。(Qualcomm汽车技术讨论组 QQ群号:566131670)

more汽车电子市场动态
more技术专栏
more专家答疑
问:配置高通pmd9607的mpp管脚, 设置为模拟输入一直量不到电压,请教。
答:需要注意,MPP管脚并不是所有MPP管脚都可以配置的,请参考spec说明,你需要配置的pin有没有限制。通常模拟输入的话,还要配置ANA_IN_CTL等寄存器,需要外接模拟量,然后读取该pin的值的寄存器中HKADC值。
问:专家请指导: sensor厂家给的sensor相关资料(chromatix + lib)是支持前置摄像头的,“支持”主要是我这边验证过前置已经点亮。 后置摄像也用同sensor, 但用这套相关资料就点不亮了。 kernel层确认已经PROBE, 同时在/dev下有media0 media1,请协助该如何完成后置的点亮. p.s: 1. 该板后置如果使用其他sensor,可以点亮前后置摄像头; 2. 将后置摄像头拆卸, 可点亮前置, 不拆卸后置,同样可以点亮前置; 3. 如果前置后置一样, 前后置都点不亮, 但kernel层确认都probe, dev下有camera0,camera1,camera2; 4. 拆卸前置,仅后置, 依然无法点亮, kernel已经probe,dev下有camera0,camera1 针对前后置同sensor, 在sensor_init.c增加2sensor, 分别命名为: sensor, sensor_rear,同时在sensor_Libs目录下增加sensor,sensor_rear目录,主要是针对lib部分, 同时对lib中camera_id和position做对应修改(前:CAMERA_1,1,后: CAMERA_0,0) 写的太多, 一句话说明下问题: 前后置同sensor如何同时点亮前后置sensor, 是否需要修改lib中的参数,如何修改?还是其他问题?
答:从现象描述看,可以从以下几点排查。 1,sensor的配置,通常后置sensor 4lanes,而前置sensor 2lanes。换不同型号的sensor可以点亮,说明这些配置可能没有修改 导致一些问题。 2,重点看下,“拆卸前置,仅后置, 依然无法点亮,dev下有camera0,camera1,”,对比下前后置不同型号 枚举dev也是这样,看看HAL层dumpimage检查图像是否正常。 3,camera id枚举冲突,无法区分两颗相同的sensor,tuning参数调用是否正确。
问:请教专家,UE 链路层怎么样才能主动和NODE B断开。 设备和基站没有OTA log,也不太清楚是什么原因导致的连接断开。
答:可以通过AT命令CREG可以离线和在线网络。不知道是否是您需要的情况。 http://blog.chinaunix.net/uid-149881-id-2780145.html
问:有没有懂高通平台root 和解网络锁的高手?
答:eng和userdebug版本上通过adb root。你是否需要如下的方法么, https://zhidao.baidu.com/question/557640730.html
Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052