stm32h7 adc dma多通道数据采集HAL_ADC_Start_DMA函数问题

时间:2024-03-26 07:11:24

最近用到stm32h7数据采集,用定时器触转换完成后触发dma写入ram。adc1配置如下

stm32h7 adc dma多通道数据采集HAL_ADC_Start_DMA函数问题

dma data width配置为half word模式

stm32h7 adc dma多通道数据采集HAL_ADC_Start_DMA函数问题

调用函数HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adc_val, 4);传输了8byte:

stm32h7 adc dma多通道数据采集HAL_ADC_Start_DMA函数问题

dma data width配置为byte模式后传输了4字节:

stm32h7 adc dma多通道数据采集HAL_ADC_Start_DMA函数问题

文档中给出的说明为

Parameters:

hadc,: ADC handle
pData,: Destination Buffer address.
Length,: Length of data to be transferred from ADC peripheral to memory (in bytes)

查看源码,Length被赋值给了NDTR:

stm32h7 adc dma多通道数据采集HAL_ADC_Start_DMA函数问题

也就是说这里Length的参数不应该是数据长度,应该是数据数量。