|

楼主 |
发表于 2020-7-4 15:49:33
|
显示全部楼层
硬汉哥,我这个 内部AD三路dma采集有个问题,他dma存放的数据 经常会改变位置 这是怎么回事。
正常应该是 ADC_Value[0]为 900多的 cpu温度采样,ADC_Value[1]为3000左右,ADC_Value[2]为4000左右
一开始还以为是和da的dma 冲突,关了DA的dma模式 还是这样。
adc的dma配置是 使能的扫描转换和 连续转换模式
void AD_Sampling_Function(void *argument)
{
/*温度采集实验*/
unsigned int adc_v;
double adcx;
double temp;
/*三路dma采集实验*/
uint32_t ADC_Value[3]={0};
for(;;)
{
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC_Value,3);
temp = (ADC_Value[0]*3.3 /4096 -0.76)/0.0025+25;
//temp = (adc_v*3.3 /4096 -0.76)/0.0025+25;
printf("%d %d %d\n",ADC_Value[0],ADC_Value[1],ADC_Value[2]);
// printf("温度:%f,温度AD值:%d\n",temp,ADC_Value[0]);
// printf(" AD1 value = %1.3fV ,DA1(PA4)值:%d, AD2 value = %1.3fV,DA2(PA5)值:%d\r\n", ADC_Value[1]*3.3f/4096,ADC_Value[1],ADC_Value[2]*3.3f/4096,ADC_Value[2]);
HAL_ADC_Stop(&hadc1);
osDelay(2);
}
}
|
|