PDA

Просмотр полной версии : Помогите советом как можно подключить Raspberry Pi 3 к MSX



dhau
11.02.2017, 05:59
Господа, я в электронике не смотря на преклонный возраст так и остался дилетантом, но очень хочется как-то подключить всю там шину данных и шину адреса и прочие контрольные сигналы в MSX slot к 40 gpio пинам RPi3. И типа писать проги на RPi3 которые бы симулировали работу там разных устройств для MSX и чтобы скорость передачи данных была как можно быстрее.

Есть проект MSXPI (https://www.msx.org/forum/msx-talk/hardware/msxpi-msx-raspberry-pi-interface-under-development), но там не совсем но что нужно - там медленная связь по портам.

Как правильно подключать RPi3 gpio 3.3v к MSX 5v? Многие сигналы односторонние, и тогда можно типа там резистор если с MSX надо в RPi передать 0 или 1, ну или какой-то там транзистор типа если надо с RPi на MSX. А что делать если сигнал и туда и сюда ходит?

Извините если не очень внятно. Если кто может помочь советом или даже практически как-нибудь, буду страшно благодарен!

vlad
11.02.2017, 09:46
dhau, нужно собирать схему согласования 5В<->3.3В если вывода GPIO RPi3 не толирантны к 5В.
Вот парочка статей для теоретического ознакомления, что применить конкретно в вашем проекте решать вам:
Согласование логических уровней 5В и 3.3В устройств (http://we.easyelectronics.ru/Shematech/soglasovanie-logicheskih-urovney-5v-i-33v-ustroystv.html)
http://catethysis.ru/logic-level-converters-1/
МОДУЛЬ СОГЛАСОВАНИЯ УРОВНЕЙ 3.3 <-> 5 ВОЛЬТ (http://avrproject.ru/publ/poleznaja_informacija/modul_soglasovanija_urovnej_3_3_lt_5_volt/4-1-0-65)

Вторую проблему, которую вам предстоит решить, это передача данных через GPIO RPi3 и скорость его работы, т.е. нужно будет успевать анализировать состояния шины MSX и реагировать на нужные вам.

ram_scan
11.02.2017, 17:26
Затея не выйдет даже не потому-что GPIO не успеет. Там оно то по идее успеет. А проблема в том что малинка работает под пингвином, и там реалтаймовость без напильника получить не получится, а даже если и получится то квант времени будет недостаточен для того чтобы MSXную шину обслужить.

Поэтому там придется запиливать для этой цели свой ядерный драйвер работающий на прерываниях, и все равно не факт что скорострельности хватит.

Точнее на запись со стороны MSX в малинку производительности то скорее всего хватит, забрал адрес и данные по прерыванию от /WR и /MERQ или /IORQ и думай потом над ними скока влезет в разумных пределах, а вот на чтение из малинки со стороны MSX уже тяжко. Там тебе адрес выставили, прерывание через /RD и /MERQ или /IORQ дернули и до конца цикла чтения изволь данные отдать, а чо хотели только в момент прерывания понятно становится и заранее хрен подготовишься. Можно конечно через /WAIT процессор притормаживать, но для эмуляции реального железа это уже не годится, а для каких-то других задач можно и попроще способ связи выдумать.

Pencioner
15.02.2017, 01:20
Ко мне едет комплект девелоперский MSXПи - сегодня его автор Ронивон Коста выслал. Жду, буду мучить животинку, есть идеи. Одна из идей - использовать его в паре с Nowind - через Nowind сделать передачу данных, там скорость намного больше, т.к. с того что мне уже о нем известно - скорость обмена там конечно совсем никакая, в районе 5 килобайт в секунду. Проблемы с таймингами он решил тем что тактует SPI "вручную" из RPi3 поэтому если где-то что-то тормозит то просто дольше читаться будет, не будет приколов с синхронизацией. Однако, хотелось бы что-то такое соорудить где бы был memory mapped обмен, как в Новинде, только правильнее сделанный. Новинд использует чип FTDI и собственно на выходе получается serial USB. Правда, у них там лажа есть со стороны железа, это они фиксят на уровне протокола, из-за этого код становится совсем запутанным. Я в нем разбирался потому что хотел подключить свой распберри к Новинду, но поменять там софт и сделать другой протокол, а потом искать кого-то кто поможет с железом чтобы сделать все на одной плате. А тут увидел про этот проект и решил сначала с ним поиграться, посмотреть что можно в таком более упрощенном случае из него выжать и вообще потренироваться.

В общем, если вдруг кто знает как добиться нормальной скорости передачи от MSX до распберри либо другой платы у которой есть ноги GPIO которые могут работать как SPI, I2C и т.д. (и-квад-си по моему более перспективный в плане скорости но возможно схемотехника будет сложная, либо компоненты дорогие - я увы в железной части в целом нуб нубом... имею представление, но сам ничего сделать не способен) - давайте попробуем сделать что-то реально хорошее :) Потому что 5 кб/с это реальное ограничение. Я еще проверю когда приедет комплект, много ли он допольнительных тактов висит при чтении с порта ожидая снятия WAIT так как есть подозрения...

dhau
24.02.2017, 00:44
Завтра получка и я пожалуй тоже закажу msxrpi у Рони, а то мой товарищ Фубу (https://github.com/Fubukimaru) хвастается как у него всё круто с msxrpi и rp0

Pencioner
24.02.2017, 01:38
Да я по видимому со скоростью перепутал. А Альберто (Фубу) очень толковый товарищ, его словам можно доверять )))