SPRUHM8K December 2013 – May 2024 TMS320F28374D , TMS320F28375D , TMS320F28376D , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28378D , TMS320F28379D , TMS320F28379D-Q1
Typically, DMA activity is independent of CPU and CLA activity. However, when the DMA and CPU (or CLA) try to access the same peripheral at the same time, an arbitration procedure is required to resolve the conflict. All instances of the same peripheral type conflict with each other. For instance, CAN-A and CAN-B conflict. Accesses to global shared RAM, across different instances, do not have this conflict. Different peripheral types can share a bus interface, which creates further opportunities for conflicts. These bus interfaces are:
Conflict Example: The CLA is accessing DAC-A while the DMA is simultaneously accessing DAC-B.
Conflict Example: The CPU is accessing an SPI FIFO while the DMA is simultaneously accessing a PMBus register.
Non-conflict Example: The CPU is accessing a shared ePWM while the DMA is accessing an SPI.
Non-conflict Example: The CPU is accessing GS0 while the DMA is accessing GS1
The exception to all this is the ADC result registers, which are duplicated for each bus master. The CPU, DMA, and CLA can all simultaneously read these result registers with no stalls or arbitration needed for any master.
A DMA transfer consists of four phases: send source address, read source data, send destination address, and write destination data (see Section 5.4). Suppose CPU accesses a peripheral/memory causing conflict in middle of a DMA transfer, CPU is stalled till the current DMA access is complete and not until the completion of whole DMA transfer.
The following priority schemes are implemented for the various interfaces on the device:
Arbitration within DMA channels is based on a round-robin priority or Channel 1 high-priority scheme described in Section 5.6.