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

 
 
> Не передаются данные в DMA, ADC+DMA
stm32f4
сообщение Apr 12 2013, 07:51
Сообщение #1


Участник
*

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



Всем доброго дня! Подскажите, что я мог сделать неправильно?
Хочу настроить АЦП так что бы он передавал измеряемые данные в буфер, с использованием ДМА(ПДП)!
АЦП все измеряет, но данные так и не попадают в буфер(((

Код
    uint32_t BUFF[100];
        RCC->APB2ENR    |= RCC_APB2ENR_ADC1EN;
//********************DMA***************************
        RCC->AHB1ENR    |= RCC_AHB1ENR_DMA2EN;
        DMA2_Stream0->CR&=~ DMA_SxCR_CHSEL;            // 000: channel 0 selected
        DMA2_Stream0->PAR= (uint32_t)&ADC1->JDR1;     //
        DMA2_Stream0->M0AR=(uint32_t)&BUFF[0];        // Массив
        DMA2_Stream0->NDTR=10;                        // Длина буфера
        DMA2_Stream0->CR|= DMA_SxCR_MINC;            // Инкремент адреса
        DMA2_Stream0->CR|= DMA_SxCR_MSIZE_0;        // 16 бит
        DMA2_Stream0->CR|= DMA_SxCR_PSIZE_0;        // 16 бит
        DMA2_Stream0->CR|= DMA_SxCR_CIRC;            // Непрерывный режим
        DMA2_Stream0->CR&=~ DMA_SxCR_DIR;            // 01: peripheral-to-Memory
        DMA2_Stream0->CR|= DMA_SxCR_PL;                // 11: Very high приоритет
        DMA2_Stream0->CR|= DMA_SxCR_EN;                 // Вкл. передачу

        GPIOA->MODER    |= GPIO_MODER_MODER6;            //ADC1 CH6 PA6
        GPIOA->MODER    |= GPIO_MODER_MODER1;            //ADC1 CH2 PA1
        ADC1->CR1        |= ADC_CR1_DISCNUM_0;            //Discontinuous mode channel count   001: 2 channels
        ADC1->CR1        |= ADC_CR1_JDISCEN;                //1: Discontinuous mode on injected channels enabled
        ADC1->CR1        |= ADC_CR1_SCAN;
        ADC1->CR2        |= (ADC_CR2_JEXTSEL_3|ADC_CR2_JEXTSEL_0);//tim 4 (TRGO)
        ADC1->CR1        |=ADC_CR1_JAUTO;                //автоматическое преобразование для каналов в инжектированной группе после каналов  регулярной группы.
        ADC1->JSQR        |=ADC_JSQR_JL_0;                //выбор кол-ва каналов для преобразования (2 каналa инжектированной группы)
        ADC1->CR2         |=ADC_CR2_DMA;                    //разрешаем рабуту DMA
//        ADC1->CR2         |=ADC_CR2_DDS;
        ADC1->CR1        |=ADC_CR1_JEOCIE;
        ADC1->CR2        |=ADC_CR2_CONT;
//        ADC->CCR        |= ADC_CCR_DMA_0;                //01: DMA mode 1 enabled (2 / 3 half-words one by one - 1 then 2 then 3)
//        ADC->CCR        |= ADC_CCR_DDS;
        ADC1->JSQR        |=(ADC_JSQR_JSQ3_1|ADC_JSQR_JSQ3_2);// CH6 PA6
        ADC1->JSQR        |= ADC_JSQR_JSQ4_0;                // CH1 PA1
        ADC1->CR2         |=ADC_CR2_JEXTEN_0;                //01: Запуск обнаружения по фронту
        ADC1->CR2         |=ADC_CR2_JSWSTART;
        ADC1->CR2         |=ADC_CR2_ADON;


Сообщение отредактировал stm32f4 - Apr 12 2013, 13:49
Go to the top of the page
 
+Quote Post



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

 


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


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