13.4.4 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.