SSI TDM Slot Transmit Error

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

SSI TDM Slot Transmit Error

1,496 Views
andrewdeliso
Contributor IV

Hello All,

I am working to support the a 4 channel SSI bus to a Wolfson audio chip (WM5102).  The clocks (yellow) and frame sync(green) are being generated by the Wolfson chip.  When I capture the data from the audio interface I am seeing 4 16-bit PCM channels at 44.1KHz as I expect.  The problem is on transmit I see the first frame sometimes leaving in slot 0 and sometimes in slot 1. 

I pulled a patch from another post about setting the Tx/Rx Masks, but I am still have the transmit problem. 

I have attached two screen captures showing the measurements of the SSI bus.

Software: Linux Kernel 3.0.101 with a modified imx-ssi.c

Here is dump of some of the settings:

slots=4,

SCR=00000118,

STCR=0000038d,

SRCR=0000038d

STCCR=0004e300

SRCCR=0004e300

STMSK=fffffff0

SRMSK=fffffff0

When Transmitting:

SSI_SCR 11b

SSI_SIER 100000

Labels (2)
0 Kudos
9 Replies

1,043 Views
igorpadykov
NXP Employee
NXP Employee

Hi Andrew

in general this behaviour may be caused by SSI underruns, just for test one can try to

decrease SSI clocks, use minimal image, try to disable wit mode (enable_wait_mode=off),

change location of data buffers to iRAM.

Best regards

igor

0 Kudos

1,044 Views
andrewdeliso
Contributor IV

Thanks for the tips igor, but I have tried all your options and I still see my channel 1 data moving around. 

Is there anything else that I can look at or try? 

0 Kudos

1,044 Views
igorpadykov
NXP Employee
NXP Employee

one can try with bare metal SDK (reuse wm8962.c)

~igor

0 Kudos

1,044 Views
andrewdeliso
Contributor IV

bare metal is not really an option for me.  Is there any versions that support multi-channel SSI bus?  Or should I be looking at a hardware change to another bus to support 4 channels of audio?

0 Kudos

1,044 Views
igorpadykov
NXP Employee
NXP Employee

I think issue may appear with 2 channels too, could you try it ?

0 Kudos

1,044 Views
andrewdeliso
Contributor IV

I will give this a try, I think I have also seen that case.

0 Kudos

1,044 Views
andrewdeliso
Contributor IV

I ran a two channel test, (Left/Right) with the off the shelf driver in 3.0.101 with the iMx as the slave.  This worked fine at 8kHz and 44kHz.  When running with TDM 2 channels worked fine.  It seems only to be related to a 4 channel operation.  Is there something going on with the two TX buffers?  Currently I am running with both TX buffers enabled.

0 Kudos

1,044 Views
Carl725
NXP Employee
NXP Employee

I'm the Freescale TSE for Persistent Systems and Andrew DeLiso sent me an email regarding this thread.  He told me that he needs a deeper understanding of the limitations of the SSI interface.  Also does this carry into the imx6 plus?  Persistent currently has 3 SSI buses running and the extra channels is more of a necessity to properly move the audio.  Do we have any version of our BSP other than bare metal where more than 2 channels are supported?

Carl

0 Kudos

1,044 Views
igorpadykov
NXP Employee
NXP Employee

I.MX6 plus have similar SSI modules.

Unfortunately I am not aware of linux versions that support multi-channel SSI

bus, so it may be recommended to find correct SSI configuration

using bare metal SDK (using wm8962.c as example), then port it to linux.

Also one has option to contact Freescale Professional Services to develop this configuration

http://www.freescale.com/webapp/sps/site/overview.jsp?code=CW_PROFESSIONAL

Best regards

igor

0 Kudos