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

 
 
> Запуск АЦП преобразования по таймеру
Sprite
сообщение Mar 23 2011, 05:59
Сообщение #1


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

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Доброго всем времени суток!

Задача следующая: требуется запустить одно АЦП-преобразование по событию канала 4 таймера 4. Делаю все как указано в Reference Manual, но преобразование стартует при совпадении с TIM4_CCR4 и продолжает выполняться пока счетчик (TIM4_CNT) не достигнет вершины (TIM4_ARR), при этом содержимое регистра ADC1_DR постоянно обновляется. А мне нужно получить только одно значение в момент совпадения счетчика с TIM4_CCR4.

В Reference Manual написано:

11.3.4 Single conversion mode

In Single conversion mode the ADC does one conversion. This mode is started either by
setting the ADON bit in the ADC_CR2 register (for a regular channel only) or by external
trigger (for a regular or injected channel), while the CONT bit is 0.
Once the conversion of the selected channel is complete:
● If a regular channel was converted:
–The converted data is stored in the 16-bit ADC_DR register
–The EOC (End Of Conversion) flag is set
–and an interrupt is generated if the EOCIE is set.
● If an injected channel was converted:
–The converted data is stored in the 16-bit ADC_DRJ1 register
–The JEOC (End Of Conversion Injected) flag is set
–and an interrupt is generated if the JEOCIE bit is set.
The ADC is then stopped.

Т.е. если я правильно понимаю - после преобразования АЦП должен остановиться - но он не останавливается, а продолжает работать.

Может быть я задаю не Single Mode?
Контроллер stm32f103.

Прикладываю скрины настроек АЦП и таймера.
Прикрепленное изображение
Прикрепленное изображение

Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Mar 24 2011, 07:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Битики должны быть в нуле - Вы правы.
Не обратил внимание на скрины из первого поста(

Сейчас обратил - частота АЦП 36МГц. А это много)
Go to the top of the page
 
+Quote Post
Sprite
сообщение Mar 24 2011, 08:14
Сообщение #3


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

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Цитата(adnega @ Mar 24 2011, 13:00) *
Сейчас обратил - частота АЦП 36МГц. А это много)



А сколько должно быть? Таймер работает на частоте 72МГц, вот процедура инициализации:

Код
void RCC_Configuration(void)
{
    ErrorStatus HSEStartUpStatus;
    
      // RCC system reset(for debug purpose)
      RCC_DeInit();

      // Enable HSE
      RCC_HSEConfig(RCC_HSE_ON);

      // Wait till HSE is ready
      HSEStartUpStatus = RCC_WaitForHSEStartUp();

      if (HSEStartUpStatus == SUCCESS)
      {
        // Enable Prefetch Buffer
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

        // Flash 2 wait state
        FLASH_SetLatency(FLASH_Latency_2);
  
        // HCLK = SYSCLK
        RCC_HCLKConfig(RCC_SYSCLK_Div1);
  
        // PCLK2 = HCLK
        RCC_PCLK2Config(RCC_HCLK_Div1);

        // PCLK1 = HCLK/2
        RCC_PCLK1Config(RCC_HCLK_Div2);

        // PLLCLK = 8MHz * 9 = 72 MHz
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

        // Enable PLL
        RCC_PLLCmd(ENABLE);

        // Wait till PLL is ready
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}

        // Select PLL as system clock source
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        // Wait till PLL is used as system clock source
        while(RCC_GetSYSCLKSource() != 0x08){}
      }
  
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);      

    RCC_APB1PeriphClockCmd(    RCC_APB1Periph_TIM2 |
                            RCC_APB1Periph_TIM3 |
                            RCC_APB1Periph_TIM4, ENABLE);

    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOA |
                            RCC_APB2Periph_GPIOB |
                            RCC_APB2Periph_GPIOC |
                            RCC_APB2Periph_GPIOD |
                            RCC_APB2Periph_GPIOE |
                            RCC_APB2Periph_USART1|
                            RCC_APB2Periph_ADC1  |
                            RCC_APB2Periph_TIM1  |
                            RCC_APB2Periph_AFIO, ENABLE);
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 11:49
Рейтинг@Mail.ru


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