Значит так, смысл понятен из названия поста. Для начала немного теории.
Без домыслов. Обо в интернете столько домыслов и врак что вообще
![В замешательстве :-\](//www.emu-land.net/forum/Smileys/default/undecided.gif)
, при этом народ пишет всякий бред, кто пишет что передача идет на скорости 600КГц, кто на 5МГц, при этом у человека на руках есть логический анализатор, вообще можно детально пакеты рассматривать
![Злой >:(](//www.emu-land.net/forum/Smileys/default/angry.gif)
а он гонит, вместо того чтобы разобраться!, а на одном сайте я видел, ну в переводе на русский язык примерно такое, - "Передача данных идет на частоте 1КГц, при этом за одинтакт передается 2 бита, удивлены?". Конечно удивлен, как такое создание как ты земля родит! :-O
Всё это бред, если передавать чисто ноли то частота будет 1.2МГц в каждой линии (что в SDCKA, что в SDCLKB), а если слать данные то частота, если мерить частотомером будет слегка уменьшаться из за изменения скважности импульсов. И вообще нельзя брать каджую линию в отдельности ибо каждая линия неотьемлемая часть интерфейса, по сути сам интерфейс работает на частоте 2МГц.
Вот пример одного пакета:
А. Значит так, понеслась, очень коротенечко. Переферия дрима работает по 5-ти проводам.
No.1 SDCKA - зеленый
No.2 +5V - красный
No.3 SHEILD - серый
No.4 GND - черный
No.5 SDCKB - синий
В. В.0 Каждый пакет начинается с PATTERN. Выглядит он так, - Линия А - уходит в низкий уровень, а по линии В - идут импульсы, колличество импульсов пришедших по линии В, в то время пока линия А находиться в состоянии логического нуля и означает номер PATTERN'a.
Паттернов всего 4
1. FRAME PATTERN = 0x04
2. FRAME CRC PATTERN = 0x06
3. SDCKB OCCUPANCY PATTERN = 0x08
4. RESET PATTERN = 0x014
В.1 Передача данный идет в двух фазах. В первой фазе линия B выступает в роли линии данных, A - Clock. Во второй фазе наоборот А-выступает в роли линии данныхб В - Clock.
"Дословно" передача байта данных по шине MAPLE выглядит так (синий - фаза 1, зеленый - фаза 2):
1.0 Ставим на SDCKB 7-ой бит, щёлкаем по SDCKA1.1 Ставим на SDCKA 6-ой бит, щёлкаем по SDCKB2.0 Ставим на SDCKB 5-ый бит, щёлкаем по SDCKA2.1 Ставим на SDCKА 4-ый бит, щёлкаем по SDCKB3.0 Ставим на SDCKB 3-ый бит, щёлкаем по SDCKA3.1 Ставим на SDCKА 2-ой бит, щёлкаем по SDCKB4.0 Ставим на SDCKB 1-ый бит, щёлкаем по SDCKA4.1 Ставим на SDCKА 0-ой бит, щёлкаем по SDCKB В.2 Пакеты пронумерованные FRAME PATTERN и FRAME CRC PATTERN, обязаны заканчиваться маркером EOF. Выглядит он так, - Линия В - уходит в низкий уровень, а по линии А - нащелкивается 2 импульса.
Ну теперь к сути.
С. Аппаратная реализвция С.0 Сразу скажу, что домыслы по поводу различных частот работы MAPLE BUS различных переферийных устройств для дрима не случайны. Связано это с тем, что по сути входная логика способна принимать данные чуть быстрее чем на частоте 2MHz, по сути для устойчивого приема девиация частоты возможна в промежутке от 4MHz до 100КГц. Естественно логично например передавая данныё в карту памяти VMU или скажем забирая данные от микрофона, частоту поднять до максимума. Ибо данных значительно болше необходимо передать чем просто прочитать состояние джойстика. Поэтому сразу вывод такой, если пользуем дешевые микроконтроллеры для интергации алгоритма без входной логики не обойтись, ибо микроконтроллер не успеет обработать входной поток данных. Кстати, логика на входе в микрокомпьютер который стоит в джойстиках и прочей переферии называется MIE (Maple Bus I/F Engine)
Далее я перечислю важнейшие элементы которые необходимо поместить в логику, всё остальное может выполнять микроконтроллер. С.0 Важной частью MIE является "Clock Devider". Этот модуль задает такты для работы других модулей MIE. Мне этот модуль видиться таким:
![](http://mediapix.ru/pics/28957800e8b32cd35a57307b0b7360ae.png)
Вот так оно работает:
С.1 Модуль который отправляет данные в моем понимании вот такой:![](http://mediapix.ru/pics/3e8e5714d6257ffc25caa326d0b74989.png)
А вот и его диаграмка (отправляемый байт = 0x0F):
С.2 Модуль приема в моем понимании вот такой:![](http://mediapix.ru/pics/a1364eeeee6a4f8e897c366d88dcf7cb.png)
Диаграмму выкладывать не буду, никому итак не интересно.
Ну как вам лес? Помоему полный ПЭ!
![Шокирован 0_0](//www.emu-land.net/forum/Smileys/default/shocked.gif)
Дешевую PLD под это я не нашел.
Поэтому схема пришлось сильнейшим образом упростить.
Для клавиатуры она у меня получилась вот такая:
![](http://mediapix.ru/pics/340c8f3f0b8772d837cb2c47649e5fa9.png)
Всё, выдохся позже продолжу.
![Удивлен o_0](//www.emu-land.net/forum/Smileys/default/blink.gif)
(в приложенном файле печатка и схема)