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.

PCM5122: "Fixed process flow" mode

Part Number: PCM5122
Other Parts Discussed in Thread: PCM5121

Tool/software:

I am developing a project with PCM5122. The PCM5122 has no output after selecting "Fixed process flow" as like "PCM5121: PCM5121 has no output after selecting Fixed process flow with configurable parameters".

PCM5121: PCM5121 has no output after selecting Fixed process flow with configurable parameters. - Audio forum - Audio - TI E2E support forums

I don't have a PCM5122EVM.

In the above topic, Xp Zheng said, "Yesterday I received the EVM board, and through PurePath Studio I know how to write the sound effect parameters correctly."

I want to know what it is.

I want to know what is wrong with my source code. And I don't know how to set up registers Reg 8 to Reg 47 on Page 44.

//Page 44, 62, Reg 8~
const uint8_t PCM_P44_R8[30][4] = {
//C0 C1 C2 C3 C4
//What is it?
{0xFF, 0xFF, 0xFF, 0x00}, {0x80, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x00, 0x00}, {0x7F, 0xFF, 0xFF, 0x00}, {0x00, 0x00, 0x00, 0x00}, // ???

//C5 C6 C7 C8 C9
//What is it?
{0x1A, 0x00, 0x00, 0x00}, {0x11, 0x80, 0x00, 0x00}, {0x28, 0x00, 0x00, 0x00}, {0x27, 0x80, 0x00, 0x00}, {0x7F, 0xFF, 0xFF, 0x00}, // ???

//C10 C11 C12 C13 C14
//BQ1_1
{0x7F, 0x95, 0x1C, 0x00}, {0xC0, 0x35, 0x72, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x3F, 0x95, 0x1D, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C15 C16 C17 C18 C19
//BQ1_2
{0x64, 0xF3, 0x4D, 0x00}, {0x32, 0x79, 0xA6, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0xDB, 0x0C, 0xB2, 0x00}, {0x00, 0x00, 0x00, 0x00}, // 0dB

// C20 C21 C22 C23 C24
//BQ1_3
{0x7F, 0x8F, 0xC9, 0x00}, {0x83, 0x96, 0x54, 0x00}, {0x79, 0xCC, 0x3D, 0x00}, {0x7D, 0xAB, 0x63, 0x00}, {0x84, 0x1F, 0x2A, 0x00}, // 3dB

// C25 C26 C27 C28 C29
//BQ1_4
{0x7C, 0xD5, 0x0E, 0x00}, {0x8E, 0xD6, 0x9C, 0x00}, {0x6D, 0x79, 0x96, 0x00}, {0x71, 0x29, 0x64, 0x00}, {0x95, 0xB1, 0x5B, 0x00} // -3dB
};

//Page 45, 63, Reg 8~
const uint8_t PCM_P45_R8[30][4] = {
// C30 C31 C32 C33 C34
//BQ1_5
{0x78, 0xEE, 0x38, 0x00}, {0xAD, 0xA7, 0x96, 0x00}, {0x56, 0xA8, 0x58, 0x00}, {0x52, 0x58, 0x6A, 0x00}, {0xB0, 0x69, 0x6E, 0x00}, // -3dB

//BQ1_6
// C35 C36 C37 C38 C39
{0x7E, 0xA2, 0x78, 0x00}, {0xE8, 0x39, 0x40, 0x00}, {0x39, 0x18, 0x57, 0x00}, {0x1A, 0x20, 0xBD, 0x00}, {0xB6, 0x19, 0x64, 0x00}, // 3dB

// C40 C41 C42 C43 C44
//BQ3_1
{0x51, 0x26, 0x13, 0x00}, {0xD7, 0x6C, 0xF7, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x11, 0x26, 0x14, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C45 C46 C47 C48 C49
//BQ3_2
{0x51, 0x26, 0x13, 0x00}, {0xD7, 0x6C, 0xF7, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x11, 0x26, 0x14, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C50 C51 C52 C53 C54
//BQ5_1
{0x2E, 0xD9, 0xEB, 0x00}, {0x17, 0x6C, 0xF5, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x11, 0x26, 0x14, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C55 C56 C57 C58 C59
//BQ5_2
{0x7D, 0xF0, 0x6A, 0x00}, {0xC1, 0x07, 0xCB, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x3D, 0xF0, 0x6B, 0x00}, {0x00, 0x00, 0x00, 0x00}
};

//Page 46, 64, Reg 8~
const uint8_t PCM_P46_R8[30][4] = {
// C60 C61 C62 C63 C64
//BQ7_1
{0x02, 0x0F, 0x94, 0x00}, {0x01, 0x07, 0xCA, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x3D, 0xF0, 0x6B, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C65 C66 C67 C68 C69
//BQ7_2
{0x02, 0x0F, 0x94, 0x00}, {0x01, 0x07, 0xCA, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x3D, 0xF0, 0x6B, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C70 C71 C72 C73 C74
// 1_AE 1_1AE 1_AA 1_1AA 1_AD
{0x00, 0x00, 0xAF, 0x00}, {0x7F, 0xFF, 0x51, 0x00}, {0x00, 0x02, 0xBB, 0x00}, {0x7F, 0xFD, 0x45, 0x00}, {0x00, 0x00, 0x57, 0x00},

// C75 C76 C77 C78 C79
// 1_1AD 2_AE 2_1AE 2_AA 2_1AA
{0x7F, 0xFF, 0xA9, 0x00}, {0x00, 0x06, 0xD3, 0x00}, {0x7F, 0xF9, 0x2D, 0x00}, {0x00, 0x1B, 0x4C, 0x00}, {0x7F, 0xE4, 0xB4, 0x00},

// C80 C81 C82 C83 C84
// 2_AD 2_1AD 3_AE 3_1AE 3_AA
{0x00, 0x03, 0x6A, 0x00}, {0x7F, 0xFC, 0x96, 0x00}, {0x00, 0x44, 0x32, 0x00}, {0x7F, 0xBB, 0xCE, 0x00}, {0x01, 0x0F, 0xEF, 0x00},

// C85 C86 C87 C88 C89
// 3_1AA 3_AD 3_1AD K0 K1
{0x7E, 0xF0, 0x11, 0x00}, {0x00, 0x22, 0x1E, 0x00}, {0x7F, 0xDD, 0xE2, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0xF0, 0x22, 0x22, 0x00}
};

//Page 47, 65, Reg 8~
const uint8_t PCM_P47_R8[30][4] = {
// C90 C91 C92 C93 C94
// K2 MT1 MT2 OFF1 OFF2
{0xE4, 0x00, 0x00, 0x00}, {0x32, 0x00, 0x00, 0x00}, {0x14, 0x00, 0x00, 0x00}, {0xFE, 0xE0, 0x00, 0x00}, {0xF0, 0x00, 0x00, 0x00},

// C95 C96 C97 C98 C99
// -1_Q22 -2_Q22 1_M2 ZERO EN_DB
{0xC0, 0x00, 0x00, 0x00}, {0x80, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C100 C101 C102 C103 C104
// -_ZERO_DB 60_DB -60_DB 12_DB OFFSET
{0xD7, 0x41, 0xA0, 0x00}, {0xFF, 0xF0, 0x00, 0x00}, {0x88, 0x00, 0x00, 0x00}, {0x18, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C105 C106 C107 C108 C109
// K x 48_DB -48_DB c1_3
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x30, 0x00, 0x00, 0x00}, {0xD0, 0x00, 0x00, 0x00}, {0x00, 0x03, 0x84, 0x00},

// C110 C111 C112 C113 C114
// c1_2 c1_1 C1_0 O1_1 S1_1
{0x00, 0xB2, 0x55, 0x00}, {0x0E, 0x5B, 0xDE, 0x00}, {0x7F, 0xFF, 0xFF, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x02, 0x00, 0x00, 0x00},

// C115 C116 C117 C118 C119
// O1_2 S1_2 O1_3 S1_3 One_1_Q17
{0x20, 0x00, 0x00, 0x00}, {0x00, 0x51, 0x26, 0x00}, {0x40, 0x00, 0x00, 0x00}, {0x00, 0x0C, 0xD, 0x00C},{0x02, 0x00, 0x00, 0x00}
};

//Page 48, 66, Reg 8~
const uint8_t PCM_P48_R8[30][4] = {
// C120 C121 C122 C123 C124
// Scale1 x1Coeff c2_3 c2_2 c2_1
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x16, 0x5A, 0x00}, {0x00, 0x37, 0x56, 0x00}, {0x10, 0xA9, 0xBF, 0x00},

// C125 C126 C127 C128 C129
// c2_0 O2_1 S2_1 O2_2 S2_2
{0x7F, 0xFF, 0xFF, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x02, 0x00, 0x00, 0x00}, {0xE0, 0x00, 0x00, 0x00}, {0x0C, 0x9E, 0x80, 0x00},

// C130 C131 C132 C133 C134
// O2_3 S2_3 One_2_Q17 Scale2 x2Coeff
{0xC0, 0x00, 0x00, 0x00}, {0x4F, 0x9F, 0x16, 0x00}, {0x02, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C135 C136 C137 C138 C139
// R1_1 R1_2 R2_1 R2_2 Band1_GainC
{0x20, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x00, 0x00}, {0xE0, 0x00, 0x00, 0x00}, {0xC0, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C140 C141 C142 C143 C144
// Band2_GainC Band3_GainC -1_M1 1_M1 Band1_GainE
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x80, 0x00, 0x00, 0x00}, {0x7F, 0xFF, 0xFF, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C145 C146 C147 C148 C149
// Band2_GainE Band3_GainE -1_M2 StereoMixGain1 StereoMixGain2
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0xC0, 0x00, 0x00, 0x00}, {0x4C, 0xCC, 0xCD, 0x00}, {0x4C, 0xCC, 0xCD, 0x00}
};

//Page 49, 67, Reg 8~
const uint8_t PCM_P49_R8[30][4] = {
// C150 C151 C152 C153 C154
// StereoMixGain3 ------- StereoMux C_D_CoefVal MonoMixGain1
{0x4C, 0xCC, 0xCD, 0x00}, {0x2E, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x01, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x00, 0x00},

// C155 C156 C157 C158 C159
// MonoMixGain2 ----- ----- Vol_0X_volcmd Vol_0X_volout
{0x40, 0x00, 0x00, 0x00}, {0x41, 0x80, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x7F, 0xB2, 0x60, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C160 C161 C162 C163 C164
// Vol_0X_volout_loudn Vol_0X_-1_M2 Vol_0X_workval_pre1 Vol_0X_volout_pre1 Vol_0X_workval_pre2
{0x00, 0x00, 0x00, 0x00}, {0xC0, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C165 C166 C167 C168 C169
// Vol_0X_volout_pre2 Vol_0X_workval_pre3 Vol_0X_volout_pre3 Vol_0X_1_M2 Vol_0X_Zero
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C170 C171 C172 C173 C174
// -1_Int -1_M1 1_M2 1_M1 Zero
{0xFF, 0xFF, 0xFF, 0x00}, {0x80, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x00, 0x00}, {0x7F, 0xFF, 0xFF, 0x00}, {0x00, 0x00, 0x00, 0x00},

// C175 C176 C177 C178 C179
// DataBlock CoeffBlock Vol_0X_DataBlock Vol_0X_CoeffBlock +1
{0x1A, 0x00, 0x00, 0x00}, {0x11, 0x80, 0x00, 0x00}, {0x28, 0x00, 0x00, 0x00}, {0x27, 0x80, 0x00, 0x00}, {0x7F, 0xFF, 0xFF, 0x00}
};

//Page 50, 68, Reg 8~16
const uint8_t PCM_P50_R8[2][4] = {
// C180 C181
// ADD_of_FLT_in_L ADD_of_FLT_in_R
{0x2E, 0x00, 0x00, 0x00}, {0x41, 0x80, 0x00, 0x00}
};


void init(void)
{
uint_t d, i, j;

d = 0; //Set Page 0
codec_Write(0x00, &d, 1);

d = 0x10; //Set Standby mode
codec_Write(0x02, &d, 1);

d = 0x30; //Set LJ format, 16-bits
codec_Write(0x28, &d, 1);

d = 0x00; //Set Mute off
codec_Write(0x03, &d, 1);

d = 44; //Set Left digital volume
codec_Write(0x3D, &d, 1);
d = 44; //Set Right digital volume
codec_Write(0x3E, &d, 1);

d = 0x7D; //Ignore all clock error detection, Enable clock auto set
codec_Write(37, &d, 1);


//Set Prog Mode : FIXED_PROCESS_FLOW
//CRAM A buffer
d = 44; //Set Page 44
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P44_R8[i][j], 1);
}
}

d = 45; //Set Page 45
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P45_R8[i][j], 1);
}
}

d = 46; //Set Page 46
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P46_R8[i][j], 1);
}
}

d = 47; //Set Page 47
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P47_R8[i][j], 1);
}
}

