[DAC] WM8805软控测试分享

[复制链接] 查看: 6974|回复: 11

237

主题

14

好友

1510

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
2616
帖子
3093
精华
0
经验
1510 点
金钱
1182 ¥
注册时间
2005-1-7
发表于 2012-7-26 12:50 | 显示全部楼层
WM8805软控电路图如下


这个图纸复位要接上拉。

之前因为我的硬件问题,请教论坛的haluo兄得到不少帮助,谢谢haluo 兄,调试完成后,和他讨论一些问题,WM8805的控制难点在176.4HE 192K的解码,其实只要在192的时候设置正确NK就可以解决。WM8805的内部寄存器读取识别频率在44.1和48K,88.2和96K都是一个数值,确实很难区分,我采用的方法是检测外部的LRCK来获取正确的频率作为一个判断条件。
也可以采用判断UNLOCK的电平或者读取UNLCOK的BIT位来判断。我测试的结果是判断BIT位准确点。

我的测试记录如下,共参考。

//{0x07,0x36,0xFD,0x21},
//{0x07,0x21,0xB0,0x89},
// 44.1K 88.2K 176.4K
//{0x08,0x0C,0x49,0xBA}
//32K 48K 96K 192K
/*
————————————————————————————————————————————————————————————————————
全部设置为{0x07,0x36,0xFD,0x21}
44.1,48K,88.2,176。4K,96K 能正常解码出声音,UNLOCK 为0V
192K解码不了,UNLOCK 为3.3V。

开机           01000000                                          3.3V
RX0 44.1   00100000   bit5-4 = 10          0V
    48     00100000   bit5-4 = 10          0V
    88.2   00010000   bit5-4 = 01          0V
    96     00010000   bit5-4 = 01          0V
    176    00000000   bit5-4 = 00          0V
    192    01000000          bit5-4 = 00     解码不了,LCD无显示  3.3V
————————————————————————————————————————————————————————————————————
全部设置为{0x07,0x21,0xB0,0x89}
44.1,88.2,176。4K,能正常解码出声音。
48K能解码但有噪声UNLOCK 为0,96K和192K解码不了,UNLOCK 为3.3V。

开机           01000000                                          3.3V
RX0 44.1   00100000   bit5-4 = 10          0V
    48     00100000   bit5-4 = 10          0V
    88.2   00010000   bit5-4 = 01          0V
    96     01010000   bit5-4 = 01          解码不了,LCD无显示  3.3V
    176    00000000   bit5-4 = 00          0V
    192    01000000          bit5-4 = 00     解码不了,LCD无显示  3.3V
————————————————————————————————————————————————————————————————————
全部设置为{0x08,0x0C,0x49,0xBA}
48K,96K,192K,能正常解码出声音。
44.1,88.2,176。4K,不能解码,44.1K的UNLOCK 电平输出在1.4V-2.5V之间变化。

开机           01000000                                          3.3V
RX0 44.1   00100000   bit5-4 = 10          解码不了,LCD无显示  1.4V-2.5V
                   01100000          bit5-4 = 10          2个数组在变化
    48     00100000   bit5-4 = 10          0V
    88.2   01010000   bit5-4 = 01          解码不了,LCD无显示  3.3V
    96     00010000   bit5-4 = 01          0V       
    176    00000000   bit5-4 = 00          解码不了,LCD无显示,但是为0V
    192    00000000          bit5-4 = 00     0V
————————————————————————————————————————————————————————————————————
设置为
{0x07,0x21,0xB0,0x89}
{0x08,0x0C,0x49,0xBA}
44.1K,96K,192K,能正常解码出声音。
48K能解码但有噪声,176.4不能解码但是UNLOCK 电平输出为0.5V。
————————————————————————————————————————————————————————————————————
设置为
{0x07,0x36,0xFD,0x21}
{0x08,0x0C,0x49,0xBA}
全部可以解码。

RX0 44.1   00100000   bit5-4 = 10
    48     00100000   bit5-4 = 10
    88.2   00010000   bit5-4 = 01
    96     00010000   bit5-4 = 01
    176    00000000   bit5-4 = 00
    192    00000000          bit5-4 = 00

*/

56

主题

12

好友

6087

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7495
精华
0
经验
6087 点
金钱
5744 ¥
注册时间
2008-10-20
发表于 2012-7-26 13:06 | 显示全部楼层
说到底还是自动波范围太小了。

