完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
< >
首先交代下运行环境: RK3288 + Android5.1 mid版本 原来开发主板用的音频Codec是RT5631,现在板子上换了RT5640,拿到板子后首先Google一把,收到了CSDN的文章,按他的说法是RT3224和RT5640是pin2pin的,软硬件完全兼容,使用RT3261的驱动即可,我实际在Android5.1上测试不行。于是还是使用了RT5640试了下,发现有有声音,一路没有声音。修改过程记录如下: 1.修改配置 路径内核/ arch / arm / configs / rockchip_defconfig: CONFIG_SND_RK_SOC_RT5640 = y 2.添加DTS 路径kernel / arch / arm / boot / dts / rk3288-tb_8846.dts: rockchip-rt5640 { status = "okay"; compatible = "rockchip-rt5640"; dais { dai0 { audio-codec = <&rt5640>; audio-controller = <&i2s>; format = "i2s"; //continuous-clock; //bitclock-inversion; //frame-inversion; //bitclock-master; //frame-master; }; dai1 { audio-codec = <&rt5640>; audio-controller = <&i2s>; //format = "i2s"; format = "dsp_a"; //continuous-clock; bitclock-inversion; //frame-inversion; //bitclock-master; //frame-master; }; }; }; &i2c2 { status = "okay"; rt5640: rt5640@1c { compatible = "rt5640"; reg = <0x1c>; codec-en-gpio = <1>;//sdk default high level spk-num= <2>; modem-input-mode = <1>; lout-to-modem_mode = <1>; spk-amplify = <2>; playback-if1-data_control = <0>; playback-if2-data_control = <0>; status = "okay"; }; }; 编译完成后烧写进去IN1P IN1N可以出声音了,但是IN2P IN2N死活没有声音,经过2天读RT5640数据表,终于搞定了问题,需要在kernel / sound / soc / codecs / rt5640.c里面做如下修改: static struct rt5640_init_reg init_list[] = { {RT5640_GEN_CTRL1 , 0x3f01},//fa[12:13] = 1'b; fa[8~11]=1; fa[0]=1 {RT5640_ADDA_CLK1 , 0x1114},//73[2] = 1'b {RT5640_MICBIAS , 0x3030},//93[5:4] = 11'b ..... .... {RT5640_REC_L2_MIXER , 0x007d},//Mic1 -> RECMIXL // {RT5640_REC_R2_MIXER , 0x007d},//Mic1 -> RECMIXR // close by lwx // {RT5640_REC_L2_MIXER , 0x006f},//Mic2 -> RECMIXL {RT5640_REC_R2_MIXER , 0x006f},//Mic2 -> RECMIXR // open by lwx {RT5640_STO_ADC_MIXER , 0x3020},//ADC -> Sto ADC mixer ..... ..... 修改完成后IN2P IN2N也可以输入声音了。 3.调试技巧 调试工具就是tinycap tinymix tinyplay编译进入android系统即可 #采集声音 tinycap test.wav #播放声音 tinyplay test.wav #控制并改特定的寄存器 tinymix 还有2个超级有用的命令,可以实时修改codec的寄存器,可写,对于调试codec来说实在太方便了。 #读寄存器 cat sys/kernel/debug/asoc/RK_RT5640/rt5640.2-001c/codec_reg #写寄存器 echo '01 007D' > sys/kernel/debug/asoc/RK_RT5640/rt5640.2-001c/codec_reg |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
rk1126实现BT601输入,输入不带IIC接口的驱动程序
1394 浏览 0 评论
1323 浏览 1 评论
2426 浏览 3 评论
RK3568 Android11让系统ntp校准时间生效,需要设置些什么
3161 浏览 1 评论
5188 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 07:57 , Processed in 0.442605 second(s), Total 40, Slave 34 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号