Other Parts Discussed in Thread: TLV320DAC3100
Tool/software:
Hello everybody,
I'm having trouble sending I2S data, created by a Raspberry Pi, from DS90UB947 to DS90UB948. Ultimately, the data will be sent from the UB948 to a TLV320DAC3100, but at the moment, I'm just measuring at the Pins of the UB948. See below for the various connections.
My current problem is that only I2S_CLK seems to arrive at the UB948, I2S_WC and I2S_DA don't ever change when applying 44.1 kHz, 16 bit stereo signal to UB947 (CLK 1.5 MHz).
A few explanations for my setup:
The UB948 and the TLV320DAC3100 are sitting inside the customers hardware, which is the device I ultimately need to test (UUT).
The test bench is equipped with a Göpel VideoDragon GCAR9222 (www.goepel.com/.../lvds) which serves as the HIL tester. I can already display images on the UUT and communicate to the UB948 and attached devices via I2C.
As the VideoDragon cannot produce I2S signals, it was decided to create those using a Raspberry Pi. Its I2S Pins are connected to the external Interface of the VideoDragon from where they are (supposedly) routed to the UB947 which (supposedly) sends them to the UB948. As I cannot get to the pins of the UB947, I need to rely on de firmware of the VideoDragon. However, I already verified the routing by creating static signals from the Raspberry and configuring the UB947 pins as GPIO inputs. There, everything looks OK.
My connections are as follows:
RPI pin 12 (BCK) -> VideoDragon -> UB947 pin 35 (I2S_CLK) -> UB948 Pin 13 (I2S_CLK)
RPI pin 35 (LRCK) -> VideoDragon -> UB947 pin 34 (I2S_WC) -> UB948 Pin 14 (I2S_WC)
RPI pin 40 (DOUT) -> VideoDragon -> UB947 pin 36 (I2S_DA) -> UB948 Pin 12 (I2S_DA)
The Signal from the Raspberry:
I tried 44.1 kHz and 48 kHz, 16 bit PCM. I currently haven't managed to output any other frequencies - need to investigate first. But according to the UB947 data sheet, this should be allowed?
I know that the Raspberry cannot produce the exact frequencies, may this by a problem?
I haven't set any I2S-specific registers in the UB947 or UB948: to my understanding, the default values should just forward I2S to the deserializer?
From the schematics, I can see the UB948 is set to MODE_SEL0=2 and MODE_SEL1=0. I don't have access to the scematics on the VideoDragon, so I can't tell for the UB947.
The UB947 is set to Single OLDI (see registers below).
Those are the register values I'm setting (I had some help from Göpel, so I'm not sure I understand every setting here):
UB947:
0x03 0xDA
0x07 0x0C
0x08 0x00
0x17 0xDA
0x18 0x19
0x19 0x2F
0x4F 0x40
0x0D 0x23
0x0E 0x03
0x0F 0x03
UB948:
0x02 0xF0
0x07 0x34
0x1D 0x15
0x1E 0x35
0x1F 0x05
0x22 0x00
0x3B 0x1F
0x43 0x06
0x49 0x62
0x59 0x3F
0xA2 0x7D
I would like to mention that I'm actually a test system developer and don't have much experience with I2S (or LVDS for that matter), I was just hired to integrate the VideoDragon into the test system, so I apologize if any crucial info is missing here.
Thank you in advance
Oliver Nittka