Jump to content

Работа ADC на два канала STM32F411 через DMA


MechanicV
 Share

Recommended Posts

Вроде сконфил DMA под АЦП но при попытки запуска потока DMA устанавливает флаг ошибки передачи потока

Прерывание тоже от DMA не проходит.

sbit LCD_RS at GPIOB_ODR.B4;
sbit LCD_EN at GPIOB_ODR.B5;
sbit LCD_D4 at GPIOB_ODR.B6;
sbit LCD_D5 at GPIOB_ODR.B7;
sbit LCD_D6 at GPIOB_ODR.B8;
sbit LCD_D7 at GPIOB_ODR.B9;

int adc_res_0[11], adc_res_1[11];
char txt[11];
short i=0, t=0, k=0;
void main()
{
RCC_APB2ENR.B8=1;              // ADC1EN: синхронизация АЦП1 включена
RCC_AHB1ENR.B0=1;              // GPIOAEN: часы порта IO включаются
RCC_AHB1ENR.B22=1;            // DMA2EN: часы DMA2 включены
GPIOA_MODER.B4=1;             // : Режим вывода общего назначения порт PA2
GPIOA_MODER.B5=0;  
GPIOA_OTYPER.B2=0;  //
GPIOA_OSPEEDR.B4=1;   
GPIOA_OSPEEDR.B5=1;

GPIOA_MODER.B0=1;           // Аналоговый режим порт PA0
GPIOA_MODER.B1=1;
GPIOA_OSPEEDR.B0=1;
GPIOA_OSPEEDR.B1=1;

GPIOA_MODER.B2=1;          // Аналоговый режим порт PA1
GPIOA_MODER.B3=1;
GPIOA_OSPEEDR.B2=1;
GPIOA_OSPEEDR.B3=1;

EN_bit =0;                            // Если поток включен, отключите его, сбросив бит EN в регистр DMA_SxCR

DMA2_LIFCR=1;                  // Все потоковые выделенные биты, очищены
DMA2_HIFCR=1;

DMA2_S0PAR=(int)&ADC1_DR;               // адрес регистра периферийного порта в регистре DMA_SxPAR
DMA2_S0M0AR=(int)&adc_res_0;           // адрес памяти в регистре DMA_SxMA0R
DMA2_S0NDTR =10;

CHSEL0_bit =0;                                          // канал DMA2 канал0 (запрос) с помощью CHSEL [2: 0] в регистре DMA_SxCR
CHSEL1_bit =0;
CHSEL2_bit =0;

PL0_bit =1;                         // приоритет потока наивысший
PL1_bit =1;

MSIZE0_bit =1;                   // Размер данных памяти 16 бита
MSIZE1_bit =0;

PSIZE0_DMA2_S0CR_bit =1;         // Размер периферийных данных 16 бит
PSIZE1_DMA2_S0CR_bit =0;

MINC_bit =1;                                  // Указатель адреса памяти увеличивается после каждой передачи данных 
                                                                //(приращение выполняется в соответствии с MSIZE)

DIR0_bit =0;                                    //Направление передачи данных Эти биты устанавливаются и сбрасываются программно.
DIR1_bit =0;                                        // : Периферийное в память

//PFCTRL_bit =1;                              //



EnableInterrupts();
NVIC_IntEnable(IVT_INT_DMA2_Stream0);  // разрешение прерывания при завершении передачи
TCIE_DMA2_S0CR_bit =1;                                // разрешение прерывания при завершении передачи


DMA_bit =1;                              // режим прямого доступа к памяти АЦП

SMPx_x0_ADC1_SMPR2_bit  =1;         
SMPx_x1_ADC1_SMPR2_bit  =0;
SMPx_x2_ADC1_SMPR2_bit  =0;

ADCPRE0_bit =1;    //
ADCPRE1_bit =0;

ADON_bit =1;             //вкл модуля АЦП
SWSTART_bit =1;      //старт преобразования АЦП

EN_bit =1;                   //запуск потока DMA

Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
while(1)
{
if(TCIF0_bit )      // Флаг прерывания завершения передачи потока
{
t=11;
}
else if(HTIF0_bit )    // Флаг прерывания половинной передачи потока
{
t=22;
}
else if(TEIF0_bit )      // Флаг прерывания ошибки передачи потока
{
t=33;
}
else if(DMEIF0_bit )   // Флаг прерывания из-за ошибки прямого режима потока
{
t=44;
}
WordToStr(t, txt);
Lcd_Out(1, 1, txt);
}
}


