您尚未登录。

#1 全志 SOC » 解决f1c100s作为usb gadget时拔插后电脑不识别的问题 » 2021-05-25 15:13:56

Molly
回复: 2

估计很少有人遇到这个问题...芒果派的buildroot里默认开启了mtp,设备用usb线连接电脑上电,确实会有一个mtp设备出现。
问题是,我手上做了一个用锂电池的便携设备,从电脑上断开再连接之后不会出现mtp设备。
后来发现重新连接后重新执行 ls /sys/class/udc/ > /sys/kernel/config/usb_gadget/g1/UDC 后又会识别到设备
于是加一个udev规则和一个脚本解决。


/usr/bin/activate_udc.sh:

   #!/bin/sh                                                                                                                                    
   ls /sys/class/udc/ > /sys/kernel/config/usb_gadget/g1/UDC

/etc/udev/rules.d/99-udc.rules

   ACTION=="change", SUBSYSTEM=="udc", RUN+="/usr/bin/activate_udc.sh"

(我还加了个adb,这样可以愉快的拔掉串口线了

#2 Re: 全志 SOC » 终于搞定f1c100s的i2s输出 » 2021-05-24 09:41:27

illusion 说:

是个牛人。另外这个示波器啥型号啊?

便宜买的,ads5012h,感觉不怎么专业:P

#3 Re: 全志 SOC » 终于搞定f1c100s的i2s输出 » 2021-05-23 17:43:31

44.1kHz那一组采样率(11025 22050 44100 88200 176400)也搞定了
原本是切换采样率时设置mod_clk那边出错,但是代码里并没有dev_err输出错误信息,自己加了行上去后发现错误位置
2021-05-23_17-27.png
解决方法: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);
2021-05-23_17-03.png
听首歌测试测试(图中是flac转成wav的 采样率176400hz,事实上44100等也测试过了)
2021-05-23_17-25.png
顺便把之前设备树里的mclk,fs由256改为128,这样可以最高支持192khz采样率
IMG_20210523_165637.jpg

#4 Re: 全志 SOC » 终于搞定f1c100s的i2s输出 » 2021-05-23 15:07:38

外接dac音质真的比自带codec好多了
不过又发现有些问题,测试的时候播放的是48kHz采样率的wav文件,正常出声
后来尝试用madplay播放mp3文件失败,发现44.1kHz的文件都无法播放
2021-05-23_15-06.png
以及alsamixer里面并没有音量控制,我再研究研究

#5 Re: 全志 SOC » 终于搞定f1c100s的i2s输出 » 2021-05-23 14:58:24

raspberryman 说:
Molly 说:
raspberryman 说:

请问楼主,mclk怎么给呢?

应该是可以的,但我现在用的pcm5102a可以不给mclk
我研究一下,晚点回复你

嗯嗯,我觉得应该和摄像头那个PCLK输出一样。

楼主方便贴一份完整的dts和config吗,有空我也试一试。

测过了,mclk直接有输出,pinctl那边写的PD7就是mclk
IMG_20210523_145220.jpg
dts:
i2s-devicetree.zip

#6 Re: 全志 SOC » 终于搞定f1c100s的i2s输出 » 2021-05-23 14:45:36

raspberryman 说:

请问楼主,mclk怎么给呢?

应该是可以的,但我现在用的pcm5102a可以不给mclk
我研究一下,晚点回复你

#7 全志 SOC » 终于搞定f1c100s的i2s输出 » 2021-05-23 14:11:50

Molly
回复: 30

内核用的是linux5.4.99,是mangopi r1/2/3官网给的buildroot一键编译包
设备树里已经有了i2s0节点,但是需要自己添加pinctl节点
2021-05-23_13-59.png
这里踩过一个坑,function不是写i2s0而是i2s
然后设备树继续添加对应的codec,我这里是pcm5102a
2021-05-23_14-02.png
2021-05-23_14-04.png
直接这样还是不能用,自己测试的时候,拿示波器测量,aplay播放的时候一直是bck和lrck有时钟正常在跑,data上没有数据,aplay一会儿就出现Input/Output Error
2021-05-23_14-08.png
各种查看源码和手册,最后终于找到解决办法:
2021-05-23_14-09.png
sun4i-i2s.c sun4i_i2s_probe函数中两个maxburst = 8改为4即可
因为f1c100s的DDMA和NDMA都各只有4个channel
2021-05-23_14-11.png

#8 Re: 全志 SOC » f1c100s的spi0引脚是否可以换成PD那一组? » 2021-05-17 15:55:01

Quotation 说:

可以用一个IO口接MOS管控制TF卡供电,初始时不给TF卡上电。启动完后Flash就没用了,SPI0改用做SDC1应该没问题。
裸机开发可以做到,UBoot我不了解。

有道理 谢谢大佬!

#9 Re: 全志 SOC » f1c100s的spi0引脚是否可以换成PD那一组? » 2021-05-16 11:52:58

哇酷小二 说:

不可以,只能PC组,BROM内置固件决定的。

好吧 谢谢
板子都做好了(哭)早知道提前发帖问一下
那f1c100s有没有什么可能实现既能sdc0接sdio无线网卡 sdc1接tf卡 spi0接flash启动 spi1接一个串口屏

#10 全志 SOC » f1c100s的spi0引脚是否可以换成PD那一组? » 2021-05-16 11:42:53

Molly
回复: 4

2021-05-16_11-38.png
如图,spi0除了PC0到PC3 貌似还有一组PD18到PD21,如果PD上的spi0接spi flash能否启动?
2021-05-16_11-41.png
尝试在uboot的suniv.dtsi里面改了spi0 pins,结果无法启动,报错如下
2021-05-16_11-42.png
有没有大佬知道怎么解决

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn