Firefly开源社区

标题: rk3308产生i2s时钟问题 [打印本页]

作者: 缘起的风    时间: 2020-10-9 20:56
标题: rk3308产生i2s时钟问题
运行eq_drc_process的应用程序,运行正常,log如下:
# ./eq_drc_process
WAKE_LOCK[open_file_descriptors] fatal error opening "/sys/power/wake_lock": No such file or directory

==========EQ/DRC process release version 1.23===============
snd_pcm_open
snd_pcm_hw_params_malloc
snd_pcm_hw_params_any!
snd_pcm_hw_params_set_access!
snd_pcm_hw_params_set_format
channels = 2
bufferSize = 20480
periodSize = 1024
Rate = 48000
Open record device done
Open PCM: fake_play
[ 7736.090919] rockchip_i2s_tdm_set_sysclk:dir=tx ,sysclk=12288000, trcm=0x10000000
[ 7736.090967]  rk_aif1_hw_params:snd_soc_dai_set_sysclk ok!
[ 7736.091246] rockchip_i2s_tdm_hw_params:mclk_rate=12288000,bclk_rate=3072000,fs=48000,div_bclk=4,div_lrck=64
[ 7736.091272] rockchip_i2s_tdm_hw_params:channel=2, bit=16
interleaved mode
snd_pcm_hw_params_alloca
interleaved mode
format successed
channels = 2
setting sampling rate (48000)
write_bufferSize = 4096
write_periodSize = 1024
rk eq_drc v2.02 2019-07-20 Oct 11 2019 09:26:56
psEqualizer->m_pfControlValue = 0.000000
open write device is successful
WAKE_LOCK[RK_acquire_wake_lock] id=eq_drc_process
param_name = /data/cfg/eq_bin/Para_48000Hz_2ch.bin
EQ/DRC Algorithm 3BAND_IIR_DIVFREQ PEAK VALUE V1.0...Oct 11 2019 09:26:56
GetLMTVersion v1.03 2019-10-10 Oct 11 2019 09:26:57,force=0 firstInit=1

但是,我要产生8k采用率的话,修改Rate=8000后,运行异常,log如下:
# ./eq_drc_process
WAKE_LOCK[open_file_descriptors] fatal error opening "/sys/power/wake_lock": No such file or directory

==========EQ/DRC process release version 1.23===============
snd_pcm_open
snd_pcm_hw_params_malloc
snd_pcm_hw_params_any!
snd_pcm_hw_params_set_access!
snd_pcm_hw_params_set_format
channels = 2
bufferSize = 20480
periodSize = 1024
Rate = 8000
Open record device done
Open PCM: fake_play
[ 7939.417371] rockchip_i2s_tdm_set_sysclk:dir=tx ,sysclk=12288000, trcm=0x10000000
[ 7939.417426]  rk_aif1_hw_params:snd_soc_dai_set_sysclk ok!
[ 7939.417699] rockchip_i2s_tdm_hw_params:mclk_rate=12288000,bclk_rate=3072000,fs=48000,div_bclk=4,div_lrck=64
[ 7939.417725] rockchip_i2s_tdm_hw_params:channel=2, bit=16
interleaved mode
snd_pcm_hw_params_alloca
interleaved mode
format successed
channels = 2
setting sampling rate (8000)
write_bufferSize = 682
write_periodSize = 170
rk eq_drc v2.02 2019-07-20 Oct 11 2019 09:26:56
psEqualizer->m_pfControlValue = 0.000000
open write device is successful
WAKE_LOCK[RK_acquire_wake_lock] id=eq_drc_process
param_name = /data/cfg/eq_bin/Para_8000Hz_2ch.bin
copy eq_bin...
AudioPost_Init fopen failed, pcParaName = /data/cfg/eq_bin/Para_8000Hz_2ch.bin
Segmentation fault

请问。除了修改Rate=8000,还需要修改什么吗?
作者: 缘起的风    时间: 2020-10-9 20:59
补充:
[ 7939.417371] rockchip_i2s_tdm_set_sysclk:dir=tx ,sysclk=12288000, trcm=0x10000000
[ 7939.417426]  rk_aif1_hw_params:snd_soc_dai_set_sysclk ok!
[ 7939.417699] rockchip_i2s_tdm_hw_params:mclk_rate=12288000,bclk_rate=3072000,fs=48000,div_bclk=4,div_lrck=64
[ 7939.417725] rockchip_i2s_tdm_hw_params:channel=2, bit=16
从这个log看,修改rate=8k后,产生的还是48k的采用率。
作者: zyk    时间: 2020-10-10 10:32
录制音频可以加参数指定采样率;8Khz下eq_drc_process运行异常是没有/data/cfg/eq_bin/Para_8000Hz_2ch.bin文件,可以参考docs/tool/Rockchip_RK3308_User_Manual_Linux_Audio_EQ_TOOL_CN.pdf的使用,也可以粗暴地将Para_48000Hz_2ch.bin改名为Para_8000Hz_2ch.bin让程序运行通过
作者: 缘起的风    时间: 2020-10-10 12:02
zyk 发表于 2020-10-10 10:32
录制音频可以加参数指定采样率;8Khz下eq_drc_process运行异常是没有/data/cfg/eq_bin/Para_8000Hz_2ch.bin ...

