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

 
 
detonator
сообщение May 14 2012, 19:50
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 13-05-09
Пользователь №: 49 010



Может задача показаться немного страной и у многих появится идея решить её по другому.
( право каждого! Но не хотел бы чтобы тема была раскрыта и не укатилась в полёте мыслей участников в “тамтарары”. )

Давно просматривая возможность межпроцессорного взаимодействия на скоростях выше 25 МегаБайт в секунду.
Есть задумка реализовать это на интерфейсе SDIO сейчас воткнутом почти во всех микроконтроллерах. В режимах 4 или 8 битной шины такие скорости реализовать возможно.

Но не нашел контроллера ( приоритет ARM7/Cortex-Mx из за цены ) где возможно SDIO настроить на приём! Вывод CLK у всех интерфейсов настраивается как выход.
( Нюансы программной часть сейчас более тщательно просматриваю. )

Подскажите, пожалуйста, возможно ли настроить в микроконтроллере блок SDIO на приём?
Допускается обход стандартного алгоритма протокольной части. То есть возможно не придерживаться заложенного в стандарте этапов инициализацию , пересылку команд, и гнать просто данные в любом направлении ! Не важно данные идут от мастера к ведомому или на оборот.
Если есть предложения как возможно реализовать и на чем пишите, жду с нетерпением sm.gif.
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 19)
jcxz
сообщение Feb 9 2013, 09:55
Сообщение #16


Гуру
******

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



По-моему это задача реализации сферического коня в вакууме. Наверно до сих пор реализуется laughing.gif
Но в принципе ничего сложного в реализации по-моему нет, если в каждый момент времени рассматривать только передачу в одном направлении, а задачу определения направления и разрешения коллизий производить сторонними стредствами.
На передающей стороне программируете SDIO, а на приёмной - входящий CLK на счётный вход внутреннего таймера, ноги данных SDIO - в режим GPIO in, событие от таймера - на канал DMA, который считывает слово данных по данному событию с ног GPIO. Всё.
Хотя я не знаком особо с SDIO. rolleyes.gif
Go to the top of the page
 
+Quote Post
Andrey Vasilyev
сообщение Feb 15 2013, 04:24
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 5-12-08
Из: Санкт-Петербург
Пользователь №: 42 220



В STM32 можно триггерить выдачу/прием данных с GPIO через DMA посредством event-ов, повешенных, например, на событие захвата таймера. А таймер можно сконфигурировать так, чтобы событие возникало по определенной ножке.
Таким образом, можно соединить на двух процессорах некоторый набор ног одного GPIO-порта (лучше, если с нулевого пина до 7 или до 15-го), а также ногу таймеров, и на передающей стороне через таймер триггерить передачу данных из SRAM на ноги GPIO, сконфигурировав также ногу таймера на вывод импульсов в соответствующее время, а на принимающей стороне ногу таймера сконфигурировать на генерацию event-а для запуска DMA, вычитывающего данные в соответствующий момент времени с GPIO в SRAM.
Коряво, но быстро и без участия ядра процессора.
Впрочем, все равно это получается хак, не переносимый на другие семейства процессоров. Да и за реализуемость не поручусь - сам я подобного не делал, и мало ли что я неправильно понял в документации.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 15 2013, 06:56
Сообщение #18


Гуру
******

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



Цитата(Andrey Vasilyev @ Feb 15 2013, 10:24) *
В STM32 можно триггерить выдачу/прием данных с GPIO через DMA посредством event-ов, повешенных, например, на событие захвата таймера...
Я писал как раз о подобном, только - применительно к LPC sm.gif
Это реализуемо. Засада может быть только в задержках DMA: на LPC17x и других семействах LPC, до LPC177x приоритет доступа к шине у CPU (фиксирован), соответственно (имхо) из-за этого DMA может частенько подтормаживать (у меня были проблемы с этим на SSP на максимальных частотах, а здесь нужна ещё большая скорость DMA). На LPC177x можно режить проблему, повысив приоритет GPDMA через регистр арбитража доступа к шине.
На других процессорах придётся пустить сигнал обратной синхронизации (кроме сигнала строба данных (CS) передатчик->приёмник) - подтверждение приёмник->передатчик. На каждое чтение слова. Он будет идти с частотой строба, но сдвинут по фазе относительно него. И этот сигнал заводить на вход CLK таймера передатчика, генерящего события для TX-DMA.

Если-же приоритет доступа к шине у DMA-контроллера и нет проблем с задержками доступа к шине от DMA, то можно вообще обойтись одним импульсом сигнала синхронизации от TX и одним - готовности от RX, а дальше - слать данные блоком, внутри синхронизируя DMA-каналы от таймеров, не выводя сигналы таймеров наружу. И так - до некоторого размера блока, зависящего от разности частот задающих генераторов двух CPU (погрешности частоты генераторов). Далее - опять синхронизация и новый блок. Я почти так когда-то делал - работало стабильно wink.gif
А если 2 CPU работают от одного генератора - так вообще халва wink.gif
Go to the top of the page
 
+Quote Post
Andrey Vasilyev
сообщение Feb 22 2013, 18:24
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 5-12-08
Из: Санкт-Петербург
Пользователь №: 42 220



Цитата(jcxz @ Feb 15 2013, 10:56) *
Я писал как раз о подобном, только - применительно к LPC sm.gif


У LPC (по крайней мере в LPC1768) вроде бы DMA не имеет доступа к шине, на которой висит GPIO?
Или ошибаюсь?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 24 2013, 10:14
Сообщение #20


Гуру
******

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



Дело было уже давно и возможно я что-то путаю, но насколько помню - работало
Go to the top of the page
 
+Quote Post

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

 


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


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