13.4.5 Memory Boundary

DMA can be used to read data from the following regions: SFR, SRAM, Configuration A Page, Configuration B Page and User Program Memory Space. Additionally, DMA can be used to write data to the SFR and SRAM regions. Refer to the memory map (Figure 4-1) for implemented regions.

While the 24-bit DMAxSRC and DMAxDST registers allow access to the entire data space, there may be circumstances where it is desirable to limit DMA operations to a much narrower range. This may be required for many reasons; for example, to protect program variables or a software stack.

The DMAHIGH and DMALOW registers allow the user to set the upper and lower address limits for DMA operations in the DMA accessible memory regions. All DMA channels are restricted to the address range set by DMAHIGH and DMALOW. When an active DMA channel initiates a memory transaction outside of the boundary defined by this register pair, an interrupt will be invoked on a channel basis. Fault status bits, ADRERR[1:0] = 10, indicate DMA operations that attempt to access above DMAHIGH, and ADRERR[1:0] = 01 indicates operations that attempt to access below DMALOW. Boundaries are applicable only to the SRAM region. The memory-mapped SFR range is always accessible by DMA.