你好,将Para_48000Hz_2ch.bin改名为Para_8000Hz_2ch.bin后,程序是可以跑过了。但是测出来的采样率还是48K。我的需求就是RK3308上电后,一直提供8k的时钟。文档我待会在细看下。
作者: 缘起的风    时间: 2020-10-10 14:34
zyk 发表于 2020-10-10 10:32
录制音频可以加参数指定采样率;8Khz下eq_drc_process运行异常是没有/data/cfg/eq_bin/Para_8000Hz_2ch.bin ...

请问下,还需要修改其他参数吗?
作者: zyk    时间: 2020-10-10 15:06
1、请问使用的是哪一个板型
2、你那边如何测试采样率是48K或8K,是要开机后录音时默认使用8K采样率?
作者: 缘起的风    时间: 2020-10-12 11:16
zyk 发表于 2020-10-10 15:06
1、请问使用的是哪一个板型
2、你那边如何测试采样率是48K或8K,是要开机后录音时默认使用8K采样率?

你好;
1.采用的是参照EVB_rk3308_V13设计的自研板。
2.系统起来后,测量RK3308的BCLK和WCLK引脚,测试的采样率是48K。不过这您可以暂时先不管,因为我把eq_drc的进程关掉以后,时钟就没了。所以肯定就是eq_drc的应用程序产生的时钟。我的需求就是想要eq_drc产生8K的时钟,而不是48K
还有另外的测量方法:就是通过上面发的log信息
[ 7939.417371] rockchip_i2s_tdm_set_sysclk:dir=tx ,sysclk=12288000, trcm=0x10000000
[ 7939.417426]  rk_aif1_hw_params:snd_soc_dai_set_sysclk ok!
[ 7939.417699] rockchip_i2s_tdm_hw_params:mclk_rate=12288000,bclk_rate=3072000,fs=48000,div_bclk=4,div_lrck=64
[ 7939.417725] rockchip_i2s_tdm_hw_params:channel=2, bit=16
这个信息和我测量引脚的时钟是一致的。
请问,是还有什么地方没有配置到位吗?
作者: zhangdexingzdx    时间: 2020-10-12 11:50
缘起的风 发表于 2020-10-12 11:16
你好;
1.采用的是参照EVB_rk3308_V13设计的自研板。
2.系统起来后,测量RK3308的BCLK和WCLK引脚,测试 ...

可以看下etc下asound.conf 文件对你是否有帮助
作者: zyk    时间: 2020-10-12 20:10
本帖最后由 zyk 于 2020-10-12 20:11 编辑
缘起的风 发表于 2020-10-12 11:16
你好;
1.采用的是参照EVB_rk3308_V13设计的自研板。
2.系统起来后,测量RK3308的BCLK和WCLK引脚,测试 ...

你好:
您的意思是系统启动后运行eq_drc程序时测量BCLK和WCLK引脚是48K采样率是吧,请问采样率是通过示波器去测量的吗,将eq程序改成8K启动后,示波器测试结果仍旧是48k?
作者: 缘起的风    时间: 2020-10-12 20:37
zyk 发表于 2020-10-12 20:10
你好:
您的意思是系统启动后运行eq_drc程序时测量BCLK和WCLK引脚是48K采样率是吧,请问采样率是通过示 ...

是的,运行eq_drc程序是48K采样率,位时钟是3.072M;改成8K,也没用。
然后我用aplay播放自己制作的8K音频文件,测出来的就是8K,512K。
作者: 缘起的风    时间: 2020-10-12 20:46
zyk 发表于 2020-10-12 20:10
你好:
您的意思是系统启动后运行eq_drc程序时测量BCLK和WCLK引脚是48K采样率是吧,请问采样率是通过示 ...

也有可能我8K没有配置正确,有什么建议吗?
作者: zyk    时间: 2020-10-14 16:21
本帖最后由 zyk 于 2020-10-14 16:22 编辑

上一楼提及过etc下asound.conf 文件,将pcm.real_playback 的设置调整一致试一下




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1