stm32f051 DMA需要注意的一点
STM32f051的DMA注意事项
问题说明:在使用ADC的DMA通道时,遇到了序列转换的乱序问题,我使用的是DMA循环模式,但是采集的数据却总是错的:第二个内存地址存放的是ADC序列转换中的第一个通道的值,以此类推,而最后一个ADC序列转换通道的值放在第一个内存地址存放。
情况说明:使用ADC的4个通道ADC_IN0~3,ADC1对应的DMA1通道是channel1,DMA模式为循环模式,从低到高通道扫描,方向是从从外设到内存,外设数据长度16个位长,内存数据长度16个位长,数据右对齐,内存大小是4个数据(循环模式根据这个来确定从第几个DMA请求开始从头开始循环)。
问题原因:DMA配置的原因,当内存数据长度配置成16位时,第一个内存地址不使用。手册说明如下图:
使用注意事项:在存储器数据长度为16位时,不使用第一个内存地址;在存储器数据长度为32位时,不使用第一、第二个内存地址。