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.

EDMA UART example to use CC1 doesn't work

Other Parts Discussed in Thread: TMS320C6748

Hello, 

I modified the working uart_edma_c674x_c6748_evmC6748\uartEcho.c example to use CC1  instead of CC0 on C6748 for STarterWare 1.20.03.03, basically replacing original CC0 register with corresponding register value for CC1:

SOC_PSC_0_REGS with SOC_PSC_1_REGS,

HW_PSC_CC0 with HW_PSC_CC1, 

HW_PSC_TC0 with HW_PSC_TC2,

SOC_EDMA30CC_0_REGS with SOC_EDMA31CC_0_REGS, 

SYS_INT_EDMA3_0_CC0_INT1 with SYS_INT_EDMA3_1_CC0_INT1, 

SYS_INT_EDMA3_0_CC0_ERRINT with SYS_INT_EDMA3_1_CC0_ERRINT

but the example doesn't work anymore. Is there any specific configuration for CC1 which is not similar to the example or am I missing something?

See the attached modified example file for your reference.5123.uartEcho_CC1.c

Thank you in advance,

David.

  • Hello again, anyone tried the example to confirm? Any solutions?

  • Five years later, and I have the same problem using edma3 with a McASP. Works on CC0 but not on CC1.

    I've done this with starterware and EDMA3 LLD - same result.

    Does anyone ever read these posts?

    Roy

  • No expert on EDMA. It is a very complex peripheral. It would appear that each channel controller has specific events mapped to it. For example, UART2 is mapped to CC0 only and is not accessible by CC1. Ditto for McASP.

    StarterWare define these events in edma_event.h. Example overlap of events:
    /* McASP0 Receive Event */
    #define EDMA3_CHA_MCASP0_RX 0
    ...
    /* Timer 2 compare event0 (TPCC1) */
    #define EDMA3_TIMER2_T12CMPEVT0 0

    The code is gives a subtle hint about CC1 events with a "(TPCC1)" in the comment line above the define.

    Reference:
    SPRS590F TMS320C6748 Datasheet
    6.9.1 EDMA3 Channel Synchronization Events
    Table 6-12. EDMA Synchronization Events
  • Hi Norman,

    Good to know someone is reading this stuff! And yes, you're absolutely right - that table in the datasheet makes it all very clear. Until yesterday, I'd been working from the C6748 technical reference manual, which is too generic when it comes to peripherals like edma. So it's simply not intended to work on both channel controllers, unlike all the memory to memory examples that cheerfully work on either controller.

    I will mark your post as the answer, if I can figure out how to do that. I wonder whether the OP will see this!

    Thanks

    Roy

  • It seems only the OP can mark or unmark posts as solutions. The OP hasn't posted for 3 years. I believe theModerators can also mark threads as solved. Oddly moderators have been moving StarterWare threads involving the C6748 from the StarterWare forum to the C6000 Single Core forum. Appears that the StarterWare forum is for ARM based issues.
  • Norman, Roy,

    Thanks for updating and posting an update to this old thread. Threads regarding C67x Starterware are moved to the C67x forum. The AM335x and AM437x Starterware related threads are left here.

    I'm not sure if you see it, but there is a green "Verify Answer" under the post that allows you to close the thread.

    Lali
  • Thank you as well, at that point in time I just left the code as it was working on CC0 without fully understanding the reason. Because of this post went back checking that old code to see why I didn't use the other controller but this post helped me remember.