微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > Tas5721 在单通道的时候怎么怎么做到 左右声道混音

Tas5721 在单通道的时候怎么怎么做到 左右声道混音

时间:10-02 整理:3721RD 点击:

 你好, 我现在产品只有一个喇叭,所以只能单声道,。使用的是 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个字节。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top