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.

CCS/TMS570LS0432: TMS570LS0432 DMA reference project for sci

Part Number: TMS570LS0432
Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357

Tool/software: Code Composer Studio

I have been working though the forum for DMA support of serial communications for TMS570LS0432 (Im using the launchpad platform).

I have found http://www.ti.com/lit/an/spna213/spna213.pdf documantation and a sample project 2781.TMS570LS20USB_DMA_DATA.zip that I have ported into composer studio.

I am using HALCoGen 04.07.00.

The example project HALCoGen shows a DMA module in the example project architecture TMS57LS1227ZWT general chip overview.

HALCoGen's  TMS570LS0432PZ (what I understand to be the chip on the Launchpad eval kit for TMS570LS04/03) does not show a DMA subsystem, but the spec for the TMS570LS0432PZ chip confirms it is capable of that DMA function.

Needless to sat the dmaEnable(void)  fails when it tries to set dmaREG which in the example sys_dma.h  is ((dmaBASE_t *)0xFFFFF000U).

There should be a properly configured Code Composer and HALcoGen project for this function. 

Could you help me locate it?

  • Hello John,

    I am sorry. The TMS570LS0x32 doesn't have DMA module.
  • Thanks, I have several boards.

    Im now on the TMS570LC4357 dev board and am using the example HALCoGen_SCI_DMA example with the configuration switched to TMS570, from the provided RM configuration.

    The symptom is the the sys_main begins to check the CPU and fails on periphInit(void).

    I suspect there is something else that needs to be reconfigured. Any thoughts?
  • Hi John,

    If there are many byte or bit operations in your project, it take time to convert a project for little endian device to a project for big endian device. The SCI DMA sample code has been tested and works for both little endian device and big endian device.

    #if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))
    #define SCI3_TX_ADDR ((uint32_t)(&(sciREG3->TD)))
    #define SCI3_RX_ADDR ((uint32_t)(&(sciREG3->RD)))
    #define SCI4_TX_ADDR ((uint32_t)(&(sciREG4->TD)))
    #define SCI4_RX_ADDR ((uint32_t)(&(sciREG4->RD)))
    #else
    #define SCI3_TX_ADDR ((uint32_t)(&(sciREG3->TD)) + 3)
    #define SCI3_RX_ADDR ((uint32_t)(&(sciREG3->RD)) + 3)
    #define SCI4_TX_ADDR ((uint32_t)(&(sciREG4->TD)) + 3)
    #define SCI4_RX_ADDR ((uint32_t)(&(sciREG4->RD)) + 3)
    #endif