Hello All,
I am trying to get my BeagleBone Black talking to a WaveShare UDA1380 board using I2S and I2C. I also need to have the LCD3 (Rev A1) Cape running.
I am a beginner when it comes to BBB hardware fiddling so I would appreciate some pointers.
From what I have read, the Audio Cape is compatible with the LCD3 Cape and “interfaces with the Multichannel Audio Serial Port of the AM335x via audio serial bus”. It looks like it uses I2C(19,20) as well as AUD_IN(25), AUD_OUT(28), AUD_FSX(29) and AUD_BCLK(31).
I then found these pins referenced in another post on this group
25 mcasp0_ahclkx
28 mcasp0_axr2
29 mcasp0_fsx
30 mcasp0_axr0
31 mcasp0_aclkx
So far so good, although the names are confusing (I don’t want to use the Audio Cape and was just using it as a reference point). Just compiling the info for this post is starting to make things clearer though.
The UDA1380 can be configured to use an incoming master clock, or provide the master clock. The pins (shown below) are on the WaveShare module the UDA1380 sits on. The I2C seems straight forward. I am guessing that if the BBB provided the SYSCLK, that would go to RX World Clock on the 1380 board. Then RX CLK, RX Data, RX World Select and TX Data would be connected to the BBB’s Mcasp0. This is where I get confused. Does the Audio Cape use I2S or are they names for another format (TDM ?). Does there need to be a SYSCLK?
I don’t need to use HDMI just in case that is relevant. I read that need to be disabled for one of these two capes.
Once I get the correct pins worked out, should I start learning about device trees etc, or is it something I need to compile into the kernel. I have found code for the UDA1380 in the linux kernel somewhere that defined all of the registers and settings and they seemed to match ok.
Anyhoo, any help will be appreciated. Below are some pinouts for the codec board, LCD3 cape and the Audio Cape.
UDA1380 Pinouts
Vcc
Gnd
SDA
SCL
TX Bit Clock
TX Word Select
TX Data
TX Master Clock
RX Bit CLock
RX Word Select
RX Data
RX World Clock
There is also a jumper to set the World Clock config ( Use incoming worldclock (SYSCLOCK), Output a master clock, or some something in the middle ) .
Audio Cape Pinout