打印
[STM32F1]

ADC采集

[复制链接]
568|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenfen|  楼主 | 2021-3-4 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据只有0和4095,是什么问题?

使用特权

评论回复
沙发
chuxh| | 2021-3-4 17:36 | 只看该作者
数据只有0和4095,是什么问题?

使用特权

评论回复
板凳
wenfen|  楼主 | 2021-3-4 17:40 | 只看该作者

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

程序在RET6上正常使用,到VET6上由IO口由C口换到了PB1,仔细检查过很多遍了
估计可能是什么原因?帮我指点下方向我再检查

使用特权

评论回复
地板
juventus9554| | 2021-3-4 17:42 | 只看该作者
程序的问题,再检查下你的程序。

使用特权

评论回复
5
stly| | 2021-3-4 17:44 | 只看该作者
ADC+DMA 我也遇到了这个现象读回来的数不是0就是4095或者1023,2047这几种。

使用特权

评论回复
6
wenfen|  楼主 | 2021-3-4 17:47 | 只看该作者

后来怎么解决的?

使用特权

评论回复
7
ipman| | 2021-3-4 17:49 | 只看该作者
检查是否IO口设为AD了,ADC时钟是否打开等等,这是低级错误

使用特权

评论回复
8
wenfen|  楼主 | 2021-3-4 17: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);  
}

使用特权

评论回复
9
dingy| | 2021-3-4 17:58 | 只看该作者

换了IO,通道也要换下;

使用特权

评论回复
10
wyjie| | 2021-3-4 18:00 | 只看该作者
还没解决。因为我这是用的STM32 linux系统,ADC驱动是linux里的,跟STM32的固件库完全不同。

使用特权

评论回复
11
pengf| | 2021-3-4 18:03 | 只看该作者
看一下示例代码。再改改就行了

使用特权

评论回复
12
zhuhuis| | 2021-3-4 18:06 | 只看该作者
外部电平问题或者引脚配置问题

使用特权

评论回复
13
renyaq| | 2021-3-4 18:10 | 只看该作者
直接接地看看

使用特权

评论回复
14
ousj| | 2021-3-4 18:12 | 只看该作者
程序问题吧

使用特权

评论回复
15
houcs| | 2021-3-4 18:15 | 只看该作者
寄存器怎么设置的

使用特权

评论回复
16
wuhany| | 2021-3-4 18:18 | 只看该作者
是不是寄存器设置有问题啊

使用特权

评论回复
17
午夜粪车| | 2021-3-4 18:21 | 只看该作者
也有可能是你读错寄存器了

使用特权

评论回复
18
jiajs| | 2021-3-4 18:23 | 只看该作者
应该是程序问题

使用特权

评论回复
19
wyjie| | 2021-3-4 18:32 | 只看该作者
硬件没毛病的话那就是软件的问题喽

使用特权

评论回复
20
happy_10| | 2021-3-4 18:36 | 只看该作者
应该就是你设置有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