Перейти к содержанию

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


MechanicV

Рекомендуемые сообщения

Вроде сконфил 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++;
}

 

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Проверил на своём stm32f407vgt, заработало. Нашёл 3 ошибки в предыдущем файле ADC_DMA.txt. Так что вот с исправленными ошибками:
 

ADC_DMA.txt

Ссылка на комментарий
Поделиться на другие сайты

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

ADC_DMA.c

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...