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.