11

主题

1

好友

495

积分

业余侠客 当前离线

终极电流

Rank: 4

UID
6329
帖子
828
精华
0
经验
495 点
金钱
424 ¥
注册时间
2005-11-14
发表于 2012-7-26 16:23 | 显示全部楼层
本帖最后由 stars 于 2012-7-26 16:33 编辑

WM8805软控这玩意,很有意思,每个人做都每个人的实现方法.而且是不尽相同都是可以实际同样的功能

139

主题

11

好友

3306

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
5036
帖子
4977
精华
1
经验
3306 点
金钱
3017 ¥
注册时间
2005-7-26
发表于 2012-7-26 21:05 | 显示全部楼层
和楼主讨论了不少问题,然后我发现我的程序有bug,光依靠UNLCOK位来判断,无法区分开44.1K和48K,因两个NK值,在44.1K和48K时,都能锁定,这样用unlock来判断有没有信号就不准了,也许你输入的是44.1,程序认48K去了,或者反过来也有可能,然后当时发现串口输出时,不同的频率下,读出的数值有区别,能正确锁定时,得到的数值分别为04,14,24,而不能正确锁定时的数值是00,10,20,得出的bit不同是版权标识位不同。以为可以通过它来实现判断44.1和48,结果啊,拿CD机一接,杯具了,版权标识位为0.....
最后是改用设置不同的NK值,看unlock位来准确判断频率状态,我的办法可行,但不能确保万无一失,
楼主用单片机去读LRCK频率,这个肯定是最准确而且又不会出错的。

86

主题

0

好友

651

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
390607
帖子
810
精华
0
经验
651 点
金钱
641 ¥
注册时间
2011-9-3
发表于 2012-7-26 21:10 | 显示全部楼层
现在开始学C51,C语言,看来是晚了点,我才学到数组

139

主题

11

好友

3306

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
5036
帖子
4977
精华
1
经验
3306 点
金钱
3017 ¥
注册时间
2005-7-26
发表于 2012-7-26 21:16 | 显示全部楼层
我的基本就下边两个判断语句实现的。
if(.....)
...
else
....
for (....)
....

1

主题

0

好友

114

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
65848
帖子
145
精华
0
经验
114 点
金钱
114 ¥
注册时间
2008-11-29
发表于 2012-7-26 21:19 | 显示全部楼层
和楼主讨论了不少问题,然后我发现我的程序有bug,光依靠UNLCOK位来判断,无法区分开44.1K和48K,因两个 ...
haluo 发表于 2012-7-26 21:05


我以前试过用单片机去读FS的最笨的方法,其实也是很成功的方法。

19

主题

2

好友

1429

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
476002
帖子
1408
精华
0
经验
1429 点
金钱
1294 ¥
注册时间
2012-2-29
发表于 2012-7-26 22:56 | 显示全部楼层
我记得默认的PLL应该是可以锁定除了176.4的所有采样率。要判断176.4的话只需要判断在176.4/192的时候是否失锁,然后重写PLL就行了。这是datasheet上推荐的方法。

237

主题

14

好友

1510

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
2616
帖子
3093
精华
0
经验
1510 点
金钱
1182 ¥
注册时间
2005-1-7
 楼主| 发表于 2012-7-26 23:06 | 显示全部楼层
默认的去解码176.4和192是不行的,176.4输出有杂音。可能是FS要设置在128,我之前没测试FS的。设置在128后倒是所有的都可以解码

139

主题

11

好友

3306

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
5036
帖子
4977
精华
1
经验
3306 点
金钱
3017 ¥
注册时间
2005-7-26
发表于 2012-7-28 18:57 | 显示全部楼层
回复 9# 微尘尘


    176.4和192时,FS要设置在128

4

主题

0

好友

97

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
844030
帖子
98
精华
0
经验
97 点
金钱
86 ¥
注册时间
2018-1-31
发表于 2021-7-9 14:45 | 显示全部楼层
我的软控WM8805无数字信号输入时LRCK老是输出3.25V电压,一有信号就正常1.65V,不知道是程序原因还是WM8805的BUG?

4

主题

0

好友

97

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
844030
帖子
98
精华
0
经验
97 点
金钱
86 ¥
注册时间
2018-1-31
发表于 2021-9-15 11:16 | 显示全部楼层
176.4和192khz并不难,设置好128fs,检测bit6位为1重写就行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部