This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

About CSL of I2S

I am using EVM5515, CCS v4.1 and CSL 55xx_ lowPWR,

I set I2S1 parameters like these,

I2S_Instance chan = I2S_INSTANCE1;

I2S_OpMode mode = I2S_POLLED;

I2S_ChanType ch_type = I2S_CHAN_MONO;

hI2s = I2S_open(chan, mode, ch_type);

p_Config->dataType = I2S_MONO_ENABLE;

p_Config->loopBackMode = I2S_LOOPBACK_ENABLE;

p_Config->fsPol = I2S_FSPOL_LOW;

p_Config->clkPol = I2S_FALLING_EDGE;

p_Config->datadelay = I2S_DATADELAY_ONEBIT;

p_Config->datapack = I2S_DATAPACK_ENABLE;

p_Config->signext = I2S_SIGNEXT_DISABLE;

p_Config->wordLen = I2S_WORDLEN_24;

p_Config->i2sMode = I2S_MASTER;

p_Config->clkDiv = I2S_CLKDIV8;

p_Config->fsDiv = I2S_FSDIV16;

p_Config->FError = I2S_FSERROR_DISABLE;

p_Config->OuError = I2S_OUERROR_DISABLE;

sys_fault = I2S_setup(hI2s, p_Config);

I2S_transEnable(hI2s, TRUE);

 

After this line, I can find I2S clock and FS,

but when I run to I2S_write( ), 

i2sIrStatus = regs->I2SINTFL is always 0, the code is dead loop here, because there is no XMT flag here.

I checked I2SINTFL register, it is always 0, I can not transfer my data.

Another problem is I use DMA tranfer data to I2S transmit register, for I2S0, transmit register 0x2808, I can do tansfer, but when I change to I2S1 register 0x2908, I couldn't trasfer data, it is always 0.

 

Please help me to solve these problems.

Thanks

 

 

 

  • The second problem has been solved, I can write data to I2S1 transmit register. But I still can not write out the data.

     

  • From what I am getting from your post you are testing the following conditions

    • Instance I2S1
    • DMA plus Interrupt mode
    • Software loopback (You are not communicating with any external codec/device)

    First, lets make sure you are using the right interrupt event flags in the IRQ_plug() and IRQ_enable() CSL api’s. 

    • PROG2_EVENT is I2S1 Tx interrupt flag
    • PROG3_EVENT is I2S1 Rx interrupt flag

    All interrupt events are listed in csl_intc.h lines 99 – 167.

    Let me know if this solves your problem.