Pi4 +Retropi + PS2 + gamecon_gpio_rpi = no go?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Frotter
  • Registratie: September 2019
  • Laatst online: 18-08-2020
Ik dacht iets leuks te doen voor de kinderen. Ik heb een RPI4 over en 2 PS2 controllers (werkend, van een werkende PS2). Dus dacht ik; leuk een retropi voor de kinderen, met die ps2 controllers, papa is een held!!

Helaas had deze held z'n sokken klaarblijkelijk nog aan, want wat ik ook doe, ik krijg het niet werkende :(

Voor de duidelijkheid; ik zoek geen USB convertors. Ik wil de PS2 controllers rechtstreeks op de GPIO van de PI4 aansluiten, dit zou volgens de documentatie moeten kunnen.

Eerst de RPI4 geinstalleerd, retropi erop, dat werkt allemaal prima. Via het retropie-setup script de gamecon_gpio_rpi driver geinstalleerd. Deze wordt ook gezien door retropi; emulationstation meld '1 gamepad detected'.

So far so good. Nu de hardware. In principe kun je dit met simpele jumperkabels tussen controller en pi aansluiten. Ik heb de pinout voor de RPI4 en de pinout voor de PS2 controller gebruikt:

Afbeeldingslocatie: https://www.rhydolabz.com/wiki/wp-content/uploads/PS2_Controller-01.jpg

De documentatie van de driver zegt dit:
3.4 PSX/PS2 pads

Rpi pin PSX controller pin

P1-01 (3.3V) ==== 5 (power/3.3V)
GPIO14 ---> 2 (command)
GPIO15 ---> 6 (select)
GPIO18 ---> 7 (clock)
GPIOXX <--- 1 (data)
P1-06 (GND) ==== 4 (ground)

GPIOXX is the independent data pin. See section 4 on how to select the correct
GPIO.
[..]
4.1 Configure pads
# modprobe gamecon_gpio_rpi map=<pad1/GPIO0>,<pad2/GPIO1>,<pad3/GPIO4>, \
# <pad4/GPIO7>,<pad5/GPIO2>,<pad6/GPIO3>
Verder maakt de documentatie gewag van een pull-up resistor. Ondanks dat de documentatie suggereert dat dat maar bij 2 mogelijk te gebruiken pinnen nodig is, haal ik uit googlen dat de data pin altijd een pulup naar 3.3v nodig heeft.


e.e.a. aangesloten zoals hoort, in /etc/modprobe.d/gamecon.conf de juiste config gezet, en de module proben. Dat werkt, en dan geeft Emulationstation ook aan een gamepad gevonden te hebben, echter deze werkt (dus) niet.

Ik heb de data pin op verschillende mogelijkeden geprobeert, niets werkt.

Modprobe zegt bv dit:
[ 2555.789211] input: PSX controller as /devices/virtual/input/input13
[ 2555.790710] GPIO4 configured for PSX controller data pin
Maar als ik daarna jstest gebruik, ziet die niets aan activiteit.

Ik heb het als volgt aangesloten:

code:
1
2
3
4
5
6
7
PS2                            PI
pin 5 (VCC) --->         3.3v
pin 4 (GND) -->         GND
pin 1 (DATA) -->       GPIO4 (met 4.7k pullup naar 3.3v)
pin 2(CMD) -->         GPO14
pin 6(SEL) -->          GPIO15
pin 7 (CLK) -->         GPIO18


Deze PS/2 controllers heb ik:
Afbeeldingslocatie: https://www.ps2gameshop.nl/images/detailed/1/ps2_controller_zilver_dualshock_2_Sony.png

Ofwel, de dualshock PS2 controller. Deze hebben ook 'rumble' ,dat zou met deze aansluiting niet werken zo, dat is mij bekend, want die heeft 7v nodig op pin 3. Zonder dat zou het echter ook moeten werken.

Wat doe ik fout? is er iemand die dit werkende heeft?

Oh, op de pi heb ik SPI, I2C, serial en one-wire uitgezet.

Acties:
  • 0 Henk 'm!

  • Torac
  • Registratie: Maart 2017
  • Laatst online: 10:36
Ik zou niet die rumble/vibratie/dualshock op je pi aansluiten. Gewoon uberhaupt niet. Grote kans dat als je een keer een foutje maakt of je pin kapot is of je pi.

Acties:
  • 0 Henk 'm!

  • Frotter
  • Registratie: September 2019
  • Laatst online: 18-08-2020
Dat zal niet zo snel gebeuren hoor. Hij krijgt 3.3v, dus kan niet meer dan 3.3v terug sturen. De 7v gebruik ik natuurlijk niet.

Acties:
  • +1 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Oh, op de pi heb ik SPI, I2C, serial en one-wire uitgezet.
Je moet wel een seriele link configureren, dus dit lijkt mij sowieso niet de bedoeling. FF snel googlen leert dat dit een SPI bus moet zijn.

