基于RK3588平台的智能通信终端音频软硬件设计方案
扫描二维码
随时随地手机看文章
0引言
RK3588是瑞芯微的8K旗舰芯片,采用ARM架构、8 nm先进制程,集成了8核64位架构,最大可配32 GB大内存,支持8K视屏编解码,具有高性能和低功耗等特点[1],主要面向智能视觉、AI计算、边缘计算和高端智能硬件等领域。
智能通信终端系统音频接口复杂,除了传统的CODEC芯片外,还包含很多外接模块,例如蓝牙、天通、自组网、5G、集群、短波等模块。默认的ES8388CODEC只具备一个PCM音频接口,无法同时接入终端音频的PCM接口,本文利用二选一切换开关实现PCM音频数据的路由,仅使用RK3588的两个I2S接口和一个ES8388 CODEC,实现了多模音频的所有功能。
1硬件系统设计
本硬件系统中包含天通、自组网和5G模块,各模块均具有PCM音频接口,其与CODEC和蓝牙的PCM接口相连,可以进行PCM话音通话;与RK3588的PCM接口相连,可以采集音频数据,实现音频数据转发功能。系统框图如图1所示,其中CODEC采用ES8388音频编解码芯片,wi—Fi/蓝牙采用安信可的AIC8800D80模块, 自组网采用辰芯的自组网模块,天通采用华力的天通模块,5G采用海信的MN02 5G模块。
在智能通信终端设计过程中,音频设计是比较重要的一部分,不仅需要考虑到音频应用的功能实现,还需要考虑音频使用场景及场景切换[2],其主要需要支持以下音频模式:支持CODEC主Mic录音、喇叭放音;支持CODEC天通电话;支持CODEC自组网话音;支持CODEC 5G话音;支持蓝牙天通电话;支持蓝牙自组网话音;支持蓝牙5G话音;支持天通话音转发功能;支持自组网话音转发功能;支持5G话音转发功能;支持蓝牙SCO录音放音。
本文采用了硬件开关切换的方式进行系统PCM音频通路的切换,开关型号为ADG794,其开关状态为0时选中S1通路,开关状态为1时选中S2通路。图2为系统PCM音频开关切换图。
根据硬件PCM开关切换图,可以生成真值表如表1所示,软件可以根据功能需求,设置各个开关的状态。
2 软件系统设计
2.1 终端系统PCM声卡创建
表1中11种音频功能可以分成以下3类,需要创建3个声卡设备以实现全部音频功能:
1)PCM声卡设备0:RK3588I2S1DAI<—>ES8388—HifiDAI。
该PCM声卡设备用作本地音频录放,其CPU端音频接口为RK3588的I2S1接口;CODEC端音频接口ES8388的PCM接口。该声卡设备可以实现表1中的功能1。
2)PCM声卡设备1:虚拟CPU DAI <—> ES8388—voiceDAI。
该PCM声卡设备用作话音通话,其CPU端音频接口为5G/天通/自组网模块PCM接口,数据无须经过RK3588处理,为虚拟CPU音频接口;CODEC端音频接口为ES8388的PCM接口。如果要接入蓝牙耳机进行话音通话,只需切换PCM开关即可。该声卡设备可以实现表1中的功能2~7。
3)PCM声卡设备2:RK3588 I2S2 DAI <—> 虚拟CODECDAI。
该PCM声卡设备用作音频数据转发,其CPU端音频接口为RK3588的I2S2接口;CODEC端音频接口为5G/天通/自组网/蓝牙模块的PCM接口,无须设置模块的音频通路,为虚拟CODEC音频接口。话音数据可以在RK3588和各个模块间进行转发。该声卡设备可以实现表1中的功能8~11。
修改声卡驱动源码kernel/sound/soc/rockchip/rockchip—Multicodecs.c,以支持1张声卡3个声卡子设备。首先定义audio/voice/bt的DAILINK定义如图3所示 ,其中COMP—DUMMY为虚拟DAI接 口 ,COMP—EMPTY为空,后续根据需求填充DAI相关信息。
DAI音频接口定义如图4所示,cpus代表cpu端音频接口,codecs代表codec端音频接口,platforMs代表DMA数据传输接口,一般情况下与cpus一致。cpu—np、codec—np、bt—sco—np为解析设备树获取。
dai—link[0]代表声卡子设备0,其中cpus和platforMs为I2S1设备节点,codecs为ES8388设备节点。dai—name用来区分音频驱动的多个音频接口,ES8388音频驱动有两个音频接口ES8323—Hifi和ES8323—voice,如图5所示,其中ES8323—Hifi接口用作高质量音频传输,ES8323—voice接口用作话音通话,仅支持8K、16K采样频率。dai—link[1]代表声卡子设备1,其中cpus和platforms均为虚拟DAI接 口,codecs为ES8323—voiceDAI音频接口。dai—link[2]代表声卡子设备2,其codecs为虚拟DAI接口,cpus和platforms为I2S2设备节点。
dai—link代表一个声卡设备,构建RK3588 Audio、RK3588voice和RK3588BT三个声卡设备如图6所示。
查询系统中声卡设备如图7所示,可以看到cardo声卡有3个声卡子设备,后续可以调用alsa—lib接口访问各个声卡设备。
2.2 蓝牙音频功能实现
蓝牙音频功能,除了创建PCM声卡外,还需要实现蓝牙A2DP和SCO的音频协议。A2DP是一种单向的高级音频分发协议,用于传输高质量音频数据,通常用来播放高品质音乐。SCO是一种双向的窄带语音传输协议,用于传输话音等窄带语音数据,通常用于实时语音通信。SCO方式数据同步,具有实时性,但速率较低[3],主要用于传输话音等对时间同步要求很高的数据通信[4]。
RK3588的Linux系统启用pulseaudio服务来管理系统中的音频设备。pulseAudio的蓝牙后端会监听D—Bus上的Bluez和oFono事件,然后对发现的蓝牙设备自动创建pulseAudio声卡。连接蓝牙耳机后,可以使用命令pactllistcards查看蓝牙声卡设备,如图8所示,该蓝牙声卡包含a2dp—sink和handsfree—head—unit两个配置文件,分别对应蓝牙A2Dp和ScO两种音频模式。
连接蓝牙耳机,进行蓝牙SCO音频录放,其主要过程如下:
1)切换handsfree—head—unit配置。
执行命令pacmdset—card—profilebluez—card.98—B3—EF—8c—DF—BEhandsfree—head—unit,切换配置选项,如图9所示,当前活动配置为handsfree—head—unit,代表配置选项切换成功。
2)设置输入输出设备。
如图10所示 ,执行命令pacmd set—default—sinkbluez—sink.98—B3—EF—8c—DF—BE.handsfree—head—unit设置bluez—sink.98—B3—EF—8c—DF—BE.handsfree—head—unit为当前输出设备。执行命令pacmdlist—sinks查询handsfree输出设备。
如图11所示 ,执行命令pacmdset—default—sourcebluez—source .98—B3—EF—8c—DF—BE .handsfree—head—unit设置bluez—source.98—B3—EF—8c—DF—BE.handsfree—head—unit为当前输入设备。执行命令pacmd list—sources查询handsfree输入设备。
3)蓝牙音频录放。
切换pcM开关到表1功能11(RK3588—蓝牙),利用声卡子设备2进行蓝牙音频回环测试。执行命令arecord—Dplughw:0,2——rate=16000——channels=2——format=S16—LE|aplay-Dplughw:0,2--rate=16000--channels=2 --format=S16—LE,蓝牙耳机输入、输出均正常,音质清晰,且时延较小。
3 结束语
目前智能通信终端的音频方案,虽然器件使用上各有不同,硬件架构也多多少少有些差异,但总的思路区别不是太大[5]。本文以多个ADG794开关来实现天通、自组网、5G、蓝牙和CODEC音频数据的路由,在不替换ES8388 CODEC的基础上,节省了PCM硬件接口,减少了CODEC选型和音频驱动的调试时间。此外,本文还介绍了蓝牙SCO音频的使用方法,使用命令切换SCO模式后,即可实现蓝牙语音通话。
[参考文献]
[1]赵瞳.基于RK3588的8K无线投屏系统软硬件设计[J].电子产品世界,2023,30(8):77-78.
[2]许华.一种移动智能通信终端音频设计方案[J].集成电路应用,2018,35(7):10-13.
[3]詹鹏飞,马兴,陈前斌.蓝牙可视电话系统研究[J].重庆邮电学院学报(自然科学版),2004,16(2):53-56.
[4] 高彦明,杨文红.蓝牙HFP的无线网络语音对讲系统设计[J].单片机与嵌入式系统应用,2019,19(4):46-48.
[5]许华.一种移动智能通信终端音频设计方案[J].集成电路应用,2018,35(7):10-13.
《机电信息》2025年第19期第13篇





