A/D转换设置为Ch0、Ch1、Ch2、Ch3连续转换模式,DMA通道1配置给A/D转换器。每次转换结束后,A/D转换器会发出中断并引发DMA请求。同时A/D转换器会提供PIA(外设间接地址)给DMA控制器以便和起始地址偏移量寄存器装配DPSRAM地址,确定相应缓冲区的地址位置。由于每个A/D通道的外设地址是不同的,因此在DPSRAM里每个A/D通道都有自己独立的缓冲区。形象的说:A/D转换的结果被不断丢给(Scatter)DMA控制器,DMA控制器根据寄存器间接寻址机制,把相应A/D通道的数据收集(Gather)在DPSRAM里各个A/D通道独立的缓冲区里。显而易见,这种方式提高了A/D转换的DMA传输效率。CPU可以很方便的利用简单的寻址方式直接利用这些数据。 DMA缓冲区间接地址的拼装过程根据外设的特点,这个模式可以双向工作,因此DMA控制器需要作相应的配置以支持外设读或写操作。外设提供地址序列,用于访问DPSRAM里的数据。允许分散/集中(Scatter/Gather)寻址机制。比如:可以利用这个特点把收到的A/D数据投放到多个缓冲区里,归类来自不同通道的数据,大大减轻了CPU负担。外设间接寻址方式时,DMA缓冲区间接地址的拼装过程。低位地址来自于外设,称为外设间接地址(PIA),当外设中断产生DMA请求后会把PIA提供给DMA地址生成逻辑,外设会使用几个最低有效位作为寻址空间(不同外设占用的位数不同),运算的时候对于超过外设空间的位全部填“0”;另一方面,DMA地址寄存器会提供一个固定的基地址作为高位地址,用户在选择缓冲区基址(Base Address)地址偏移量的时候要注意,保证地址里有若干个(≥PIA的位数)最低有效位为“0”。这些为“0”的最低有效位是为PIA留出来的。最后,高位填“0”后的外设间接地址和DMA起始地址寄存器进行“或”逻辑,这样就合成了有效的指向DMA缓冲RAM的地址。