1

主题

1

好友

91

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
1031913
帖子
100
精华
0
经验
91 点
金钱
89 ¥
注册时间
2023-3-6
发表于 2026-4-29 15:16 | 显示全部楼层
支持楼主的回归

1

主题

0

好友

4

积分

注册会员 当前离线

Rank: 2

UID
1158059
帖子
3
精华
0
经验
4 点
金钱
2 ¥
注册时间
2026-4-28
发表于 2026-4-29 17:31 | 显示全部楼层
今天报到

1

主题

0

好友

4

积分

注册会员 当前离线

Rank: 2

UID
1158059
帖子
3
精华
0
经验
4 点
金钱
2 ¥
注册时间
2026-4-28
发表于 2026-4-29 17:34 | 显示全部楼层
楼主的贴子 ,拜读后,受教

1

主题

0

好友

6

积分

注册会员 当前离线

Rank: 2

UID
914637
帖子
5
精华
0
经验
6 点
金钱
4 ¥
注册时间
2021-8-1
发表于 2026-5-3 01:57 | 显示全部楼层
谢谢楼主分享

1

主题

0

好友

3

积分

注册会员 当前离线

Rank: 2

UID
1158431
帖子
2
精华
0
经验
3 点
金钱
1 ¥
注册时间
2026-5-4
发表于 2026-5-7 15:42 | 显示全部楼层
谢谢分享,学习一下

109

主题

1

好友

808

积分
     

认证会员 当前离线

arbore.blog.163.com

Rank: 4

UID
12285
帖子
1487
精华
0
经验
808 点
金钱
668 ¥
注册时间
2006-9-12

认证会员

发表于 2026-5-7 18:15 | 显示全部楼层
过来学习。

1

主题

0

好友

34

积分

注册会员 当前离线

Rank: 2

UID
1036550
帖子
38
精华
0
经验
34 点
金钱
32 ¥
注册时间
2023-3-22
发表于 2026-5-7 22:47 | 显示全部楼层
很好的技术贴,感谢分享!

23

主题

0

好友

52

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
810225
帖子
120
精华
0
经验
52 点
金钱
42 ¥
注册时间
2016-3-4
发表于 2026-5-9 16:36 | 显示全部楼层
想做9039 找到资料了

1

主题

0

好友

3

积分

注册会员 当前离线

Rank: 2

UID
1147222
帖子
6
精华
0
经验
3 点
金钱
1 ¥
注册时间
2025-12-16
发表于 2026-5-9 23:49 | 显示全部楼层

感谢分享!

2

主题

0

好友

155

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
1246
帖子
111
精华
0
经验
155 点
金钱
101 ¥
注册时间
2004-8-18
发表于 2026-5-15 13:41 | 显示全部楼层

感谢分享!

15

主题

4

好友

409

积分
     

业余侠客 当前离线

Rank: 4

UID
5606
帖子
378
精华
0
经验
409 点
金钱
319 ¥
注册时间
2005-9-17
发表于 2026-5-19 19:22 | 显示全部楼层
伟大的楼主,谢谢分享

7

主题

1

好友

428

积分

业余侠客 当前离线

Rank: 4

UID
585925
帖子
434
精华
0
经验
428 点
金钱
414 ¥
注册时间
2013-4-23
发表于 2026-5-29 00:40 | 显示全部楼层
发烧求败 发表于 2026-3-11 17:06
会写程序的都是高手

这种所谓程序都是小儿科。现在用ai写,这种驱动分分钟给你写出来。都是Vibe coding时代了。

1

主题

0

好友

6

积分

注册会员 当前离线

Rank: 2

UID
1151535
帖子
5
精华
0
经验
6 点
金钱
4 ¥
注册时间
2026-2-4
发表于 2026-5-29 11:30 | 显示全部楼层
源码都开源,楼主功德无量!!!!

53

主题

13

好友

1990

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
1388
帖子
2012
精华
0
经验
1990 点
金钱
1722 ¥
注册时间
2004-9-3
发表于 2026-5-29 14:31 | 显示全部楼层
非常感谢!

0

主题

0

好友

104

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
388751
帖子
110
精华
0
经验
104 点
金钱
104 ¥
注册时间
2011-8-31
发表于 2026-5-29 15:08 | 显示全部楼层
前来向高手学习!

