2

主题

0

好友

20

积分

注册会员 当前离线

Rank: 2

UID
823944
帖子
19
精华
0
经验
20 点
金钱
16 ¥
注册时间
2016-12-6
发表于 2019-2-26 13:21 | 显示全部楼层
本帖最后由 chen37007 于 2019-2-26 13:23 编辑

最近研究CS8416/ AK4113软控,采用arduino nano控制(因为就arduino编程会一点),碰到如下几个问题,希望热心的坛友能帮忙解答一下心中的疑惑。
问题一:
以ak4113为例,unlock在寄存器07H中的D4位,
doSPI(AK4113_cspin, B00000111, 0);  读取pll锁定信号时,返回的是整个07寄存器中的全部位数据,
返回的数据怎么能只提取出第4位的数,用来判断是否锁定呢??(这个搞懂后,采用频率也就ok了)

问题二:
CS8416中的采样频率检测,规格书中描述:
该寄存器允许主机微控制器根据公式 ORR=Fso/Fsi 计算输入采样频率。Fso 由频率取决于的OMCK(256*Fso)。ORR 是一个无符号的 2 位整数部分加上 6 位的小数部分。其值仅在 PLL 锁定后才有意义。例如,如果 OMCK 为 12.288MHz,则 Fso 为 48kHz(48kHz=12.288MHz/256)。如果输入采样频率也是 48kHz,则 ORR 寄存器中的值为 1.0(ORR 寄存器中的值是十六进制的,所有真实值是 40h)。如果 F SO /F SI >3-63/64
,则 ORR 为 FFh。此外,ORR 中没有滞后。因此在任何时钟上的一个小抖动都会引起最低有效位 ORR[0]的振荡。
ORR[7:6] - 比率的整数部分(整数值=整数(SRR[7:6]))。
ORR[5:0] - 比率的分数部分(分数值=整数(SRR[5:0])/64)

没找到fsi具体数,根据公式推算48khz,请问这个跟是否外接晶振,以及晶振频率有关吗?如果没关,那就可以不用晶振了^_^。

2

主题

0

好友

20

积分

注册会员 当前离线

Rank: 2

UID
823944
帖子
19
精华
0
经验
20 点
金钱
16 ¥
注册时间
2016-12-6
 楼主| 发表于 2019-3-6 18:21 | 显示全部楼层
问题1:百度arduino 位操作,搞明白了
问题2,问题1搞定,ak4113可用,cs8416没搞懂也无所谓了

看了100多次,没一个回复。。。沉了吧

16

主题

0

好友

658

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
214428
帖子
882
精华
0
经验
658 点
金钱
616 ¥
注册时间
2010-6-25
发表于 2019-3-6 19:28 | 显示全部楼层
本帖最后由 mc3362 于 2019-3-6 19:31 编辑
chen37007 发表于 2019-3-6 18:21
问题1:百度arduino 位操作,搞明白了
问题2,问题1搞定,ak4113可用,cs8416没搞懂也无所谓了


首先OMCK是外部晶振提供给CS8416的一个固定参考时钟,而Fso=OMCK/256,当你选定了晶振频率,也是不变的。如外部晶振12.288MHz,那么Fso=48kHz(固定)。
OMCK_CS8416.JPG

Fsi为SPDIF输入信号的实际采样率(与RMCK是整数倍关系),它是随着SPDIF输入信号的采样率变化的,于是ORR=Fso/Fsi就能算出当前采样率了。

2

主题

0

好友

20

积分

注册会员 当前离线

Rank: 2

UID
823944
帖子
19
精华
0
经验
20 点
金钱
16 ¥
注册时间
2016-12-6
 楼主| 发表于 2019-3-7 08:32 | 显示全部楼层
mc3362 发表于 2019-3-6 19:28
首先OMCK是外部晶振提供给CS8416的一个固定参考时钟,而Fso=OMCK/256,当你选定了晶振频率,也是不变的 ...

脑子短路,把fso和fsi的关系竟然搞反了。。。
还是ak4113吧,电路简单些
非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部