https://e2e.ti.com/support/audio-group/audio/f/audio-forum/703857/tas5751m-configuring-over-i2c
部件号:TAS5751M主题中讨论的其他部件: TAS5731M, BUREPATHCONSOLE, TLV320AIC3262, PCM9211
您好,
我正在使用微控制器将我从PurePath控制台应用程序获得的寄存器值写入通过I2C的TAS5751M,但我对微控制器应该如何执行此操作有一些疑问。
目前,我在一个单独的I2C事务中传输每一个命令,并且我正在使用.h文件中的示例代码来写入寄存器。 以下是微控制器和TAS5751M (从I2C分析器中从名为TiePie的程序检索)之间的I2C流量的输出:
=========== =========== 启动 写入地址:0x054 0x0000:06 07 停止 启动 写入地址:0x054 0x0000:05 40 停止 启动 写入地址:0x054 0x0000:03 A0 停止 启动 写入地址:0x054 0x0000:04 05 停止 启动 写入地址:0x054 0x0000:07 00 C0 停止 启动 写入地址: 0x054 (无确认) 停止 启动 写入地址:0x054 (无确认) 停止 启动 写入地址:0x054 (无确认) 停止 启动 写入地址:0x054 (无确认) 停止 启动 写入地址:0x054 (无确认) 停止 启动 写入地址:0x054 (无确认)停止启动写入地址:0x054 (无确认) 停止 启动 写入地址:0x054 (无确认) 停止 == ===========
它仅写入这一非常短的事务,其中仅写入前5个寄存器值,然后TAS5751M不会再读取任何字节。
如何使TAS5751M读取整个配置文件?
这是 我从PurePath控制台程序获得的.h文件:
typedef unsigned char cfg_u8;
typedef联合{
结构{
cfg_u8偏移;
cfg_u8值;
};
结构{
cfg_u8命令;
cfg_u8参数;
};
} cfg_reg;
#define CFG_META_SWITCH (255)#define
CFG_META_DELAY (254)#define
CFG_META_STUA_STUREUD(253)/*
示例C代码*/*
//外部实现的函数,可以向设备写入n字节
// PCM51xx和TAS5766目标要求在多次写入时设置I2C寄存器的高位(0x80)。
//有关详细信息,请参阅设备数据表。
extern int i2c_write(unsigned char *data, int n);
//外部实现的函数,将执行延迟n毫秒
外部int delay(int n);
//示例实施。 呼叫方式:
// transmit_Registers (寄存器,sizeof(Register)/sizeof(Register[0]);
void transmit_regnes(cfg_reg *r, int n)
{
INT I = 0;
同时(i < n){
开关(r[I].command){
案例CFG_META_SWITCH:
//用于传统应用程序。 忽略这里。
中断;
案例CFG_META_DELAY:
DELAY (r[I].param);
中断;
案例CFG_META_STUREK:
I2C_WRITE ((unsigned char *)&r[i+1],r[i].param);
i ++(r[I].param + 1)/2;
中断;
默认:
I2C_WRITE ((unsigned char *)&r[i],2);
中断;
}
I++;
}
}
*/
cfg_reg寄存器[]={//------------------
//初始化顺序
//----------------------------------
{ 0x06,0x07 },
{ 0x05, 0x40 },
//--------------------------------------------------
//放大器配置
//----------------------------------
{ 0x03,0xa0 },
{ 0x04,0x05 },
{ CFG_META_STREUTE, 3},
{ 0x07,0x00 },
{ 0xc0,0x00 },
{ CFG_META_STREUTE, 3},
{ 0x08,0x00 },
{ 0xc0,0x00 },
{ CFG_META_STREUTE, 3},
{ 0x09,0x00 },
{ 0xc0,0x00 },
{ CFG_META_STREUTE, 3},
{ 0x0a,0x00 },
{ 0xc0,0x00 },
{ 0x0E,0xf0 },
{ 0x10, 0x01},
{ 0x11, 0xb8},
{ 0x12, 0x60 },
{ 0x13,0xa0 },
{ 0x14,0x48 },
{ 0x19,0x3a },
{ 0x1a,0x68 },
{ 0x1b,0xc0 },
{ 0x1c,0x57 },
{ CFG_META_STREUTE, 5},
{ 0x20, 0x00 },
{ 0x89,0x77 },
{ 0x72,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x25,0x01 },
{ 0x00,0x22 },
{ 0x45,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x26,0x00 },
{ 0x7f,0xf0 },
{ 0xd7, 0x03 },
{ 0x01,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x27,0x00 },
{ 0x7f, 0x0E },
{ 0x41,0x03 },
{ 0x0F,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x28,0x00 },
{ 0x7f, 0x0E },
{ 0x41,0x07 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x29,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x1f,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x2a, 0x00 },
{ 0x80,0x00 },
{ 0x00,0x07 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x2b,0x00 },
{ 0x80,0x00 },
{ 0x00,0x07 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x2C,0x00 },
{ 0x80,0x00 },
{ 0x00,0x07 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x2d,0x00 },
{ 0x80,0x00 },
{ 0x00,0x07 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x2e, 0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x3f, 0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x2F, 0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x7f, 0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x30,0x00 },
{ 0x7f,0xf0 },
{ 0xd7, 0x03 },
{ 0x00,0x1d },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x31,0x00 },
{ 0x00,0x02 },
{ 0x00,0x01 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x32,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x1f,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x33,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x1f,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x34,0x00 },
{ 0x80,0x00 },
{ 0x00,0x07 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x35,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x1f,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x36,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x37,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x27,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x38,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x3f, 0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x39,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x5f, 0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 9},
{ 0x3b,0x00 },
{ 0x07,0x60 },
{ 0x53,0x00 },
{ 0x71,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 9},
{ 0x3c,0x00 },
{ 0x00,0x00 },
{ 0x6d, 0xff },
{ 0xff,0xff },
{ 0xe5, 0x00 },
{ CFG_META_STREUTE, 9},
{ 0x3e, 0x00 },
{ 0x07,0x60 },
{ 0x53,0x00 },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 9},
{ 0x3f,0x00 },
{ 0x00,0x00 },
{ 0x5b,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x40,0x08 },
{ 0x00,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x41,0x08 },
{ 0x00,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 9},
{ 0x42,0x00 },
{ 0x00,0x00 },
{ 0x6d, 0xff },
{ 0xff,0xff },
{ 0xe5, 0x00 },
{ CFG_META_STREUTE, 5},
{ 0x43,0x08 },
{ 0x00,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x44,0x07 },
{ 0x21,0x48 },
{ 0x2b,0x00 },
{ CFG_META_STREUTE, 9},
{ 0x45,0x00 },
{ 0x00,0x00 },
{ 0x6d, 0xff },
{ 0xff,0xff },
{ 0xe5, 0x00 },
{ CFG_META_STREUTE, 5},
{ 0x46,0x00 },
{ 0x02,0x00 },
{ 0x0F,0x00 },
{ CFG_META_STREUTE, 9},
{ 0x47,0x00 },
{ 0x07,0x60 },
{ 0x53,0x00 },
{ 0x71,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 9},
{ 0x48,0x00 },
{ 0x07,0x60 },
{ 0x53,0x01 },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x4f,0x00 },
{ 0x00,0x00 },
{ 0x08,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x50,0x0F },
{ 0x70,0x80 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 13},
{ 0x51,0x00 },
{ 0x80,0x00 },
{ 0x00,0x00 },
{ 0x80,0x01 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 13},
{ 0x52,0x00 },
{ 0x80,0x00 },
{ 0x00,0x00 },
{ 0x80,0x01 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x56,0x00 },
{ 0x80,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x57,0x00 },
{ 0x02,0x00 },
{ 0x00,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x58,0x00 },
{ 0x80,0x00 },
{ 0x00,0x03 },
{ 0x87,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x59, 0x00 },
{ 0x00,0x0c },
{ 0x27,0x01 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x5a, 0x00 },
{ 0x59,0x0c },
{ 0xdc,0x03 },
{ 0x7f, 0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x5b,0x00 },
{ 0x03,0x85 },
{ 0xFC,0x00 },
{ 0x07,0x17 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x5c,0x00 },
{ 0x7B,0x1d },
{ 0xfa,0x03 },
{ 0x09,0xc4 },
{ 0x3f, 0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x5d, 0x00 },
{ 0x80,0x00 },
{ 0x00,0x07 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x5e,0x00 },
{ 0x00,0x0c },
{ 0x27,0x01 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x5f,0x00 },
{ 0x59,0x0c },
{ 0xdc,0x03 },
{ 0x4d,0xe6 },
{ 0x4f,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x60,0x00 },
{ 0x03,0x85 },
{ 0xFC,0x00 },
{ 0x07,0x17 },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STUEREK,21 },
{ 0x61,0x00 },
{ 0x7B,0x1d },
{ 0xfa,0x03 },
{ 0x13,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x70,0x00 },
{ 0x80,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x71,0x00 },
{ 0x00,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x72,0x00 },
{ 0x40, 0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x73, 0x00},
{ 0x40, 0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x74,0x00 },
{ 0x80,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x75,0x00 },
{ 0x00,0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x76,0x00 },
{ 0x40, 0x00 },
{ 0x00,0x00 },
{ CFG_META_STREUTE, 5},
{ 0x77,0x00 },
{ 0x40, 0x00 },
{ 0x00,0x00 },
//--------------------------------------------------
//取消静音序列
//------------------
{ 0x05,0x00 },
{ 0x06,0x00 },
};
