概述
简介
1:传输应该可以一次传输一个字节过去到数组,然后数组只用前面几位
2:DMA外设的使用(标准库),配置DMA并使能DMA通道,使能ADC的DMA请求,使能ADC开启ADC
DMA_Cmd(DMA2_Stream0, ENABLE);// DMA 数据流使能 DMAy_Streamx->CR EN:数据流使能
ADC_DMACmd(ADC1, ENABLE);//使能ADC的DMA请求 ADC中的CR2
ADC_Cmd(RHEOSTAT_ADC, ENABLE); //开启ADC ADC_CR2 ADON:A/D 转换器开启 / 关闭
3:HAL库只需添加这行代码,他DMA和ADC都没有开启,上面三个使能都在这个函数中
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC_Value,100);//以DMA方式开启ADC转换,这个100就相当于标准库的buffsize,一次传输多少
4:由于DMA采用了连续传输的模式,ADC采集到的数据会不断传到到存储器中(此处即为数组ADC_Value)。ADC采集的数据从ADC_Value[0]一直存储到ADC_Value[99],然后采集到的数据又重新存储到ADC_Value[0],一直到ADC_Value[99]。所以ADC_Value数组里面的数据会不断被刷新。这个过程中是通过DMA控制的,不需要CPU参与。我们只需读取ADC_Value里面的数据即可得到ADC采集到的数据。其中ADC_Value[0]为通道0(PA0)采集的数据,ADC_Value[1]为通道1(PA1)采集的数据,ADC_Value[2]为通道О采集的数据,如此类推。数组偶数下标的数据为通道О采集数据,数组奇数下标的数据为通道1采集数据。
在 while(1)循
最后
以上就是故意信封为你收集整理的ADC 电压采集(多通道DMA读取)简介的全部内容,希望文章能够帮你解决ADC 电压采集(多通道DMA读取)简介所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复