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

 
 
> STM32F103T8, не получается DMA-прерывание
AndreyKeil
сообщение Sep 30 2010, 13:30
Сообщение #1


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

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Прошу помощи. 1111493779.gif
Не возникает прерывание от DMA- первого канала. Настраиваю АЦП:
Цитата
RCC->CFGR&= ~0x000C000; //(предделитель PLCK2 АЦП = 2)
RCC->CFGR|= 0x0008000; //предделитель PLCK2 АЦП = 6
GPIOA->CRL&= ~(0x00000033|//PA0,PA1 как входы
0x000000CC);//PA0,PA1 как аналоговые входы
RCC->APB2ENR|= (0x0001| //разреш альтернативных функций
0x0200);//ADC1EN-разреш.тактирования АЦП
ADC1_SQR1=0x00100000; //длина-две последовательности каналов(0-одна)
ADC1_SQR2= 0x0000;
ADC1_SQR3=
00<<(0*5)| //выбор нулевого канала для преобразования
01<<(1*5)| //выбор первого канала для преобразования
00<<(2*5)| //второй канал не занят
00<<(3*5); //третий канал не занят
ADC1_SMPR2= (0x00000006| //0-канал,время преобраз 71.5циклов
0x00000030);//1-канал,время преобраз 71.5циклов
ADC1_CR1= (0x000100| //SCAN-сканирование каналов
0x000000); //
//0x000020); //EOCIE-прерывание от АЦП разрешено
ADC1_CR2= (0x00100000| //запуск внешним событием рег.каналов
0x000E0000| //SWSTART- программный запуск преобразования
0x00000100| //DMA-вкл.
0x00000001);//ADON-разреш. АЦП

ADC1_CR2|= 0x00400000;//старт преобразования

Затем настраиваю DMA:
Цитата
RCC->AHBENR|= 0x00000001;//разреш.клока DMA1
DMA_CNDTR1= c_InxAdc; //кол-во передаваемых данных
DMA_CPAR1= 0x4001244C; //адрес периферийный &ADC1_DR
DMA_CMAR1= BufAdc; //адрес памяти
DMA_CCR1=0 << 14| //передача память-память
01 << 12| //приоритет-MEDIUM
02 << 10| //1-разрядность памяти 16 бит (2-32 бит)
02 << 8| //1-разрядность периферии 16 бит (2-32 бит)
1 << 7| //инкремент адреса памяти
0 << 6| //инкремент адреса периферии
1 << 5| //циклический режим (по кругу)
0 << 4| //0-чтение с периферии в память(1-наоборот)
1 << 3| //TEIE-прерывание по ошибке передачи
1 << 2| //HTIE-прерывание по половине передачи
1 << 1| //TCIE-прерывание по завершению передачи
1 << 0; //EN-разрешение канала

После запуска проги вижу, что АЦП работает, передаёт данные двух каналов АЦП в DMA, DMA передает данные в озу (массив BufAdc[2]), но прерывание от DMA при этом не возникает. Что я делаю не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
ISK2010
сообщение Sep 30 2010, 18:52
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 21-09-10
Из: г.Зеленоград
Пользователь №: 59 631



А NVIC инициализировал? включил в нем канал для этого прерывания?
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Oct 1 2010, 05:43
Сообщение #3


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

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Похоже,нет. rolleyes.gif
Укажи, что надо сделать. Я тут затрудняюсь.
Go to the top of the page
 
+Quote Post
ISK2010
сообщение Oct 1 2010, 06:03
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 21-09-10
Из: г.Зеленоград
Пользователь №: 59 631



Для первого канала DMA1:
Ты пользуешься STшными библиотеками? Если да, то так:
CODE
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

А если не пользуешься, то... сам еще так не делал rolleyes.gif
Могу только сказать, что DMA1_Channel1_IRQn=56 на 105ом.

Сообщение отредактировал ISK2010 - Oct 1 2010, 06:07
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Oct 3 2010, 10:51
Сообщение #5


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

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Спасибо за помощь!!! Помогло!
Не понял, что означают строчка:
"Могу только сказать, что DMA1_Channel1_IRQn=56 на 105ом."
Что означает число "56 на 105ом" ?
Go to the top of the page
 
+Quote Post
ISK2010
сообщение Oct 3 2010, 15:58
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 21-09-10
Из: г.Зеленоград
Пользователь №: 59 631



56 прерывание на ST32F105.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 02:33
Рейтинг@Mail.ru


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