采用tas2505作为AMP,驱动链接:https://github.com/dangtranhieu2012/tas2505-linux-driver/blob/master/tas2505.c
平台采用高通QCS610,测量芯片I2S四路信号都有,但Spk+/Spk-输出波形为方波,使用tinyplay播放wav文件也没有声音输出。
I2C寄存器设置采用 slau472.pdf Page 49 4.0.7 Example
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.
采用tas2505作为AMP,驱动链接:https://github.com/dangtranhieu2012/tas2505-linux-driver/blob/master/tas2505.c
平台采用高通QCS610,测量芯片I2S四路信号都有,但Spk+/Spk-输出波形为方波,使用tinyplay播放wav文件也没有声音输出。
I2C寄存器设置采用 slau472.pdf Page 49 4.0.7 Example
您好:
我这边尝试单独卸掉R3314,单独卸掉R3317,同时卸掉R3314和R3317,波形和之前一样,并且没有声音输出。以下是我这边寄存器的配置,您可以帮忙check一下么?
static const struct reg_default tas2505_reg_defaults[] = {
{ TAS2505_PAGECTL, 0x00 },
{ TAS2505_RESET, 0x01 },
{ TAS2505_PAGECTL, 0x01 },
{ TAS2505_LDO_CTRL, 0x00 },
{ TAS2505_REF_POR_LDO_BGAP_CTRL, 0x10 },
{ 1 * 128 + 0x09 , 0x03 },
{ 1 * 128 + 0x0C , 0x04 },
{ 1 * 128 + 0x16 , 0x00 },
{ 1 * 128 + 0x18 , 0x80 },
{ 1 * 128 + 0x09 , 0x23 },
{ 1 * 128 + 0x10 , 0x00 },
{ TAS2505_SPKVOL1 , 0x00 },
{ TAS2505_SPKVOL2 , 0x10 },
{ TAS2505_SPKAMPCTRL1 , 0x02 },
};
I2C寄存器设置采用 slau472.pdf Page 51 4.0.9 Example
Amy Luo 说:您MCLK, BCLK, WCLK 频率分别是多少呢
我找到一个客户的寄存器配置,您可以参考下:
#define TAS2505_REG(page, reg) ((page * 128) + reg)
#define TAS2505_PAGECTL TAS2505_REG(0, 0)
#define TAS2505_RESET TAS2505_REG(0, 1)
#define TAS2505_CLKMUX TAS2505_REG(0, 4)
#define TAS2505_PLLPR TAS2505_REG(0, 5)
#define TAS2505_PLLJ TAS2505_REG(0, 6)
#define TAS2505_PLLDMSB TAS2505_REG(0, 7)
#define TAS2505_PLLDLSB TAS2505_REG(0, 8)
#define TAS2505_NDAC TAS2505_REG(0, 11)
#define TAS2505_MDAC TAS2505_REG(0, 12)
#define TAS2505_DOSRMSB TAS2505_REG(0, 13)
#define TAS2505_DOSRLSB TAS2505_REG(0, 14)
#define TAS2505_IFACE1 TAS2505_REG(0, 27)
#define TAS2505_IFACE2 TAS2505_REG(0, 28)
#define TAS2505_IFACE3 TAS2505_REG(0, 29)
#define TAS2505_BCLKNDIV TAS2505_REG(0, 30)
#define TAS2505_DACFLAG1 TAS2505_REG(0, 37)
#define TAS2505_DACFLAG2 TAS2505_REG(0, 38)
#define TAS2505_STICKYFLAG1 TAS2505_REG(0, 42)
#define TAS2505_INTFLAG1 TAS2505_REG(0, 43)
#define TAS2505_STICKYFLAG2 TAS2505_REG(0, 44)
#define TAS2505_INTFLAG2 TAS2505_REG(0, 46)
#define TAS2505_DACINSTRSET TAS2505_REG(0, 60)
#define TAS2505_DACSETUP1 TAS2505_REG(0, 63)
#define TAS2505_DACSETUP2 TAS2505_REG(0, 64)
#define TAS2505_DACVOL TAS2505_REG(0, 65)
#define TAS2505_REF_POR_LDO_BGAP_CTRL TAS2505_REG(1, 1)
#define TAS2505_LDO_CTRL TAS2505_REG(1, 2)
#define TAS2505_PLAYBACKCONF1 TAS2505_REG(1, 3)
#define TAS2505_HPPOWERUP TAS2505_REG(1, 9)
#define TAS2505_OUTPUTMODE TAS2505_REG(1, 10)
#define TAS2505_MIXPOUTPUT TAS2505_REG(1, 12)
#define TAS2505_P1R16 TAS2505_REG(1, 16)
#define TAS2505_HPGAIN TAS2505_REG(1, 22)
#define TAS2505_P1R24 TAS2505_REG(1, 24)
#define TAS2505_SPKAMPCTRL1 TAS2505_REG(1, 45)
#define TAS2505_SPKVOL1 TAS2505_REG(1, 46)
#define TAS2505_SPKVOL2 TAS2505_REG(1, 48)
#define TAS2505_DACANLGAINFLAG TAS2505_REG(1, 63)
static const struct reg_default tas2505_reg_defaults[] = {
{ TAS2505_LDO_CTRL, 0x00 },
{ TAS2505_CLKMUX, 0x03 },
{ TAS2505_PLLPR, 0x91 },
{ TAS2505_PLLJ, 0x04 },
{ TAS2505_PLLDMSB, 0x00 },
{ TAS2505_PLLDLSB, 0x00 },
{ TAS2505_NDAC, 0x84 },
{ TAS2505_MDAC, 0x82 },
{ TAS2505_DOSRMSB, 0x00 },
{ TAS2505_DOSRLSB, 0x80 },
{ TAS2505_IFACE1, 0x00 },
{ TAS2505_IFACE2, 0x00 },
{ TAS2505_DACINSTRSET, 0x02 },
{ TAS2505_REF_POR_LDO_BGAP_CTRL, 0x10 },
{ TAS2505_OUTPUTMODE, 0x00 },
{ TAS2505_MIXPOUTPUT, 0x04 },
{ TAS2505_HPGAIN, 0x00 },
{ TAS2505_P1R24, 0x00 },
{ TAS2505_HPPOWERUP, 0x20 },
{ TAS2505_P1R16, 0x00 },
{ TAS2505_SPKVOL1, 0x00 },
{ TAS2505_SPKVOL2, 0x10 },
{ TAS2505_SPKAMPCTRL1, 0x02 },
{ TAS2505_DACSETUP1, 0x90 },
{ TAS2505_DACVOL, 0x00 },
{ TAS2505_DACSETUP2, 0x04 },
};
您好:
我这边在寄存器初始化的时候使用上述配置,在tas2505_power_on中snd_soc_write(codec, TAS2505_RESET, 1);之后重新写了一组寄存器
static const struct reg_default tas2505_reg_initials[] = {
//{ 0x00, 0x00 },
//{ 0x01, 0x01 },
//{ 0x00, 0x01 },
{ 0x80 + 0x02, 0x04 },
//{ 0x00, 0x00 },
{ 0x04, 0x03 },
{ 0x05, 0x94 },
{ 0x06, 0x07 },
{ 0x07, 0x00 },
{ 0x08, 0x00 },
// 15ms delay
{ 0x0B, 0x82 },
{ 0x0C, 0x87 },
{ 0x0D, 0x00 },
{ 0x0E, 0x80 },
{ 0x19, 0x00 },
{ 0x1A, 0x01 },
{ 0x1B, 0x20 },
{ 0x1C, 0x00 },
{ 0x1D, 0x00 },
{ 0x1E, 0x01 },
{ 0x1F, 0x00 },
{ 0x20, 0x00 },
{ 0x21, 0x00 },
{ 0x22, 0x00 },
{ 0x30, 0x00 },
{ 0x31, 0x00 },
{ 0x34, 0x00 },
{ 0x35, 0x12 },
{ 0x36, 0x02 },
{ 0x37, 0x02 },
{ 0x38, 0x02 },
{ 0x3C, 0x01 },
{ 0x3F, 0x91 },
//{ 0x00, 0x01 },
{ 0x80 + 0x01, 0x00 },
{ 0x80 + 0x03, 0x00 },
{ 0x80 + 0x0A, 0x00 },
{ 0x80 + 0x0B, 0x00 },
{ 0x80 + 0x0C, 0x16 },
{ 0x80 + 0x16, 0x75 },
{ 0x80 + 0x18, 0x00 },
{ 0x80 + 0x09, 0x00 },
{ 0x80 + 0x10, 0x40 },
{ 0x80 + 0x2E, 0x00 },
{ 0x80 + 0x30, 0x10 },
{ 0x80 + 0x2D, 0x02 },
//{ 0x00, 0x00 },
{ 0x41, 0x00 },
{ 0x40, 0x04 },
};
就可以进行播放了,我想请问TAS2505_RESET寄存器设定1之后会把之前的设置清除么?