5.1.6 Device Memory Access (DMA) Controller

The PIC18F and PIC32CM Direct Memory Access (DMA) controllers enable high-speed data transfers between memory and peripheral registers without CPU intervention. This improves system efficiency, reduces CPU load, and enables real-time data handling for tasks, such as serial communication, ADC sampling, and port memory-to-memory transfers. The table below provides a comparison of the features of the PIC18F and PIC32CM MCUs.

Table 5-8. PIC18F and PIC32CM DMA Features
Feature/AspectPIC18F DMAPIC32CM DMAC
DMA ChannelsUp to 8Up to 16
Transfer TypesPeripheral-to-memory, memory-to-peripheralPeripheral-to-memory, memory-to-peripheral, memory-to-memory
Trigger Sources

Software triggers

Hardware triggers

Peripheral events

Software triggers

External triggers

Addressing Modes Fixed, increment, or decrementFixed, increment, or decrement
Burst/Block TransferByte-at-a-timeSupported
Priority LevelsManaged through System ArbiterProgrammable priorities
Descriptor Support None, uses dedicated registers for each transfer

Advanced (linked list descriptors for

complex transfers)

Data Width8-bit8-bit/16-bit/32-bit
Interrupt SupportSupportedSupported
CRC CheckThrough separate CRCBuilt-in
ConfigurationBasic, through SFRs Advanced, through registers and descriptors
CPU OffloadSupportedSupported
Power EfficiencyImprovedHigh (DMA operates in Sleep mode/Standby mode)