d = 48; //Set Page 48
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P48_R8[i][j], 1);
}
}

d = 49; //Set Page 49
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P49_R8[i][j], 1);
}
}

d = 50; //Set Page 50
codec_Write(0x00, &d, 1);
for (i=0; i<2; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P50_R8[i][j], 1);
}
}

//CRAM B buffer
d = 62; //Set Page 62
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P44_R8[i][j], 1);
}
}

d = 63; //Set Page 63
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P45_R8[i][j], 1);
}
}

d = 64; //Set Page 64
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P46_R8[i][j], 1);
}
}

d = 65; //Set Page 65
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P47_R8[i][j], 1);
}
}

d = 66; //Set Page 66
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P48_R8[i][j], 1);
}
}

d = 67; //Set Page 67
codec_Write(0x00, &d, 1);
for (i=0; i<30; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P49_R8[i][j], 1);
}
}

d = 68; //Set Page 68
codec_Write(0x00, &d, 1);
for (i=0; i<2; i++) {
for (j=0; j<4; j++) {
codec_Write(8+(i*4)+j, (uint8_t *)&PCM_P50_R8[i][j], 1);
}
}

d = 44; //Set Page 44
codec_Write(0x00, &d, 1);

d = 4; //Enable adaptive mode
codec_Write(0x01, &d, 1);

d = 0; //Set Page 0
codec_Write(0x00, &d, 1);

d = 5; //Set PROG_SEL to FIXED_PROCESS_FLOW
codec_Write(0x2B, &d, 1);

d = 0; //16x or 8x
codec_Write(0x22, &d, 1);

d = 0x00; //Set Normal mode
codec_Write(0x02, &d, 1);
}