全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > RF/无线技术 >

博文 | Biu~笔记:高通蓝牙ADK(36)--第三类mic

时间:2022-09-07 10:09

人气:

作者:admin

标签: 蓝牙 

导读:Bui~LEaudio完整协议公布了,可喜可贺,可喜可贺。那么这篇我们就,还是没什么可聊的→_→。目前ADK相关完整版本还没发布,source也没有可用的,所以,先放着吧。这篇我们来聊聊第三...

Bui~ LE audio完整协议公布了,可喜可贺,可喜可贺。那么这篇我们就,还是没什么可聊的→_→。目前ADK相关完整版本还没发布,source也没有可用的,所以,先放着吧。

这篇我们来聊聊第三者,从前我们的mic基本上都是用模拟的或是数字的。有些厂商不满足当前mic的功能(说人话就是不满足cvc的功能),因此他们会叫外卖——加外置的DSP,去新增自己想要的音频处理。外置DSP输出方式大部分都是用i2s接口,而代码并没有接纳这第三种接口,基本上都要自己修改代码去实现。_(:з)∠)_ 随着时间的推进,现实总得要接受的。在新的芯片系列中,引进了骨传导的cvc,而对应的骨传导音频接口的实现代码也被加入到ADK中,另外这部分代码也被同步到304x系列的ADK中了⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄。虽然默认代码是用PCM接口,但是稍微修改下就可以适配其他类型的音频接口。下面就带大家怎么去使用起来。

首先,默认的接口是用INCLUDE_LIS25BA_ACCELEROMETER这个宏定义,搜索这个宏定义就知道他使用了什么东西了。其中我们先看这里面mic的配置

56a4bf84-2d63-11ed-9ade-dac502259ad0.png

这里面框出来的mic type相对于以前的analog和digital,只是多加了个pcm。如果你不是pcm接口的话,可以自己添加一个定义,然后修改对应的处理,这里小编比较懒,直接用这个pcm,然后修改他的处理(建议大家勤奋点,多加一个定义)。后面两个参数instance和channel我就不多说了,懂的都懂。

接着就是要修改对应配置的处理代码,在获取source的时候,pcm的类型是获取pcm的source的,如果是别的音频接口就需要修改getAudioSource这里

56bd4c84-2d63-11ed-9ade-dac502259ad0.png

我是用i2s接口,就换成AUDIO_HARDWARE_I2S,后面的instance和channel就是沿用上面的配置。获取到source之后,对source的配置也需要跟着修改。因为不同类型的source,对应的配置key是不一样的,这个要在AudioPcmCommonConfigureSource中修改

56bd4c84-2d63-11ed-9ade-dac502259ad0.png

(可以看到,直接修改看起来比较乱也不好管理(#^.^#),所以大家选择添加的方式)

另外这里面用到两个callback的函数,一个是获取配置的,一个是初始化的。接下来我们就要说说这些callback函数怎么弄。

在EarbudInit_StartInitialisation函数中有个AudioPcmCommonRegisterUser(&Peripherals_Lis25baRegistry),这个语句就是用来注册callback函数的,参数Peripherals_Lis25baRegistry中,我们只关注其中的callback有哪些。

570d3cd0-2d63-11ed-9ade-dac502259ad0.png

AudioPcmCommonGetPcmInterfaceSetting:这个是用来获取config的函数,这里是pcm参数的配置。如果不是pcm,可以不用,直接在代码中固定,或者修改,或者添加别的参数格式。

AudioPcmCommonInitializeI2cInterface:这是控制接口的初始化,有些ic需要额外控制接口去写指令,这里就需要事先把这接口初始化,还可以把外部ic也初始化。虽然变量名写的是i2c,但是实际使用时,根据情况可以换成spi,uart等别的控制接口,或者不用也可以。

AudioPcmCommonEnableDevice和AudioPcmCommonDisableDevice:这两个函数就是用来打开和关闭外部ic的,通过上面初始化的接口,给ic发送控制指令。注册完这些函数之后,系统就会在通话建立时,自动初始化、配置、使能外部ic,在通话结束时,关闭外部ic。

除此之外,当外部ic的输入采样率和系统通话时用的不一样的时候,例如,输入是48k,而通话只需要16k。还可以对其进行重采样,这个在默认代码kymera_ConnectUserWithMic函数中也有实现的,这里输入采样率固定为16k,如果系统不是用16k就进行重采样。

572f9e06-2d63-11ed-9ade-dac502259ad0.png

好了,以上是本期博文的全部内容,如有疑问就别在博文下方评论留言了,有什么疑问或想了解的当面和我说(如果你知道我是谁的话ヽ( ̄▽ ̄)و),我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信