Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TMS320C6415 + EMIF
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Wiener
Добрый день.

Срочно нужна помощь по работе с TMS320C6415, в частности с модулем EMIF. До этого работал только с 8-ми разрядниками HC08 (FreeScale), так, что в TMS практически по нулям (помогает только знание C/C++).

Что есть:
- TMS320C6415 которому на EMIFA (на ED (шина данных EMIFA)) подключена ПЛИС;
- ПЛИС подаёт на GPIO_GP3 тактовый сигнал, а на ED данные (адреса и прочее не используются);
- среда разработки CodeComposer Studio 3.1 (C/C++);
- желание заставить это работать ;-).

Что надо:
- по приходу клока (передний фронт) на GPIO_GP3 запускать подпрограмму обработки прерывания и снимать данные с ED.

Заранее благодарен всем ответившим.
bav
ну воопервых - вам необходимо еще использовать сигнал ACEx. Он будет формировать некоторую область памяти (адреса). Вот по ним (по одмному из них) Вы и будете считывать.
Иначе - мультиплексировать память самому, что не получится (будут большие задержки, апроц и так работает на пределе).
Можете сделать следующий алгоритм: не генерить прерывание, а генерить событие для DMA. А это чудо отправит данные куда нужно.
Если скрость прихода данных не большая, лучше используйте последовательные интерфейсы. Ваше изобретение будет сильно тормозить весь процесс. - переключение шин, переключение блоков памяти и т. д. Может спасти, если прогу разместить с нулевого адреса (если она не большая). Если большая - незабудьте инициализировать кеш.
Или лучше используйте GPIO[15..0], PCI,...

удачи!
Wiener
Использовать другие сигналы проблематично, т.к. со стороны ПЛИС уже всё сделано, да и устройство функционально закончено.
А можно примерчик, просто чтения EMIF ?!
А то я нашёл вызовы инициализации GPIO и EMIF, с GPIO вроде всё понятно (кроме привязки к IRQ), с EMIF вообще ничего не ясно, т.к. нет как у GPIO функций чтения/записи...
bav
EMIF - external memory interface.
инициализация - там прописываете, какие такты, задержки, разрядность и т. д. у памяти (в Вашем случае, девайса).
Общение как с обычной памятью - запись/чтение байта/слова/двойного слова по заданному адресу.

usigned int in_data = (*(unsigned int*)ADDR); //чтение 32 бит данных, расположенных по адресу ADDR
(*(unsigned int*)ADDR) = out_data; //запись данных

для DMA немного по-сложнее. На сайие TI есть пример использования. Там все хорошо разжевано. Правда, на англ. языке.

Без сигнала ACEx - не обойтись. Без него Ваш девайс не узнает, кого хотят - память или Ваше устройство. Будет конфликт с памятью.
И еще раз повторюсь, если прогу уместите во внутреннем ОЗУ, может, прокатит. Но я не уверен, что там можно много напихать.

// проблема в документациях от TI - пока не заработает, ничего не понятно. Приходится много экспериментировать... smile3046.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.