void DMA_INT_2() iv IVT_INT_DMA2_Stream0 ics ICS_AUTO     // прерывания при завершении передачи
{
CTEIF0_bit =1;
ADC1_SQR3.B0=i;
EN_bit =1;
SWSTART_bit =1;
i++;
}

 

Link to comment
Share on other sites

  • 4 weeks later...

LIMF – источники питания High-End от MORNSUN со стандартным функционалом на DIN-рейку
На склад Компэл поступили ИП MORNSUN (крепление на DIN-рейку) с выходной мощностью 240 и 480 Вт. Данные источники питания обладают 150% перегрузочной способностью, активной схемой коррекции коэффициента мощности (ККМ; PFC), наличием сухого контакта реле для контроля работоспособности (DC OK) и возможностью подстройки выходного напряжения. Источники питания выполнены в металлическом корпусе, ПП с компонентами покрыта лаком с двух сторон, что делает ее устойчивой к соляному туману и пыли. Изделия соответствуют требованиям ANSI/ISA 71.04-2013 G3 на устойчивость к коррозии, а также нормам ATEX для взрывоопасных зон.
Подробнее>>

Выгодные LED-драйверы для решения любых задач

КОМПЭЛ представляет со склада и под заказ широкий выбор LED-драйверов производства MEAN WELL, MOSO, Snappy, Inventronics, EagleRise. Линейки LED-драйверов этих компаний, выполненные по технологии Tunable White и имеющие возможность непосредственного встраивания в систему умного дома (димминг по шине KNX), перекрывают практически полный спектр применений: от простых световых указателей и декоративной подсветки до диммируемых по различным протоколам светильников внутреннего и наружного освещения. 

Подобрать LED-драйвер>>

А вот код на 407vgt в вашем стиле, который запускает 20 2-х канальных преобразований ADC с использованием DMA и разрешает прерывание по завершении процесса преобразования. Обработчик прерывания и настройка вектора прерывания отсутствует. По документации на 407 и 411 даже адреса регистров по-моему одинаковые.
Надеюсь чем-то помог.

ADC_DMA.c

Link to comment
Share on other sites

ER10450 – литий-тионилхлоридная батарейка FANSO EVE Energy формата ААА
Компания FANSO EVE Energy расширила номенклатуру продукции, разработав новый химический источник тока (ХИТ) – батарейку литий-тионилхлоридной электрохимической системы (Li-SOCl2; номинальное напряжение 3,6 В) типоразмера ААА – ER10450. Батарейка имеет бобинную конструкцию (тип Energy) и предназначена для долговременной работы при малых токах.
Батарейка может применяться в приборах учета ресурсов, в различных датчиках, устройствах IoT и в других приборах и устройствах, в которых требуется компактный ХИТ соответствующей емкости.
Подробнее >>

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

    • Максимальная (полная) версия- это версия на трех парах в первом посте. Мини-версия (изначальная) - версия на одной паре.  Импеданс акустики имеет свойство падать на определенных частотах и бета выходных транзисторов так же падает при увеличении тока через транзистор. По итогу, если делать на одной паре, то нужны транзисторы с малой зависимостью беты от тока, либо нагружать усилитель на ШП ДГ. Поэтому даже для небольши мощностей и напряжений рекомендуют ставить от 2 пар ВК. Схема по ссылке, как раз мини-версия с двумя парами транзисторов ВК. На схеме отсутствует защита и компенсатор.
    • Взглянем на дело с другой стороны. так сказать отстранённо. Мальчик Лёша прочитал про некий прибор "подачеметр" на некоем форуме и очень расстроился что такого прибора то у него - и нету. А рассказы про некую "подачу" никак не померишь и к делу- не пришьёшь.    Кстати, про вентиляторы, я тебя не трогал от слова "совсем". поэтому свои грешки мне не приписывай.  живи с ними сам. Ах да, твои схемы паять планов пока нет. денег на покупку китов никак не насобираю, а так мечтал всё.
    • Ну например об этой Хотя, я уже вижу, что по сравнению с максимальной, УН сильно упрощён. Кстати, есть двухтранзисторный вариант, максимально приближенный к полной версии ?
    • Не отличаются почти. Версия с двумя парами не равно полная версия. О каких схемах речь конкретно? Их тут уже пяток разных точно.
    • @Алексей1977 это заводская маркировка, по спецификации на прибор надо искать, а их не будет. Откуда выдернут трансформатор?  
    • Роман, а почему 9 вольт? питание, а больше нету у Вас там будет под 23...24 вольта сидеть во время работы. На 8 лапе видно, что на 11 как сигнал? на 12, что ? Ваша пила с БП? емкость есть с 12 лапы на 7 в микро 100? Вы чудеса показываете 
×
×
  • Create New...