Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • STM32. ADC (АЦП). Пример кода

    Для самого запуска ADC, в нашем случае это ADC1->8 канал, и его работы по оцифровке входного сигнала нужно совсем немного:
    1) Настройка тактирования нужного порта (GPIOB).
    2) Настройка входного пина PB0 на котором находится 8 канал ADC1 (см. Документацию вывода ножек. Нас интересует "третье" состояние ножки - аналоговый режим, не путать с режимом альтернативной функции или тем более режимом обычного ввода/вывода). Тут нам понадобится всего один регистр GPIOB_MODER.
    3) Настройка тактирования ADC1. Из физической схемы или карты адресного пространства видно, что ADC находятся на шине APB2. В регистрах тактирования RCC_APB2ENR находим бит ADC1EN, устанавливающий тактирование нужного нам ADC (ADC1).
    4) Переходим к настройкам самого ADC. Устанавливаем бит ADDON регистра ADC1_CR2, который включит ADC. В этом режиме ADC потребляет незначительное количество энергии, и находится в состоянии покоя.
    5) В этот же регистр ADC1_CR2 установим бит CONT (режим непрерывного преобразования).
    6) В первые 5 битов регистра ADC1_SQR3 установим номер канала для преобразования (8 канал). В следующие биты этого регистра, задаются другие номера каналов если нужно их считывать по очереди.
    7) Устанавливаем бит SWSTART регистра ADC1_CR2, который запускает процесс преобразования.
    8) Ждем появления флага EOC в статусном регистре ADC1_SR, сигнализирующий о конце преобразования. Флаг сбрасывается аппаратно после чтения регистра данных ADC1_DR.
    9) Читаем преобразованные данные с регистра ADC1_DR.
    Адреса регистров ADC

    int main(void){


    RCC_GPIO|=0x2;


    GPIOB_MODER|=0x3;


    RCC_ADC|=0x100;// Установка тактирования ADC1
    ADC1_CR2=0x1;// Включаем ADC1
    ADC1_CR2|=0x2;// Постоянное преобразование
    ADC1_SQR3=8;// Номер канала
    ADC1_CR2|=0x40000000;// Запуск процесса преобразования


    while(1){

    while((ADC1_SR&0x2)!=0x2){}
    USART2_DR=ADC1_DR;// Отправляем данные куда нужно

    }

    }



    Читайте больше в категории: Программирование встраиваемых систем

    2016-06-09 13:41:34



    Другие статьи:

    STM32. DMA - SPI - акселерометр

    Почему я не использую движок WordPress

    Java. Списки ArrayList и LinkedList

    Бронецький Замок. 3D реконструкція

    Maya. Сглаживание Smooth и по нормалям

    STM32. Регистры DMA

    Java. Создание графических приложений

    Середнянський замок. 3D реконструкція

    Математика и Программирование

    STM32. Передача данных по USART