Описание DMA в РП К1921ВГ1Т

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

durimar_13 писал(а): 07 авг 2026, 15:43 Я так понимаю, в Вашем сообщении должно быть:
1: adc_res_buf0
2: adc_res_buf1
3: adc_res_buf0
4: adc_res_buf1
....
Да, Вы правы. Это я ачипятался.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

RabidRabbit писал(а): 07 авг 2026, 20:45
durimar_13 писал(а): 07 авг 2026, 15:04 RST - это так кнопку "RESET" на плате я назвал. Не сам придумал, увидел у кого то...
В отладке вот на этом месте виснет при страте:
Попробуйте всё же сброс периферии через регистры RCU->RSTDIS*
Спасибо, попробую.
С уважением, Виктор.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

Здравствуйте!
В РП написано что регистром RSTSYS можно сделать сброс МК.
Вопрос такой: это равносильно сбросу Внешним сигналом с вывода RST (активный уровень сигнала сброса – низкий)?
В какой последовательности заносить значения в поля:
RCU->RSTSYS_bit.KEY = 0xA55A;
RCU->RSTSYS_bit.RSTEN = 1;
Или наоборот
Нет ли каких подводных камней?
С уважением, Виктор.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

К сожалению всякие варианты сбросов
в самом начале функции main

int main(void){
// сброс всех!
// эти команды сбрасывавют биты включения
// периферийных блоков на соответвущих шинах
// RCU->RSTSYS_bit.KEY = 0xA55A;
// RCU->RSTSYS_bit.RSTEN = 1;
// RCU->RSTDISAPB0 = 0; // DMA
// RCU->RSTDISAPB1 = 0; // TMR
// RCU->RSTDISAPB2 = 0; // UART
// RCU->RSTDISAHB = 0; // для сброса АЦП и USB, GPIO

мне не помогают.
Почти через раз запуск в отладке приводит к зависанию.
Обычно вот здесь
while(1) // вечный цикл
{
if(dma_flg) // TODO: Виснет в этом месте, требуется кнопка RESET! В чем дело?
{
dma_flg = 0;
........
Если нажать на плате кнопку рестарта, программа перезапускается и работает.

Но иногда и инициализация даже не получается. висит и все тут. Никакие кнопки не помогают.
Где мне еще порыть, кто знает?
С уважением, Виктор.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

Другие мои наработки так себя не ведут.
Вот же...
С уважением, Виктор.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

Думаю, это связано с как то с TMR1///
С уважением, Виктор.
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

durimar_13 писал(а): 07 авг 2026, 22:30 В РП написано что регистром RSTSYS можно сделать сброс МК.
Вопрос такой: это равносильно сбросу Внешним сигналом с вывода RST (активный уровень сигнала сброса – низкий)?
В какой последовательности заносить значения в поля:
RCU->RSTSYS_bit.KEY = 0xA55A;
RCU->RSTSYS_bit.RSTEN = 1;
Или наоборот
Нет ли каких подводных камней?
Скорее всего так RCU->RSTSYS = 0xA55A0001;
Но это будет сброс, равноценный аппаратному.
Проверьте, выведен ли у Вас на разъём JTAG сигнал nRST.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

Вот еще раз прозвонил проводки между программатором и МОП
Я использую отладчик на отладочной плате NUKE для MIK32, использован FT2232HL.
В моей конструкции сигнал RST инверсный от этой платы, поступает на вход nRST, контакт 10 разъема JTAG МОП К1921ВГ1Т, а там - на МОП в схему сброса МК К1921ВГ1Т.
На МОП К1921ВГ1Т есть одиночный пин, обозначение пина - XP8, название TRST. Этот сигнал тоже может сбрасывать МК, но у меня он никак не может быть применен. Хотя для него из шлейфа я вывел отдельную "маму", но не подключаю.
Дело в том, что на стороне программатора эта "мама" подключена к линии TRST-инверсия, которая в свою очередь должна сидеть на ноге MIK32:43 P0.14. Поскольку на МОП NUKE перемычки от разъема JTAG до MIK32 сейчас сняты, то MIK32 отключен от JTAG. Получаем "чистый" отладчик. Линия TRST "висит в воздухе".
(МОП - макетно - отладочная плата.)
На других моих проектах и при использовании примеров зависаний я не наблюдаю.
Информация эта - просто инфа, ни к чему не обязывает.
Я, конечно, сам пытаюсь разобраться.
С уважением, Виктор.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

Ага! Вот опять наблюдаю зависание. Теперь не использую TMR1, использую циклический режим ADC с задержками между перезапусками, остальное похоже. Опять при первом запуске в отладке виснет на ожидании флага от прерывания DMA.

while(samples_count < nsamples) // ждем и обрабатываем прерывания от DMA
{
if(dma_flg) // вот здесь никогда не установлен флаг при первом запуске.
{
dma_flg = 0;
for (unsigned int i = 0; i < 32 - 1; i++)
{
Если нажать RESET на плате, начинается еще одна итерация, но отрабатывает уже без зависания.
С уважением, Виктор.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: Описание DMA в РП К1921ВГ1Т

Сообщение durimar_13 »

В общем, как и ожидалось, такой мой подход, "по совету Алисы" совершенно не удовлетворителен.
Мало того, что подвисания, так еще и приемлемый результат для 100 выборок не удается получить на скорости семплирования больше 50 kSPS.
Плохо все.
Есть еще улучшения, которые посоветовал RabidRabbit. Надо пробовать.
С уважением, Виктор.
Ответить

Вернуться в «32-разрядные микроконтроллеры»