Задумался о том что давно ничего не выкладывал для народа, надо бы это дело исправить.
Хочу представить XMaple, В одном кристалле вся неоходимая логика чтобы делать как MAPLE HOST (переходники для дримкастовских джойстиков, рулей, маракасов, мышей, фишинг контроллеров и прочее, с чтением катрочек)
так и MAPLE DEVICE (Джойстики, карты памяти, рули, фишинг контроллеров, камеры, микрофоны и прочее и прочее)
самое приятное в этой поделке, что береться дешевый кристалл от Альтера (EPM3032ATC44 - я брал за 64р ~2$), и к нему привешивается дешевый ширпотреп-микроконтроллер, я выпишу пример подключения к ATtiny (XMAPLE осуществляет тока прием данных, это самое так сказать малореализуемое в контроллере, отправлять же данные по MAPPLE BUS микроконтроллер обязан уметь).
Ну да ладно, хватит прелюдий.
1. Распиновка:
NAME D0 D1 D2 D3 D4 D5 D6 D7 DTFLIP SDCKA SDCKB CE OE PAT cPAT RST FRMERR VDS VCC(3.3v) GND PU
| PIN 12 2 6 5 44 8 13 43 21 14 42 15 10 18 19 20 22 23 9,17,29,41 4,11,16,24,30,36 1,7,26,32
| Description Data Bit 0 Data Bit 1 Data Bit 2 Data Bit 3 Data Bit 4 Data Bit 5 Data Bit 6 Data Bit 7 Data BYTE Ready PIN MAPPLE BUS Serial Data/Clock 'A' PIN MAPPLE BUS Serial Data/Clock 'B' PIN Crystall enable pin Output enable pin NO CRC Pattern start signalling pin CRC Pattern start signalling pin RESET DEVICE signalling pin Frame Error Signalling pin Valid Data Signalling pin 3.3v power supply Ground Pull upped pins
|
Напомню, что у EPM3032ATC44 стандартный TQFP44 корпус, вот такой:
А вот теперь поехали:
А как жа с этим чипом работать?
1. Сброс MIE.
1.1 Инициализация CE,OE->HI (VCC)
1.2 CE->LO (GND), OE->LO (GND)
1.3 Чип готов к работе.
2. Прием сигнала (я рекомендую подключение VDS к ноге регистрации прерываний в микроконтроллере, прерывание на передний фронт, смотрим эпюры сигналлов ниже).
2.1 Ждем прерывание LO->HI
2.2 Как только прерывание пришло, смотрим что за прерывание:
RST = 1 - Пришла команда сброса (только если наше устройство DEVICE)
PAT = 1 - Получили начало пакета без CRC подтверждения
cPAT = 1 - Получили начало пакета с CRC подтверждением
2.3 Ждем DTFLIP = 0
2.3 Прошло 5us а DTFLIP не равно 1, переходим на пункт 1 (скорее всего произошло отключение).
2.4 Ждем DTFLIP = 1, читаем байт данных.
2.5 VDS=1?
2.5.а Не равно (возможно конец пакета переходим на пункт 2.6)
2.5.а Равно (сохраняем байт данных переходим на пункт 2.3)
2.6 FRMERR = 1
2.6.а Не равно (конец пакета переходим на пункт 2.7)
2.6.а Равно (ошибка в пакете переходим на пункт 2)
2.7 Конец приема, обрабатываем полученный пакет.
2.8 Переходим на пункт 2.
Вот, теперь глянем на эпюру иллюстрирующую прем CRC пакета, собственно в красках:
Таааак, а теперь я покажу типовое подключение к микроконтроллеру (DEVICE):
Вот что интересно, чип XMAPLE регистрирует начало и конец пакета, а так же показывает состояние сигнала 'DTFLIP', однако если 'VDS' = 0, то мы можем однозначно понять что текущий пакет нам не нужен, такое возможно если мы активировали кристал в тот момент когда уже идет передача пакета, для лучшего понимания работы XMAPLE выложу ка я, эпюру сигнала побольше.
P.S в приложенных, файлы прошивки...