Documentation of errors found in component datasheets during rockbox development.
Table 5 on page 32, NL4..0;
- The binary numbers in the bottom part are wrong, NL3 should be 1 for all of them. The formula is: GateLines = (NL > 0) ? 8 * (NL + 1) : 0
MAS3857F? pcm codec datasheet
- Page 3, Framing format says: For playback via serial data input interface, framing information for synchronization is mandatory. However, page 11, Setting up the software for playback mode says: If the input is serial, the data stream should always contain framing information. It's indeed not mandatory, and works pretty well without framing info.
- Table on page 8, stereo matrix settings:
- Input and Output labels under 'Function' and 'Name' contradict each other. The ones under 'Name' are the correct ones.
- OutputVolume LR and OutputVolume RL are swapped.
| Memory address (hex)
|| Volume Output Control Left -> Left Gain (reset = 80000hex)
|| OutputVolume LL
|| Volume Output Control Right -> Left Gain (reset = 0hex)
|| OutputVolume RL
|| Volume Output Control Left -> Right Gain (reset = 0hex)
|| OutputVolume LR
|| Volume Output Control Right -> Right Gain (reset = 80000hex)
|| OutputVolume RR
|| Volume Input Control Left -> Left Gain (reset = 80000hex)
|| InputVolume LL
|| Volume Input Control Right -> Left Gain (reset = 0hex)
|| InputVolume RL
|| Volume Input Control Left -> Right Gain (reset = 0hex)
|| InputVolume LR
|| Volume Input Control Right -> Right Gain (reset = 80000hex)
|| InputVolume RR
: Not sure about the Input values - untested so far.
While the straight values are 0x80000 after reset (-1.0 in S0.23 fixed point notation), this value should not be used. It seems the PCM codec scales the 16bit input by shifting it 4 bits up, meaning there can be samples with the value 0x80000 in the stream. Fixed-point multiplication of 0x80000 * 0x80000 causes an overflow, because +1.0 can't be expressed as S0.23. Keep abs(straight) + abs(cross) < 1.0 in all cases to avoid distortion.
Copyright © by the contributing authors.