This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

Other Parts Discussed in Thread: 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个字节。