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

 
 
 
Reply to this topicStart new topic
> GPIO by DMA LPC2468 + ext SRAM, Оценка потенциальной возможности по захвату данных
mempfis_
сообщение Dec 29 2013, 14:06
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Всем добрый день.
У меня есть отладочная платка с LPC2468 и есть внешний источник 8битных данных - камера.
Данные могут поступать с выбранной мною частотой (зависит от частоты тактирования камеры).
Я попробовал считывать данные напрямую с порта и сохранять их во внешнюю SRAM. Получил порядка 700000 считываний в секунду при условии что процессор занимается только тем, что захватывает данные и сохраняет их в память.

У меня возникла идея - если DMA способна выполнять транзакции memory-memory, могу ли я настроить DMA-контроллер данного процессора так, чтобы он автоматически с GPIO выполнил скажем 640*480 транзакций считывания во внешнюю SRAM без участия процессора. Я бегло просмотрел описание DMA - если я всё правильно понял, то он может выполнять чтение с одного адреса без автоинкремента и отправлять данные на другой адрес с автоинкрементом с шириной данных 8 бит. Насколько это применимо к GPIO (каждый порт GPIO ведь имеет свой адрес) и внешней SRAM (в моём случае 512к 8бит 10nS). Если данный процессор не сможет сохранять данные во внешнюю SRAM используя DMA, то во внутреннюю SRAM он наверняка сможет это сделать? Также есть ли возможность задать период выборки с GPIO - например инициировать DMA-транзакцию по какому-либо таймеру?
Кто работал с DMA этого процессора подскажите насколько реализуема данная затея?
Данный процессор выбран только из-за того, что есть под рукой отладочная плата.
Вообще я тесно работаю ещё с LPC17xx и Freescale Kinetis KL15 - но с ихними DMA я тоже не работал.
Возможно кто подскажет другие доступные ARM-процессоры (не DPS, а именно ARM), которые могут позволить решить данную задачу.
Заранее всем спасибо за ответы.

Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 29 2013, 16:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Неужто - заглянуть в UM совсем не судьба???
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 29 2013, 18:55
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(jcxz @ Dec 29 2013, 20:04) *
Неужто - заглянуть в UM совсем не судьба???


Возможно я поторопился создавать тему после беглого просмотра User Manual.
Просмотрев более подробно разделы о EMC и таймерах я понял, что DMA не сможет работать с внешней памятью с помощью EMC и я не смогу использовать таймеры для задания периода считывания данных с порта с помощью DMA. Получается на данном процессоре я не смогу реализовать выборку с заданным периодом с помощью DMA. Когда снова доберусь до платы проверю в железе чтение с порта во внутреннюю SRAM чтобы оценить период выборки и по возможности подогнать тактирование камеры.
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 29 2013, 19:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



В семействах STM32F2xx, STM32F4xx есть DCMI - Digital Camera Interface.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 29 2013, 19:24
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(scifi @ Dec 29 2013, 22:04) *
В семействах STM32F2xx, STM32F4xx есть DCMI - Digital Camera Interface.


Спасибо за наводку. Буду иметь ввиду что существуют процессоры с готовым аппаратным модулем для связи с внешней камерой.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 30 2013, 02:04
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(mempfis_ @ Dec 30 2013, 00:55) *
Просмотрев более подробно разделы о EMC и таймерах я понял, что DMA не сможет работать с внешней памятью с помощью EMC и я не смогу использовать таймеры для задания периода считывания данных с порта с помощью DMA.

Не работал с LPC24xx, но в LPC17xx запускать DMA от таймерных запросов можно и считывать с GPIO - тоже.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 30 2013, 08:33
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(jcxz @ Dec 30 2013, 06:04) *
Не работал с LPC24xx, но в LPC17xx запускать DMA от таймерных запросов можно и считывать с GPIO - тоже.


Спасибо. Обязательно изучу эти возможности лпц17. Они у нас потребляются десятками тысяч в серийных устройствах.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 30 2013, 09:27
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(mempfis_ @ Dec 30 2013, 14:33) *
Они у нас потребляются десятками тысяч в серийных устройствах.

Везёт вам sm.gif
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Dec 30 2013, 11:34
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Как то я портировал всю библиотеку перифириную с LPC1768 на LPC2468. В итоге получил приемлимую для меня систему которая настраивается на оба процессора путём условной компиляции. Так вот по поводу DMA, сам я его ни разу не использовал но чисто формально садапировал и исходник с DMA -- если есть желание то проверяйте. Во время портирования запомнил, что DMA каналов и устройств что поддерживают DMA в LPC2468 гораздо меньше.

В частности если я не ошибаюсь в 1768 GPIO может работать через DMA, и довольно не хило -- где то видел примеры.

Похожая с вашим случаем задача по чтению 8 битных данных у меня есть для работы с NAND FLASH.
На LPC2468 она решается через интерфейс static RAM, которого вроде нет в 1768. Буду переходить на LPC1768 в новых разработках планирую всё-таки использовать GPIO через DMA при чтении с NAND FLASH. В итоге, советую Вам если будете использовать LPC1768 подключайте через GPIO, если ипользуете LPC2468 то через static RAM. В любом случае процессоры весьма похожи друг на друга.







--------------------
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 30 2013, 12:05
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



В двух текущих проектах на LPC1778 и в одном на LPC1758 у меня используется программно-эмулируемый UART на связке GPIO+DMA с event-ами от таймера.
Всё работает прекрасно.
И ранее также использовал связку GPIO+DMA с event-ами от таймера.
Но будьте осторожны при высокочастотных запросах! На LPC до семейства LPC177x/8x нельзя изменить приоритет доступа к шине AHB устройств, и у CPU он выше чем у GPDMA.
Так что если используете высокочастотные запросы к DMA (уже на сотнях кГц), то ваш протокол обмена через линии GPIO должен быть устойчив к потерям отдельных событий
активации DMA (т.е. - некоторые запросы к DMA не будут отрабатываться из-за того что шина занята более приоритетным bus master-ом - CPU).
Сам с этим сталкивался при работе GPDMA+SSP на частотах SSP == 10...30МГц.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 30 2013, 20:30
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Огромное спасибо всем ответившим как в форум, так и в личку. Я получил достаточное кол-во информации по интересующим меня вопросам.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 13:37
Рейтинг@Mail.ru


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