реклама на сайте
подробности

 
 
> проблема с АЦП, stm32f100
Mikron
сообщение Dec 3 2014, 10:10
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 1-03-10
Пользователь №: 55 731



привет, помогите с непонятной проблемой. Код стандартный

измеряю значение опорного напряжения, Vref подключено к питанию, измеряю его ADC_Channel_17, должно быть 0xfff. Получаю 0x03B2
В чем ошибка?

Код
uint16_t   adcVal;

void RCC_Configuration(void)
{
   SystemInit();

   RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1|
                     RCC_APB2Periph_GPIOA |
                     RCC_APB2Periph_GPIOB |
                     RCC_APB2Periph_GPIOC |
                     RCC_APB2Periph_GPIOD |
                     RCC_APB2Periph_GPIOE |
                     RCC_APB2Periph_AFIO  |
                     RCC_APB2Periph_ADC1,
                     ENABLE);
}

void init_adc(void)
{
   ADC_InitTypeDef ADC_InitStructure;
   ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
   ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
   ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
   ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
   ADC_InitStructure.ADC_NbrOfChannel=1;
   ADC_InitStructure.ADC_ScanConvMode=DISABLE;
   ADC_Init(ADC1,&ADC_InitStructure);

   ADC_RegularChannelConfig(ADC1,ADC_Channel_17,1,ADC_SampleTime_1Cycles5);
   ADC_Cmd(ADC1,ENABLE);

   ADC_ResetCalibration(ADC1);
   while(ADC_GetCalibrationStatus(ADC1));
   ADC_StartCalibration(ADC1);
   while(ADC_GetCalibrationStatus(ADC1));
}

int main(void)
{
   RCC_Configuration();

   init_led();
   init_usart();
   init_adc();

   ADC_SoftwareStartConvCmd(ADC1,ENABLE);
   while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
   adcVal=ADC_GetConversionValue(ADC1);

   GPIO_SetBits(GPIOB,GPIO_Pin_5);

    while(1){
    }
}


Еще странность, когда изменяю коэффициент тактирования, изменяются и показания
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mikron
сообщение Dec 12 2014, 10:27
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 1-03-10
Пользователь №: 55 731



Возникла еще одна проблема с ацп + dma, прошу помощи
Такое ощущение что в массив результаты записываются не по порядку, а случайным образом(
По запросу передаю данные по ком порту

CODE
volatile uint16_t ADC_RAW_Buffer[9];

void init_dma(void)
{
DMA_InitTypeDef DMA_InitStructure;

DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC_RAW_Buffer;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize = 9;
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_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);

DMA_Cmd(DMA1_Channel1, ENABLE);
NVIC_EnableIRQ(DMA1_Channel1_IRQn);
}

void init_adc(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 9;

ADC_RegularChannelConfig(ADC1,ADC_Channel_1, 1, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_3, 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_12, 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_0, 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_13, 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_10, 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_16, 1,ADC_SampleTime_28Cycles5);

ADC_TempSensorVrefintCmd(ENABLE);

ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd (ADC1,ENABLE); //enable ADC1

ADC_ResetCalibration(ADC1); // Reset previous calibration
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1); // Start new calibration (ADC must be off at that time)
while(ADC_GetCalibrationStatus(ADC1));

ADC_DMACmd(ADC1, ENABLE);
ADC_Cmd (ADC1,ENABLE); //enable ADC1
}

Спасибо

Сообщение отредактировал Herz - Dec 19 2014, 20:16
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Mikron   проблема с АЦП   Dec 3 2014, 10:10
- - ДЕЙЛ   Мошть вывод Vref нельзя соединять со входом? Если ...   Dec 3 2014, 10:34
- - Сергей Борщ   В описании сказано: ЦитатаNote: The TSVREFE bit mu...   Dec 3 2014, 10:51
|- - adnega   Цитата(Сергей Борщ @ Dec 3 2014, 14:51) Н...   Dec 3 2014, 11:27
|- - Сергей Борщ   Цитата(adnega @ Dec 3 2014, 13:27) К этом...   Dec 3 2014, 12:30
- - Mikron   Всем спасибо за помощь TSVREFE устанавливается AD...   Dec 4 2014, 10:53
- - Mikron   Появился еще вопрос. Правильно ли что для измерени...   Dec 5 2014, 13:28
- - adnega   Странный какой-то у вас матан... Temperature (in ...   Dec 5 2014, 13:54
- - Сергей Борщ   А вот тут мы можем плавно перейти к решению предыд...   Dec 5 2014, 18:32
|- - adnega   Цитата(Сергей Борщ @ Dec 5 2014, 22:32) т...   Dec 5 2014, 20:07
- - kan35   Код ADC_RegularChannelConfig(ADC1,ADC_Channe...   Dec 19 2014, 18:58
- - VVS_   Здравствуйте! Не могу запустить АЦП та STM32F0...   Feb 11 2015, 12:04
|- - A. Fig Lee   Цитата(VVS_ @ Feb 11 2015, 07:04) Здравст...   Feb 11 2015, 13:10
- - VVS_   Стоит вот так. Файлы компилятор находит, т.к. если...   Feb 11 2015, 13:25
- - nill   ADC_InitStructure - это структура типа ADC_InitTyp...   Feb 12 2015, 07:37


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 17:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01474 секунд с 7
ELECTRONIX ©2004-2016