RK3399 4G蓝牙通话调试

问题:3399是配ACL5651,系统声音和录音都正常的,现在是要调4G模块通话和蓝牙语音

3288是配5640,

【1】把以下2个APK编译出来
Dialer
Messaging

4G模块通话问题:
在RK3399 7.1平台我们把系统里面的Dialer、Messaging及google服务都编译出来了进行了测试;
Dialer拨号之后就退到了联系人收藏界面;
Messaging发送短信也提示"短信功能已暂停";

【2】下面的属性设置了没?
1、device/rockchip/common/overlay/frameworks/base/core/res/res/values/config.xml:23: <bool name="config_voice_capable">true</bool>
2、device/rockchip/common/overlay/frameworks/base/core/res/res/values/config.xml:167: <bool name="config_sms_capable">true</bool>

【3】RK原厂提供的补丁打上去两端都没有声音;
     (1) 通过adb 打印寄存器:cat d/regmap/1-001a/registers  查看 将打印信息发给codec原厂工程师分析;

     (2) 拨通电话后,通过 adb shell logcat -s alsa_route  查看耳机是通过route 1传输声音的,但在const struct config_control                  rt5651_speaker_normal_controls[] 并没有添加这个通道:
      { //add by begin 
        .ctl_name = "DAC MIXL INF1 Switch",
        .int_val = {on},
    },
    {
        .ctl_name = "DAC MIXR INF1 Switch",
        .int_val = {on},
    },//add by end
    
编译相关库之后,烧录后发现对方可以听到RK3399主板发出的声音,但接听方说话,主拨方无法听到声音;

【4】 把相关log打印出来,CODEC原厂工程师分析是4G 通话不是标配功能,所以寄存器没有配置;然后修改了一下驱动,配置寄存器:

在kernel\sound\soc\codecs\rt5651.c文件中rt5651_bst3_event函数中添加:

