Easyelectronics.ru

Электроника для всех
Текущее время: 22 окт 2019, 12:09

Часовой пояс: 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
Сообщения: 6223
"По заполнению и прерыванию от 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
Сообщения: 6223
"Имеете ввиду, задать общий буфер 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
Сообщения: 745
А оно точно успевает сохраниться в NAND память?
Дело в том что те чипы что я встречал - затыкаются после команды записи блока, и мало на что реагируют. Вот пока висит ожидание - чего-то новое записать не получится. Причём перекинуть блок данных в NAND память можно очень быстро, а вот ожидать - тут всё от марки чипа зависит.
В любом случае использовать NAND память с ограниченным количеством перезаписей в качестве временного хранилища - как-то нелогично. Для этого прекрасно подходит sdram память. На ней можно сделать огромный программный!! кольцевой массив, и писать на SD в реальном времени.
SD карта тоже с причудами, туда тоже можно очень быстро скинуть блок данных, но нужно ждать пока флешка его переварит. И чем ближе размер блока к физическому размеру сектора флеш памяти в SD карте -тем меньше время ожидания.

_________________
Потоковая OS


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

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


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

Сейчас этот форум просматривают: Google [Bot], Hold, tonyk


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

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

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