Tas5721 在单通道的时候怎么怎么做到 左右声道混音
你好, 我现在产品只有一个喇叭,所以只能单声道,。使用的是 tas5721 的 dac ,在配置上
ret = tas571x_reg_write(i2c,0x19, 0x3a);
ret = tas571x_reg_write(i2c,0x25, 0x01012345);
配置成单声道。播放音乐的时候,发䴓只有左声道。想问一下,怎么能做到左右声道混在一起。
在 tas5721 datasheet 框图,22页 DAP Process Structure 和 第一页的 Signal Processing Flow,好像可以设置其混音。但是具体的寄存器没有详细介绍。(如 x051 0x52)
寄存器 0x51,52 好象就是混音控制的, 可以试试
找ti 申请了一个 PurePath Console Graphical。看到确实 51h 和 52h 可以混音,于是猜了一下。把 Ch 1 output mix1[2] , Ch 1 output mix1[1] Ch 1 output mix1[0] 都做成 0x0080000 .左右能混音了。
以下是代码。
static int tas571x_reg_write_12(void *context, unsigned int reg)
{
struct i2c_client *client = context;
struct tas571x_private *priv = i2c_get_clientdata(client);
unsigned int i, size;
uint8_t buf[13];
int ret;
size = 12;
buf[0] = reg;
unsigned int value1 = 0;//0x00800000;
unsigned int value2 = 0x00800000;
unsigned int value3 = 0x00800000;
for (i = 4; i >= 1; --i) {
buf[i] = value1;
value1 >>= 8;
}
for (i = 4; i >= 1; --i) {
buf[i + 4] = value2;
value2 >>= 8;
}
for (i = 4; i >= 1; --i) {
buf[i + 8] = value3;
value3 >>= 8;
}
printk(" %s() write size is %d \n", __FUNCTION__, size);
ret = i2c_master_send(client, buf, size + 1);
if (ret == size + 1)
return 0;
else if (ret < 0)
return ret;
else
return -EIO;
}
ret = tas571x_reg_write_12(i2c, 0x51);
ret = tas571x_reg_write_12(i2c, 0x52);
注意此寄存器是 12个字节。