[STM32F1] ADC采集

[复制链接]
754|19
 楼主| wenfen 发表于 2019-4-15 19:32 | 显示全部楼层 |阅读模式
数据只有0和4095,是什么问题?
chuxh 发表于 2019-4-15 19:37 | 显示全部楼层
数据只有0和4095,是什么问题?
 楼主| wenfen 发表于 2019-4-15 19:39 | 显示全部楼层

STM32F103VET6,ADC+DMA采集,电压是16.8V电池电阻6分压的电压
接上电池AD数据就是4095,不接就是0,IO口量过电压是2点多伏

程序在RET6上正常使用,到VET6上由IO口由C口换到了PB1,仔细检查过很多遍了
估计可能是什么原因?帮我指点下方向我再检查
juventus9554 发表于 2019-4-15 19:44 | 显示全部楼层
程序的问题,再检查下你的程序。
stly 发表于 2019-4-15 19:47 | 显示全部楼层
ADC+DMA 我也遇到了这个现象读回来的数不是0就是4095或者1023,2047这几种。
 楼主| wenfen 发表于 2019-4-15 19:52 | 显示全部楼层
后来怎么解决的?
 楼主| wenfen 发表于 2019-4-15 19:55 | 显示全部楼层
初始化程序很简单,用的引脚是PA0,PA1和PB1


void  Adc_Init(void)
{         
        ADC_InitTypeDef ADC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB |RCC_APB2Periph_ADC1,ENABLE );        
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);   
        
                        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;               
        GPIO_Init(GPIOA, &GPIO_InitStructure);        
                                
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;               
        GPIO_Init(GPIOB, &GPIO_InitStructure);        

        ADC_DeInit(ADC1);  

            ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
            ADC_InitStructure.ADC_ScanConvMode = ENABLE;//DISABLE;            
            ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;                           
            ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;  
            ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  
            ADC_InitStructure.ADC_NbrOfChannel = 5;
            ADC_Init(ADC1, &ADC_InitStructure);   
   
          ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 );   
           ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );   
           ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 3, ADC_SampleTime_239Cycles5 );   
        ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 4, ADC_SampleTime_239Cycles5 );
        ADC_RegularChannelConfig(ADC1, ADC_Channel_17, 5, ADC_SampleTime_239Cycles5 );   

            ADC_Cmd(ADC1, ENABLE);     
            ADC_DMACmd(ADC1, ENABLE);      
   
        ADC_TempSensorVrefintCmd(ENABLE);
            ADC_ResetCalibration(ADC1);                 
            while(ADC_GetResetCalibrationStatus(ADC1));        
            ADC_StartCalibration(ADC1);      
            while(ADC_GetCalibrationStatus(ADC1));   

        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}                                 



void DMA_Config(void)
{  
    DMA_InitTypeDef DMA_InitStructure;   
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);   
     
    DMA_DeInit(DMA1_Channel1);  
    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;  
    DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&AD_Value;  
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  
   
    DMA_InitStructure.DMA_BufferSize = 5;  
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;  
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;  
   
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;  
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;  
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  
    DMA_Init(DMA1_Channel1, &DMA_InitStructure);  
     
    DMA_Cmd(DMA1_Channel1, ENABLE);  
}
dingy 发表于 2019-4-15 19:58 | 显示全部楼层
换了IO,通道也要换下;
wyjie 发表于 2019-4-15 20:01 | 显示全部楼层
还没解决。因为我这是用的STM32 linux系统,ADC驱动是linux里的,跟STM32的固件库完全不同。
pengf 发表于 2019-4-15 20:05 | 显示全部楼层
看一下示例代码。再改改就行了
 楼主| wenfen 发表于 2019-4-15 20:08 | 显示全部楼层

嗯,预料中的结果,先结贴吧,多谢大家啦
equivalent 发表于 2019-4-15 21:34 | 显示全部楼层
外部电平问题或者引脚配置问题
木木guainv 发表于 2019-5-7 10:07 | 显示全部楼层
直接接地看看
xiaoqizi 发表于 2019-5-7 10:21 | 显示全部楼层
程序问题吧
renzheshengui 发表于 2019-5-7 10:49 | 显示全部楼层
寄存器怎么设置的
paotangsan 发表于 2019-5-7 11:19 | 显示全部楼层
是不是寄存器设置有问题啊
labasi 发表于 2019-5-7 11:30 | 显示全部楼层
也有可能是你读错寄存器了
keaibukelian 发表于 2019-5-7 11:34 | 显示全部楼层
应该是程序问题
heimaojingzhang 发表于 2019-5-7 11:38 | 显示全部楼层
硬件没毛病的话那就是软件的问题喽
guanjiaer 发表于 2019-5-7 11:42 | 显示全部楼层
应该就是你设置有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部