Easyelectronics.ru

Электроника для всех
Текущее время: 26 май 2020, 16:05

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: ADC->DMA->SDIO (или NAND через FSMC) без прерываний реально?
СообщениеДобавлено: 29 апр 2019, 21:23 
Заглядывает иногда

Зарегистрирован: 18 дек 2012, 14:01
Сообщения: 89
Добрый день.
Контроллер STM32F407VG.
Столкнулся с необходимостью писать большой объём данных АЦП с высокой скоростью. Каналов 8. Частота АЦП максимальная.
АЦП работает, NAND пишется, microSD тоже.
Но на данный момент реализовано следующим образом:
Есть буфер на 8192 байт (или 4096 16-ти битных регистров), так удобнее писать постранично в NAND.
По внешнему стробу запускается конвертация АЦП.
По заполнению и прерыванию от DMA в обработчике выключаю АЦП и копирую данные из DMA во временный буфер.
Затем снова запускаю АЦП. За время следующей конвертации каналов записываю страницу в NAND из временного буфера.
Время полного сбора данных примерно 10 секунд.
В конце сбора данных из NAND всё копируется и упаковывается в требуемом формате на microSD.
Есть ли путь чтобы без обработки прерывания из буфера DMA автоматом сливались данные в FSMC (NAND)?
Можно ли как-то настроить DMA и FSMC, чтобы сканирование каналов происходило без разрывов (пусть и маленьких)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADC->DMA->SDIO (или NAND через FSMC) без прерываний реально?
СообщениеДобавлено: 29 апр 2019, 21:43 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6734
"По заполнению и прерыванию от DMA в обработчике выключаю АЦП и копирую данные из DMA во временный буфер."
Включите еще и прерывание от half и не нужно будет останавливать ADC.

Я вот одного не понимаю, что вам мешает сразу записывать во внешний "девайс"? Откуда появилась идея гонять данные во временный буфер?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADC->DMA->SDIO (или NAND через FSMC) без прерываний реально?
СообщениеДобавлено: 29 апр 2019, 22:12 
Заглядывает иногда

Зарегистрирован: 18 дек 2012, 14:01
Сообщения: 89
u37 писал(а):
"По заполнению и прерыванию от DMA в обработчике выключаю АЦП и копирую данные из DMA во временный буфер."
Включите еще и прерывание от half и не нужно будет останавливать ADC.

Я вот одного не понимаю, что вам мешает сразу записывать во внешний "девайс"? Откуда появилась идея гонять данные во временный буфер?


Имеете ввиду, задать общий буфер DMA в два раза больше (две страницы NAND)? И на половине буфера DMA в обработчике прерывания запихнуть данные в NAND пока конвертируется вторая половина?

Временный буфер добавил, чтобы при заполнении DMA он долго не ждал следующего цикла, пока передаются данные в NAND.

Правильно ли я понимаю? Если сбросить флаг заполнения буфера DMA в обработчике сразу, то начнётся следующий цикл снятия данных АЦП. И данные в буфере затрутся и в NAND они не успеют отправиться?

Задача сводится в непрерывном съёме больших объёмов данных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADC->DMA->SDIO (или NAND через FSMC) без прерываний реально?
СообщениеДобавлено: 29 апр 2019, 22:35 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6734
"Имеете ввиду, задать общий буфер DMA в два раза больше (две страницы NAND)? И на половине буфера DMA в обработчике прерывания запихнуть данные в NAND пока конвертируется вторая половина?"
Ну, так, например.

Оцифровку стоит запустить в циклическом режиме (без остановок). Идея с прерыванием по half и full в том, что пока записывается (оцифровывается) половина буфера, у вас будет время на запись "наружу" другой половины (потом они меняются местами). Т.е. пока оцифровывается первая половина - вы спокойно сохраняете вторую. Когда началась оцифровка второй половины - можно сохранять первую. Остановки и копирования в temp не требуется. Естественно, если сможете записывать вовне с скоростью оцифровки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADC->DMA->SDIO (или NAND через FSMC) без прерываний реально?
СообщениеДобавлено: 29 апр 2019, 22:42 
Заглядывает иногда

Зарегистрирован: 18 дек 2012, 14:01
Сообщения: 89
Я и забыть успел про наличие прерывания на половине. В голове крутилось, а сообразить не смог. Спасибо большое за идею.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADC->DMA->SDIO (или NAND через FSMC) без прерываний реально?
СообщениеДобавлено: 30 апр 2019, 03:17 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 800
А оно точно успевает сохраниться в NAND память?
Дело в том что те чипы что я встречал - затыкаются после команды записи блока, и мало на что реагируют. Вот пока висит ожидание - чего-то новое записать не получится. Причём перекинуть блок данных в NAND память можно очень быстро, а вот ожидать - тут всё от марки чипа зависит.
В любом случае использовать NAND память с ограниченным количеством перезаписей в качестве временного хранилища - как-то нелогично. Для этого прекрасно подходит sdram память. На ней можно сделать огромный программный!! кольцевой массив, и писать на SD в реальном времени.
SD карта тоже с причудами, туда тоже можно очень быстро скинуть блок данных, но нужно ждать пока флешка его переварит. И чем ближе размер блока к физическому размеру сектора флеш памяти в SD карте -тем меньше время ожидания.

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB