Weslly,
I took a look at your register settings and the setup seems to be solid. The only thing I noticed is here:
WriteCodecReg(0x18, 0x1c, 0x01); // data offset = 2 bclk
you mentioned that you had a data offset of 2 bclk, but only set it to 1. If the 2811 is expecting an offset of 2 this could cause a synchronization issue.
If this is not the cause of the issue, then I'd like to try to isolate the problem. The first test that would be helpful would be to output a sine wave from the 2811 straight to the DAC (taking the ADC out of the equation). This will test the DAC path and the DAC settings. Is it possible to conduct this test?
The same test should be done on the ADC as well, by inputing a sine wave and saving the digital output to memory. Then using a debug tool to get a graphical representation to make sure it looks like a sine wave.
These tests would be a great start to narrow this down.
Hope this helps,
Nate