54

主题

10

好友

1294

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
866780
帖子
1245
精华
0
经验
1294 点
金钱
1169 ¥
注册时间
2019-9-27
发表于 2026-5-31 17:40 | 显示全部楼层


可惜 es9038q2m 的 programmable numerically controlled oscillator 这个高级功能 es9039q2m 欠奉了,真不知道 ess 的开发团队怎么想的,或者够功力用它的烧友太少了。












78

主题

49

好友

1万

积分
     

贵宾 当前在线

Rank: 3Rank: 3

UID
111707
帖子
13042
精华
3
经验
13486 点
金钱
12900 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2026-6-1 10:25 | 显示全部楼层
eslei 发表于 2026-5-31 17:40
可惜 es9038q2m 的 programmable numerically controlled oscillator 这个高级功能 es9039q2m 欠奉了, ...

怎么? 难道你还想手动配置 PNCO?  

54

主题

10

好友

1294

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
866780
帖子
1245
精华
0
经验
1294 点
金钱
1169 ¥
注册时间
2019-9-27
发表于 2026-6-1 12:39 | 显示全部楼层
jacksl528 发表于 2026-6-1 10:25
怎么? 难道你还想手动配置 PNCO?




看明白的烧友不多,但一定有您,

snd_soc_component_write(component, ES9038Q2M_INPUT_CONFIG, iface);

        switch(params_rate(params))
        {
                case 8000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x2D);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x3E);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x05);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 11025:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0xB0);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x39);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x07);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 16000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x5B);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x7C);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x0A);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 22050:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x60);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x73);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x0E);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 32000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0xB6);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xF8);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x14);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 44100:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0xC1);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xE6);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x1C);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 48000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x10);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x75);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x1F);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 88200:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x81);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xCD);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x39);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 96000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x21);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xEA);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x3E);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 176400:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x02);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x9B);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x73);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 192000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x41);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xD4);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x7D);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 352800:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x05);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x36);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0xE7);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 384000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x82);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xA8);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0xFB);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
                        break;
                case 705600:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x09);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x6C);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0xCE);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x01);
                        break;
                case 768000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x05);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x51);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0xF7);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x01);
                        break;
                case 1411200:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x12);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xD8);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x9C);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x03);
                        break;
                case 1536000:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x0A);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0xA2);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0xEE);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x03);
                        break;
                default:
                        snd_soc_component_write(component, ES9038Q2M_NCO_0, 0x00);
                        snd_soc_component_write(component, ES9038Q2M_NCO_1, 0x00);
                        snd_soc_component_write(component, ES9038Q2M_NCO_2, 0x00);
                        snd_soc_component_write(component, ES9038Q2M_NCO_3, 0x00);
        }
        return 0;


这是 9038q2m 刚发布不久我为 100MHz crystal freq 计算的,一直用到现在。通过实测在驱动微调 lsb 可以获得接近绝对准确的 mck,还可以因应环境温度作适应。

这就是 diy 好玩之处。











1

主题

0

好友

9

积分

注册会员 当前离线

Rank: 2

UID
1158998
帖子
8
精华
0
经验
9 点
金钱
7 ¥
注册时间
2026-5-13
发表于 2026-6-1 13:21 | 显示全部楼层
无私而强大的楼主!

78

主题

49

好友

1万

积分
     

贵宾 当前在线

Rank: 3Rank: 3

UID
111707
帖子
13042
精华
3
经验
13486 点
金钱
12900 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2026-6-1 14:09 | 显示全部楼层
本帖最后由 jacksl528 于 2026-6-2 08:18 编辑
eslei 发表于 2026-6-1 12:39
看明白的烧友不多,但一定有您,

snd_soc_component_write(component, ES9038Q2M_INPUT_CONFIG, ...


多此一举~  

你连在什么情况下 需要手动去配置  NCO 数值都没玩明白。

ESS解码芯片的核心技术,HyperStream®Architecture是依存AUTO_FS_DETECT为开启状态的

算了吧, 你自己偷着乐就行了。




您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版| HIFIDIY论坛 ( 鄂ICP备2025138941号-3 ICP证:鄂B2-20130019 公安局网监备:420100007348 邮箱:1343292467@qq.com )

GMT+8, 2026-6-16 19:54 , Processed in 0.173550 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部