4

主题

0

好友

67

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
73896
帖子
71
精华
0
经验
67 点
金钱
59 ¥
注册时间
2009-1-9
发表于 2025-8-1 22:20 | 显示全部楼层
本帖最后由 hotsoil 于 2025-8-1 22:23 编辑

     上半年根据 jacksl528 大神的9039q2m设计,做成了软控的解码器。感觉搞懂了9039的软件参数,于是进一步做了一个双9039pro的解码器。硬件没有问题,拆下朋友的品牌解码器的软控模块,接上可以完美出声。但是自己编程控制芯片时不出声。请教各位大神哪里出问题了啊。
     我现在具体的设置如下:(两个9039芯片除了地址,其余设置一样,为了表述简洁,只写其中一个)
1、配置0寄存器,9039pro有8个输入信号通道和8个DAC输出通道,把8个通道的输出对应成立体声的两个通道(ch1/2 interpolation path)信号输入:
        ES9039_WriteByte(ES9039_ADDR1,0,46); //46=00101110

2、配置1寄存器,1寄存器的功能个9039q2m一样,同样配置成进入异步模式,同时启用S/PDIF、DoP和DSD解码功能,0xBf=1011 1111
        ES9039_WriteByte(ES9039_ADDR1,0x01,0xBf);  

3、配置42寄存器,把用于同轴和光纤输入的引脚GPIO8(同轴)和GPIO7(光纤)设置为输入模式
        ES9039_WriteByte(ES9039_ADDR1,42, 192);   //192=11000000

4、配置59寄存器, 限定TDM帧结构为2时隙,适用于立体声。9039pro的模式选择里没有I2S输入。得把将8通道的TDM输入改为I2S输入。
        ES9039_WriteByte(ES9039_ADDR1,59,1);  

5、配置64-71寄存器。这些寄存器对应的是TDM输入的8个通道,需要把它们对应成立体声的2个通道。
        ES9039_WriteByte(ES9039_ADDR1,64,0);       //  //数据线1,时隙1
        ES9039_WriteByte(ES9039_ADDR1,65,1);        //数据线1,时隙2
        ES9039_WriteByte(ES9039_ADDR1,66,0x20);       //数据线2,时隙1
        ES9039_WriteByte(ES9039_ADDR1,67,0x21);        //数据线2,时隙2
        ES9039_WriteByte(ES9039_ADDR1,68,0x40);       //数据线3,时隙1
        ES9039_WriteByte(ES9039_ADDR1,69,0x41);      //数据线3,时隙2
        ES9039_WriteByte(ES9039_ADDR1,70,0x80);      //数据线4,时隙1
         ES9039_WriteByte(ES9039_ADDR1,71,0x81);       //数据线4,时隙2
6、配置89寄存器,根据输入信号源的选择,把  S/PDIF输入源设为GPIO7(光纤)或GPIO8(同轴),目前设为了同轴。
     ES9039_WriteByte(ES9039_ADDR1,89, 0xF4);        //配置S/PDIF输入源为GPIO8,二进制为11110100,并设置IIR滤波器带宽为默认值

7、设置57号寄存器,选择输入信号源。
    ES9039_WriteByte(ES9039_ADDR1,57,ES9039.input_selection);
       就做了以上设置,其余为9039默认。在9039q2m里这些足够出声了,可以9039pro不出声,示波器显示dac的各个通道都没有模拟信号输出。请教高手上面设置是否正确,还缺哪些设置啊?谢谢

43

主题

2

好友

779

积分

职业侠客 当前在线

Rank: 5Rank: 5

UID
787724
帖子
682
精华
0
经验
779 点
金钱
638 ¥
注册时间
2015-3-20
发表于 2025-8-2 18:06 | 显示全部楼层
57号写入C1试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部