@@ -966,14 +930,21 @@ static int rt5651_bst3_event(struct snd_soc_dapm_widget *w,
  struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
 
  switch (event) {

  case SND_SOC_DAPM_POST_PMU:
+  printk("-------libing----4G acl5651 audio in\n");
+  snd_soc_update_bits(codec, RT5651_D_MISC,
+   RT5651_CLK_DET_EN, RT5651_CLK_DET_EN);
   snd_soc_update_bits(codec, RT5651_PWR_ANLG2,
    RT5651_PWR_BST3_OP2, RT5651_PWR_BST3_OP2);
   break;
 
  case SND_SOC_DAPM_PRE_PMD:
+  printk("-------libing----4G acl5651 audio out\n");
   snd_soc_update_bits(codec, RT5651_PWR_ANLG2,
    RT5651_PWR_BST3_OP2, 0);
+  snd_soc_update_bits(codec, RT5651_D_MISC,
+   RT5651_CLK_DET_EN, 0);
   break;
编译烧录测试,双方接听都正常了!

【5】测试发现,短信应用没有显示出来:
   需要到/packages/apps/Messaging 目录下面 mm -B ;如果之前已经./mkimage.sh ota 进行打包的话,需要先./mkimage.sh一下,然后再./mkimage.sh ota 这样的话,Messaging就会显示出来


【6】蓝牙电话 

下行: 蓝牙模块 通过codec的 I2S2--LOUT 送到 4G模块 然后4G发射出去,   

上行:4G模块古来的数据 通过codec  MIC----I2S2 ---蓝牙模块

【7】

新板子可实现功能,播电话时可测得信号,但有杂音
1、MCLK频率是12.28Mhz
2、PCM_CLK的时钟为512K;
3、PCM_SYNC 为8K;

【8】正常调试打印:
(1) 通过adb 打印寄存器:cat d/regmap/1-001a/registers  查看 将打印信息发给codec原厂工程师分析;
(2) 拨通电话后,通过 adb shell logcat -s alsa_route  查看耳机是通过哪个route 传输声音的

【9】杂音问题解析:
  (1)CPU出来的MCLK在播放本地音视频文件有12.28MHz,属于正常状态;但拔通4G电话后切换到了蓝牙模式,这时用示波器量MCLK是没有的,所以切换到蓝牙模式后MCLK被disabled了;
  (2)codec原厂工程师通过调试寄存器分析:杂音问题是因为默认使用了rt5651内部时钟导致的,原理上要使用CPU供出来的MCLK;
  (3)跟RK原厂沟通后,把拔通蓝牙电话CPU出来的MCLK配置为常有,这样就触决了杂音问题;
  (4)经过测试发现:从rt5651出来的声音对方听上去有回音,这个是rt5651芯片本身不带消音功能导致的,如果客户需要此功能要跟客户说明清楚;
  (5)还有一个问题(目前还需要跟RK对接):断电开机拔通蓝牙电话无法跑rt5651_bluetooth_incall_controls,需要多拔打2-3次就可以切换到rt5651_bluetooth_incall_controls;
  
【10】现在蓝牙4G通话调通了
但还有一个问题:每次断电开机拔通蓝牙电话无法跑rt5651_bluetooth_incall_controls,需要多拔打2-3次就可以切换到rt5651_bluetooth_incall_controls

解决:
diff --git a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c
index a2d18ac..5957a76 100755
--- a/tinyalsa_hal/audio_hw.c
+++ b/tinyalsa_hal/audio_hw.c
@@ -298,8 +298,8 @@ static void start_call(struct audio_device *adev)
         goto err_call_in;
     }
 
-    pcm_start(adev->pcm_hfp_out);
-    pcm_start(adev->pcm_hfp_in);
+    pcm_start(adev->pcm_call_out);
+    pcm_start(adev->pcm_call_in);
 
     return;
 
【11】查看声卡:cat /proc/asound/cards

  0 [realtekrt5651co]: realtekrt5651co - realtekrt5651codec_hdmiin
                     realtekrt5651codec_hdmiin
  1 [C920           ]: USB-Audio - HD Pro Webcam C920
                       HD Pro Webcam C920 at usb-fe3c0000.usb-1, high speed
  2 [rkhdmidpsound  ]: rk-hdmi-dp-soun - rk-hdmi-dp-sound
                       rk-hdmi-dp-sound

### 回答1: RK3399芯片是一个高性能、低功耗的处理器芯片,广泛应用于智能手机、平板电脑、嵌入式设备等。其中蓝牙SCO通话是其支持的一项功能。 蓝牙SCO通话是指通过蓝牙无线技术进行语音通话。在RK3399芯片中,它具备了蓝牙4.1版本的支持,因此可以很好地实现蓝牙SCO通话功能。 使用RK3399芯片进行蓝牙SCO通话的步骤如下: 首先,确保设备上已经成功连接了蓝牙耳机或者蓝牙音箱。通过蓝牙设置界面,进行配对连接,确保设备之间成功建立蓝牙连接。 然后,在系统设置中,找到声音设置选项。在声音设置中,选择蓝牙音频设备作为默认的音频输出设备。 接下来,在通话应用中,可以选择蓝牙音频设备作为语音输入输出的通道。在通话过程中,声音就会通过蓝牙耳机或者蓝牙音箱进行传输。 在RK3399的硬件支持下,蓝牙SCO通话可以实现高质量的语音传输,保证通话的清晰度和稳定性。同时,由于蓝牙无线通信的特性,用户可以在一定的范围内自由移动,不会受到传统有线通话的限制。 综上所述,RK3399芯片支持蓝牙SCO通话功能。通过使蓝牙耳机或者蓝牙音箱与设备进行配对连接,并设置为默认音频设备,就可以实现通过蓝牙进行语音通话的功能。这种通话方式可以实现高质量的语音传输,使用户在通话过程中更加自由便利。 ### 回答2: RK3399是一款高性能的处理器芯片,内置了蓝牙模块,因此可以支持蓝牙SCO通话功能。 蓝牙SCO通话指的是使用蓝牙连接进行实时语音通话的功能。使用RK3399蓝牙模块,可以实现与蓝牙耳机、蓝牙扬声器等设备的无线通话。 要使用RK3399进行蓝牙SCO通话,首先需要确保RK3399系统中的蓝牙驱动和协议栈已正确安装和配置。接下来,用户需要将蓝牙耳机或蓝牙扬声器与RK3399设备进行蓝牙配对。一旦配对成功,RK3399便可以与蓝牙设备建立蓝牙链路。 建立蓝牙链路后,用户可以使用相关的应用程序或API来控制蓝牙SCO通话。通常,使用RK3399进行蓝牙SCO通话需要通过命令或调用相应的API来控制麦克风和扬声器的输入与输出。 蓝牙SCO通话的质量和稳定性受多种因素影响,如信号强度、设备间距离以及环境干扰等。为了确保良好的通话体验,需要注意以下几点:保持设备之间的距离尽量不要过远,维持稳定的信号强度;避免干扰源,如电磁辐射或其他蓝牙设备的干扰;确保蓝牙设备的电量充足,以免影响通话质量。 总之,RK3399作为一款高性能处理器芯片,内置的蓝牙模块可以支持蓝牙SCO通话功能。通过正确配置和连接蓝牙设备,用户可以在RK3399上实现无线实时语音通话。 ### 回答3: RK3399是一款集成了蓝牙功能的芯片,它支持SCO(Synchronous Connection-Oriented)通话。SCO通话是一种蓝牙传输模式,它主要用于实时音频数据的传输,比如语音通话RK3399通过蓝牙模块与其他设备进行SCO通话的连接。 要实现蓝牙SCO通话,首先需要确定RK3399蓝牙模块是否支持SCO通话。如果支持,可以通过蓝牙管理软件在RK3399上进行相应的设置。具体步骤可能因不同的蓝牙模块和操作系统而有所差异。 在设置完成后,可以通过蓝牙连接另一个设备,如手机或耳机,以进行SCO通话。这样,RK3399就能够接收来自手机或耳机的实时音频数据,并将其传输到另一端。 需要注意的是,蓝牙SCO通话可能会受到一些因素的影响,如信号强弱、设备间距离等,这可能会导致通话质量的下降或通话中断。因此,保持设备间的良好连接和信号稳定是关键。 总的来说,RK3399作为一款具有蓝牙功能的芯片,可以支持蓝牙SCO通话。通过进行相应的设置和连接其他设备,可以实现实时音频数据的传输,从而进行语音通话等应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值