AnsweredAssumed Answered

SSI reads back what was written to TXD

Question asked by Dirk Schäfer on Jun 8, 2016
Latest reply on Jun 13, 2016 by Dirk Schäfer

Hello,

 

I use the SSI1 with AUDMUX1 and AUDMUX4 in a simple way.

 

// bith PINs to ALT3

m_muxAud4TXD.SetAddr( 0x020E0050);

m_muxAud4TXD.SetValue( 3);

m_muxAud4RXD.SetAddr( 0x020E0054);

m_muxAud4RXD.SetValue(3);

// AUDMUX1 gets all clocks and syncs from SSI1

m_audm1_ptcr.SetValue( 0);

m_audm1_pdcr.SetValue( (3<<13) );

 

// AUDMUX4 gets all needed from AUDMUX1

m_audm4_ptcr.SetValue( (1<<31) + (1<<26) + (1<<21) + (1<<16) );

m_audm4_pdcr.SetValue( 0);

// enable recv, transmit and SSI1

m_ssi1cr.SetValue( (1<<2) + (1<<1) + (1<<0) );

// fifo 0 enable, frame and clock dir internal

m_ssi1stcr.SetValue( (1<<7) + (1<<6) + (1<<5) );

// divide by 2, prescaler, 24bits, modulus

m_ssi1stccr.SetValue( (1<<18) + (1<<17) + (11<<13) + 0x02);

m_ssi1srcr.SetValue( (1<<7) + (1<<6) + (1<<5) );

m_ssi1srccr.SetValue( (1<<18) + (1<<17) + (11<<13) + 0x02);

 

// Masks to send

g_aSending[0]= 0xCCCCCC00;

g_aSending[1]= 0xCCCCCC00;

g_aSending[2]= 0xCCCCFF00;

g_aSending[3]= 0xFFFFFFFF;

g_aSending[4]= 0xFFFFFFFF;

 

I send whenever ssi1sfcsr&0x00000F00 == 0 and read

if ss1sfcsr&0x0000F000 != 0, amount of both events are the same.

Masks are visible on the oscilloscope.

 

The return is on PIN RXD.

But I always read the pattern send over TXD. From Recv Fifo 0.

 

Where is my mistake?

Many thanks for your help.

 

09.06.2016

Changed

 

m_audm4_ptcr.SetValue( (1<<31) + (1<<26) + (1<<21) + (8<<17) +  (1<<16) + (8<<12) );

 

Recv masks have high bit set, manual page 716, no success.

Outcomes