[RK3399][Android7.1] 除錯筆記 --- I2S1工作輸出是12MHz問題
阿新 • • 發佈:2018-11-19
Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
現象:
使用I2S1通道,測量到的I2S MCLK是12MHz.
理論上應該是11.288MHz.
原因:
rk3399平臺有三路I2S(其中一路內部使用,可以不管),但是MCLK只有一個,也就是說兩路I2S只有一路能佔用。而預設的sdk中,I2S1輸出時,使用的是I2S0的MCLK,I2S0預設是12MHz。
因此會看到clk_summary中I2S1是11.28MHz,但是最終輸出的是12MHz.
rk3399_mid:/ # cat /d/clk/clk_summary | grep i2s cat /d/clk/clk_summary | grep i2s clk_i2s2_div 0 0 0 0 0 clk_i2s2_frac 0 0 0 0 0 clk_i2s1_div 1 1 800000000 0 0 clk_i2s1_frac 1 1 11289600 0 0 clk_i2s1_mux 1 1 11289600 0 0 clk_i2s1 2 2 11289600 0 0 clk_i2s0_div 0 0 800000000 0 0 clk_i2s0_frac 0 0 40000000 0 0 hclk_i2s2 0 0 100000000 0 0 hclk_i2s1 2 2 100000000 0 0 hclk_i2s0 1 2 100000000 0 0 clk_i2sout 1 1 0 0 0 clk_i2s2_mux 0 0 0 0 0 clk_i2s2 0 0 0 0 0 clk_i2s0_mux 0 1 0 0 0 clk_i2s0 0 1 0 0 0 clk_i2sout_src 0 0 0 0 0
從CRU的暫存器也可以確認,使用的是I2S0 MCLK.
rk3399_mid:/ # io -4 -l 0x10 0xff760170
ff760170: 00000380 00000180 00000300 00000000
驗證方法:
clk mux 選擇從I2S1 輸出
io -4 0xff76017c 0x10001