Je maakt het jezelf wel moeilijk overigens door het op deze manier te doen en niet met een USB adapter.

Acties:
  • 0 Henk 'm!

  • Frotter
  • Registratie: September 2019
  • Laatst online: 18-08-2020
Heb je een link naar het spi verhaal? ik kan dat nl niet zo snel vinden met googlen. Volgens mij worden hier gewoon de GPIO's gebruikt als GPIO, en dus niet SPI of serieel?

Het is een budgetding. Ik wil dit zonder bijkomende kosten doen, de driver is er, het is gedocumenteerd, en er zijn meerdere mensen die rapporteren dat het goed werkt. Het zou dus moeten werken... maar doet het niet.

Acties:
  • 0 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Frotter schreef op maandag 2 september 2019 @ 11:57:
Heb je een link naar het spi verhaal? ik kan dat nl niet zo snel vinden met googlen. Volgens mij worden hier gewoon de GPIO's gebruikt als GPIO, en dus niet SPI of serieel?
Tuurlijk niet, er hangt een kloksignaal aan en dat alleen is al genoeg indicatie dat de link serieel is.

Mijn bron: http://store.curiousinventor.com/guides/PS2 , met scope afbeelding die het bewijst.
500kH/z, normally high on. The communication appears to be SPI bus.
Met wat voorbeeldjes op een PIC die de SPI interface gebruikt. Lijkt mij een helder verhaal. Staat ook goed omschreven welke IO open collector zijn en dus een pull up/down nodig hebben. Die data/command lijntjes zijn duidelijk MOSI/MISO, aangezien de een van de PS af komt en de ander van de controller. Alleen goed kijken wie de master/slave is.

Theoretisch gezien kan je ook met GPIO togglen icm een timer een SPI bus maken, maar dit vreet resources. Ik neem aan dat je driver ook wel het een en ander heeft gedocumenteerd over hoe de interface eruit moet zien.

Acties:
  • 0 Henk 'm!

  • SuperKris
  • Registratie: Juni 2010
  • Laatst online: 16-09 18:00
In retropi zit nog geen RPI 4 ondersteuning voor zover ik weet.

Als dit een beproefde methode is, zal het misschien aan de RPI 4 liggen?

Acties:
  • 0 Henk 'm!

  • Frotter
  • Registratie: September 2019
  • Laatst online: 18-08-2020
De rpi4 werkt prima met retropi. Verder ligt dit meer naar onderen, de joystickdriver werkt niet.

Het is geen SPI wat de driver doet, maar GPIO. De driver heet ook gamecon_gpio_rpi.

Wat uitgebreider.. het kan best zijn dat de controller 'spi spreekt'. En dat het signaal serieel is, begrijp ik ook.

Echter vanuit de code worden de pinnen 'gewoon' als GPIO gebruikt, en de code handelt het lezen/schrijven, herkennen van packets, enz, zélf af.

Officieel is er nog geen RPI4 retropi image, echter retropi werkt gewoon:

https://www.tomshardware....game-emulators,40102.html

Toch denk ik wel dat het antwoord in het verschil tussen de diverse pi's zal zitten. Om te kijken of het SPI was, heb ik even in de code gekeken, en daar zit met name mbt. de adressering van de GPIO's, wel wat modelspecifieke code in. Daar ga ik nu even naar kijken.

Uit de code:
code:
1
2
3
4
5
6
7
#ifdef CONFIG_ARCH_MULTI_V7
#define BCM2708_PERI_BASE 0x3F000000
#else
#define BCM2708_PERI_BASE 0x20000000
#endif

#define GPIO_BASE                (BCM2708_PERI_BASE + 0x200000) /* GPIO controller */


Echter, de PERI BASE voor de RPI4 is 0xFE000000.

Ik vermoed dat ik daarmee zelf mijn vraag al beantwoord heb. Nu testen.

[ Voor 82% gewijzigd door Frotter op 02-09-2019 15:08 ]


Acties:
  • 0 Henk 'm!

  • Frotter
  • Registratie: September 2019
  • Laatst online: 18-08-2020
Bevestigd. Het wijzigen van de PERI BASE naar de waarde voor de RPI4, en herbuilden van de diver, hebben het probleem opgelost.

Je joystics werken nu beiden naar behoren.

Voor wat betreft makkelijker... op deze manier kun je originele PS2/NES/SNES/ENZ controllers aansluiten, zonder dat het je USB poorten kost.

Code, voor nu, even quick 'n dirty gewijzigd naar:

code:
1
2
3
4
5
6
7
8
9
/*
#ifdef CONFIG_ARCH_MULTI_V7
#define BCM2708_PERI_BASE 0x3F000000
#else
#define BCM2708_PERI_BASE 0x20000000
#endif
*/

#define BCM2708_PERI_BASE 0xFE000000


En 'works like a charm' _/-\o_ :D

[ Voor 30% gewijzigd door Frotter op 02-09-2019 15:26 ]

Pagina: 1