项目场景:stm32f103c8t6 ADC DMA CubeMX,在ADC和DMA调式的时候发现的一些错误细节和问题。
名词解释
单通道,多通道:在ADC中有输入引脚和通道的区别,输入引脚就是可见的引脚,那么通道是连接这些引脚的通道,但是注意,如果只有一个输入引脚也可以多通道,就是多通道扫描一个引脚(虽然没什么用)。也就是说当激活的输入引脚数小于通道数的时候引脚就会被多次使用在通道里面。
问题描述
无论是在单通道还是多通道模式,启用DMA扫描模式,使用最快的采样时间1.5Cycles,会导致单片机卡死(暂时不知道为什么,希望有人能解决一下)。
解决方案:
使用高一点的采样时间
问题描述
在选择传输的字节大小时,如果选择了跟代码默认大小不一样的字节大小。
HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)
要注意 uint32_t Length 这个参数,是要跟ADC中的2Byte(Half Word)对齐,不然会导致数据的错乱。在代码中接收的数组也要注意跟DMA传来的数据大小一致。
解决方案:
注意数据大小吧