- 积分
- 67
- 在线时间
- 278 小时
- 最后登录
- 2025-8-2
- 阅读权限
- 50
- 精华
- 0
 
- UID
- 73896
- 帖子
- 71
- 精华
- 0
- 经验
- 67 点
- 金钱
- 59 ¥
- 注册时间
- 2009-1-9
|
本帖最后由 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的各个通道都没有模拟信号输出。请教高手上面设置是否正确,还缺哪些设置啊?谢谢
|
|