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.

RTOS/AM5728: 32-Channel TDMA using McASP interrupt

Part Number: AM5728
Other Parts Discussed in Thread: SYSBIOS

Tool/software: TI-RTOS

I am trying developing TDMA with 32 channel (McASP) using TiRTOS without DMA, where clock and frame sync are external.

I have configured the McASP accordingly and able to see data transition on pooling mode in a while(1) before calling BIOS_start().

As soon as I configure the interrupt and calling BIOS_start(), McASP goes crazy and not getting the interrupts when requested. I have checked its hitting the interrupt.

I have configured the interrupt for Frame Sync, Data Ready and Last Slot.

I want to develop a system which exchanges data on 32-channel TDMA to other node using interrupt. 

  • Please share which RTOS version are you using? Also any debug log from serial console or CCS console.

    Best Regards,
    Yordan
  • vijay,

    Have you considered using the MCASP driver from Processor SDK RTOS instead of developing your own software driver.
    processors.wiki.ti.com/.../Processor_SDK_RTOS_MCASP

    Regards,
    Rahul
  • Thanks for your reply, I am using CCS-7.2.0.00013 and ti-processor-sdk-rtos-am57xx-evm-03.03.00.04.

    Earlier i was not using DMA but now after seeing the example code I am using DMA. Example code having 1 Slot and RX is looped back on TX. But I need 32 Slots (16 bit each) and need to store to/from MCASP data so that later i can create a UDP frame out of that.

    I have tried configuring example code for my use, I am using McASP7 peripheral and configured it for 16 Bit 32 channel TDM mode. Currently I have configured as Master and generating the CLK and SYNC frame and try to only transmit dummy data. So to inline with my requirement, in "Audio_echo_Task" I have disabled RX channel and after calling "Semaphore_pend(semT, BIOS_WAIT_FOREVER)" its waiting there forever.

  • Thanks for your reply. I tried configuring Audio example code for my requirements which is 32 Channel (16-bit each), only TX using dummy data but i am getting below error:
    [C66xx_DSP1] ti.sysbios.knl.Semaphore: line 289: assertion failure: A_badContext: bad calling context. Must be called from a Task.
    xdc.runtime.Error.raise: terminating execution

    Semaphore_pend() is called under main Audio task and Semaphore_post() is called under mcaspAppCallback() at the end of McASP transaction.