- 积分
- 1294
- 在线时间
- 269 小时
- 最后登录
- 2026-6-3
- 阅读权限
- 70
- 精华
- 0
 
- UID
- 866780
- 帖子
- 1245
- 精华
- 0
- 经验
- 1294 点
- 金钱
- 1169 ¥
- 注册时间
- 2019-9-27
|
看明白的烧友不多,但一定有您,
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 好玩之处。
|
|