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.

PCMD3140: Cant write Biquad registers

Part Number: PCMD3140

Hey all,

im trying to use the biquad filters in the pcmd3140, but the registers that are holding the coefficients seem read only.

What i do:

- POR

- Write 00 00 to switch to page 0

- Write 02 81 to wake the device from sleep

- Wait 12 ms to allow the device to wake from sleep

- Write 00 02 to switch to page 2

- Write 08 1F to write page 2 register 0x08 with value 0x1F

- Write 00 02 to switch to page 2 (probably not required, but should do nothing worst case)

- Read 08 to read page 2 register 0x08, result is 0x7F

What i expected to happen:

Page 2 Register 0x08 reads the new value 0x1F

What actually happens:

Page 2 Register 0x08 reads the reset value 0x7F

Other registers on page 0 and 1 work as expected. Therefore i think my i2c communication is correct.

Am i missing something else i need to do before writing the registers?

  • Hi Matthis,

    The entire coefficient must be written to before reading back the values to confirm that the write was accepted. This means that once you write to 0x08, you must also write to 0x09, 0x0A, and 0x0B even if the values are the same. After writing all four bytes of the coefficient, you should be able to read back the coefficient correctly. Keep in mind the read must also happen sequentially from MSB to LSB. These coefficient registers are not intended to operate as single bytes like the registers in page 0 are.

    Best regards,
    Jeff McPherson

  • That did the trick. thank you <3