内核用的是linux5.4.99,是mangopi r1/2/3官网给的buildroot一键编译包
设备树里已经有了i2s0节点,但是需要自己添加pinctl节点
这里踩过一个坑,function不是写i2s0而是i2s
然后设备树继续添加对应的codec,我这里是pcm5102a
直接这样还是不能用,自己测试的时候,拿示波器测量,aplay播放的时候一直是bck和lrck有时钟正常在跑,data上没有数据,aplay一会儿就出现Input/Output Error
各种查看源码和手册,最后终于找到解决办法:
sun4i-i2s.c sun4i_i2s_probe函数中两个maxburst = 8改为4即可
因为f1c100s的DDMA和NDMA都各只有4个channel
离线
请问楼主,mclk怎么给呢?
离线
raspberryman 说:请问楼主,mclk怎么给呢?
应该是可以的,但我现在用的pcm5102a可以不给mclk
我研究一下,晚点回复你
嗯嗯,我觉得应该和摄像头那个PCLK输出一样。
楼主方便贴一份完整的dts和config吗,有空我也试一试。
离线
Molly 说:raspberryman 说:请问楼主,mclk怎么给呢?
应该是可以的,但我现在用的pcm5102a可以不给mclk
我研究一下,晚点回复你嗯嗯,我觉得应该和摄像头那个PCLK输出一样。
楼主方便贴一份完整的dts和config吗,有空我也试一试。
测过了,mclk直接有输出,pinctl那边写的PD7就是mclk
dts:
i2s-devicetree.zip
离线
好评好评! 我也以为 F1C 和 S3一样没有MCLK引脚, 结果还真有.
S3手册V0.2: Allwinner_S3_Datasheet_V0_2.pdf
F1C100s手册: F1C100s_Datasheet_V1_0.pdf
离线
44.1kHz那一组采样率(11025 22050 44100 88200 176400)也搞定了
原本是切换采样率时设置mod_clk那边出错,但是代码里并没有dev_err输出错误信息,自己加了行上去后发现错误位置
解决方法:drivers/clk/sunxi-ng/ccu-suniv-f1c100s.c 找到static SUNXI_CCU_MUX_WITH_GATE(i2s_clk, "i2s", i2s_spdif_parents, 0x0b0, 16, 2, BIT(31), 0);
修改为static SUNXI_CCU_MUX_WITH_GATE(i2s_clk, "i2s", i2s_spdif_parents, 0x0b0, 16, 2, BIT(31), CLK_SET_RATE_PARENT);
听首歌测试测试(图中是flac转成wav的 采样率176400hz,事实上44100等也测试过了)
顺便把之前设备树里的mclk,fs由256改为128,这样可以最高支持192khz采样率
离线
赞,可以做高品质的音乐播放器了
离线
是个牛人。另外这个示波器啥型号啊?
离线
illusion 说:是个牛人。另外这个示波器啥型号啊?
便宜买的,ads5012h,感觉不怎么专业:P
感觉还可以,正点原子家的那个便携式示波器DS100,感觉也还不错。
唯有爱与科技不可辜负。
知乎专栏:IAMLIUBO的神奇物联网之旅
博客园:IAMLIUBO
Gayhub: IAMLIUBO
离线
大佬,有没有完整的设备树
离线
要用F1C200S,采集ADV7611的音频,看了文章,受益匪浅
离线
大佬,我正在学习,完整的配置文件能放一下百度网盘吗?万分感谢!!!
离线
厉害啊,可以外接coder了
离线
你好,楼主,我使用的也是芒果派R3;
只按你的设备树配置了,其他都没动;i2s并没有成功,请问还需要改其他地方的配置吗?
本人首次接触,希望能解惑,万分感谢!
离线
大佬,我正在学习,完整的配置文件能放一下百度网盘吗?万分感谢!!!
离线
今天试了一下,I2S OK,我用的pe组,楼上没反应的 需要在内核把pcm5102驱动勾上...
离线
大佬,我正在学习,完整的配置文件能放一下百度网盘吗?万分感谢!!!
大佬,同求啊!
离线
今天试了一下,I2S OK,我用的pe组,楼上没反应的 需要在内核把pcm5102驱动勾上...
果然管用!
离线