Hello
I know that.
I'm sorry for the wrong formulation.
I would to send 2 16bit slots with 16bit words within 32bit.
That work for now. I have change my configuration.
For the moment I have enabled TX0 and TX1
ESAI register dump:
ECR: 0x00000001
ESR: 0x00000100
TFCR: 0x000C0F0D
TFSR: 0x00000000
TCR: 0x00018903
TCCR: 0x00E00200
TSMA: 0x00000003
TSMB: 0x00000000
PRRC: 0x00000C18
PCRC: 0x00000C18
clock CCGR1 bit 16 17: 0xF03F0000
But the main problem still exists.
If I would send 0xAAAA 0xBBBB, I get 0xAAAA 0xAAAA on TX0 and 0xBBBB 0xBBBB on TX1 line.
I have tried this send processes:
int write_esai_tx( uint16_t slot0, uint16_t slot1 )
{
writel( (uint32_t) slot0, (void *) ESAI_BASE + ETDR );
writel( (uint32_t) slot1, (void *) ESAI_BASE + ETDR );
while( !( ( readl( (void *) ESAI_BASE + ESR ) ) & 0x00000100 ) )
;
while( !( ( readl( (void *) ESAI_BASE + SAISR ) ) & 0x00004000 ) )
;
}
and also:
int write_esai_tx1( uint16_t slot0, uint16_t slot1 )
{
writel( 0xEEEE, (void *) ESAI_BASE + ETDR );
writel( (uint32_t) slot0, (void *) ESAI_BASE + ETDR );
writel( 0xCCCC, (void *) ESAI_BASE + ETDR );
writel( (uint32_t) slot1, (void *) ESAI_BASE + ETDR );
while( !( ( readl( (void *) ESAI_BASE + ESR ) ) & 0x00000100 ) )
; ) )
}
with this one I get 0xCCCC 0xCCCC on TX0 line and 0xBBBB 0xBBBB on TX1 line
I guess I have done something wrong with the FIFO. But I don't find it.
I will try to use your example.
Best regards
Tobias