Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Частота прерываний под Linux'ом
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Страницы: 1, 2
TigerSHARC
sasamy предложил красивое решение, но если взять пример с прерыванием от ацп, то я запускаю прием данных по spi pdc в функции прерывания и принимаю ровно 16 байт.
В случае если писать все на таймерах то непонятно где вызывать прием данных. Или как-то по-хитрому надо настроить DMA при инициализации драйвера?
sasamy
Цитата(Alexashka @ Aug 17 2012, 23:20) *
Т.е второй таймер генерит постоянно, а первый вырабатывает чип селект такой длительности, чтобы в его активный период уложилось ровно 128 импульсов второго таймера. Я правильно понял идею?


В целом да, только чипселект вырабатывается исходя из того чтобы он был неактивен на время (t1max + tCONVmax) - это максимальное время после подачи импульса на линиях CONVST когда АЦП выдает сигнал BUSY, в оставшееся время tCYCLE - (t1max + tCONVmax) он активен и за это время второй таймер должен выдать 128 импульсов.

Цитата
В случае если писать все на таймерах то непонятно где вызывать прием данных.


PDC выставляет флаг ENDRX flag is set when the PERIPH_RCR register reaches zero по заполнению текущего буфера, а spi генерирует прерывание SPI Interrupt Enable Register - ENDRX: End of Receive Buffer Interrupt Enable

продолжая заполнять второй скопировав и обнулив SPI_RNCR, SPI_RNPR - я же приводил цитату из даташита, в обработчике нужно записать новое значение в SPI_RNCR, SPI_RNPR и сделать необходимые манипуляции с данными и так по кругу.

PS для BUSY будет просто tCONVmax без t1 - просмотрел где стрелка на диаграмме заканчивается
TigerSHARC
Получается PDC настраивается один раз во время инициализации и тут же запускается прием. Как только заполняется буфер(мне нужен 1Мб например) в прерывании от spi обнуляем указатели и забираем данные. BUSY не используем.
sasamy
Цитата(TigerSHARC @ Aug 18 2012, 10:06) *
BUSY не используем.


Можно и третий вариант - три таймера, на одном таймере только CONVST, на втором CS, на третьем SPI CLK, у 2 и 3 для синхронизации использовать в качестве триггера спадающий фронт BUSY. В этом случае можно увеличить время чтения чтобы все в один канал SPI уместить (продолжать читать когда уже BUSY активен - глаавное успеть до спадающего фронта ) - у этого АЦП относительно медленный SPI
Цитата
Data can be read from the AD7606 at any time other than on
the falling edge of BUSY because this is when the output data
registers are updated with the new conversion data.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.