fvdhoef / vera-module

Versatile Embedded Retro Adapter
MIT License
105 stars 43 forks source link

Program (flash) the SPI using an Arduino Uno +5V using the VERA J2 header? (Rev 4) #44

Open FlightControl-User opened 10 months ago

FlightControl-User commented 10 months ago

Dag Frank,

Ik woon in België, niet ver van jou.

Ik heb een vraag ... Is het mogelijk om de SPI op het VERA board (Rev4) te programmeren/lezen met een Arduino Uno? De Arduino werkt op +5V, terwijl de SPI op +3.3V werkt. Er bestaan Arduino Uno libraries om de SPI chip te kunnen aansturen gebruik makende van SS, SCK, MISO en MOSI interface. Heeft de VERA header interface een implementatie dat toelaat de J2 +5V om te zetten in een interface naar de SPI op +3.3v, gebruik makende van shifters (mijn assumptie: ja), maar ik wil het graag van U horen ... (Ik zie die shifters op je design).

Op het VERA (Rev4) bord is een J2 header. Ik heb de originele schemas gevonden van VERA Rev0, waar er sprake is van een J3 header ... zie hieronder:

image

Is de configuratie van de J3 header van de VERA Rev 0 gelijk aan de J2 header van de VERA Rev4? En is deze ongewijzigd?

image

Is de volgende PIN configuratie juist?

Heb ik nog iets anders nodig om met de SPI van de VERA te kunnen communiceren?

Het zou geweldig zijn mocht ik een JEDEC handshake kunnen bewerkstelligen!

image

Ik weet niet of U hiermee kan helpen?

En ook, indien de bovenstaande configuratie correct is, waar/hoe moet dan J2 PIN 7 aangesloten met welke PIN op de Arduino Uno?

Hartelijk dank bij voorbaat! Mocht U tijd hebben, wil ik best met mijn CX16 bord naar U rijden om te kijken hoe een Arduino kan aangesloten worden. Het zou niet te lang moeten duren denk ik.

Sven Van de Velde

fvdhoef commented 10 months ago

J2 is in basis bedoelt om tijdens productie de eerste keer de SPI flash te voorzien van data. Houd er rekening mee dat wanneer er een jumper op JP1 geplaatst is het niet langer mogelijk is de SD kaart te gebruiken (totdat JP1 weer is verwijdert).

Ik weet niet precies wat je bedoeling is om de Arduino aan te sluiten? Als het puur is om de flash te kunnen programmeren, kun je ook kijken naar de code in:

https://github.com/fvdhoef/vera-module/tree/rev4/programmer/stm32

Dit is code wat op een klein programmeerbordje draait wat ik voor de eerste revisie van de VERA heb gemaakt. De relevante code staat in spi.c. Zo kun je daar zien dat het bijv. noodzakelijk om de FPGA in reset te houden terwijl je het SPI flash benadert, om te voorkomen dat zowel de programmer als de FPGA tegelijkertijd de SPI flash benaderen.

Wat betreft de Arduino Uno, houdt er rekening mee dat de SPI signalen op de VERA 3.3V niveaus vereisen. Ik denk dat de Arduino 5V niveaus gebruikt en dit zal dus de VERA module kunnen beschadigen wanneer er geen level shifters gebruikt worden. De level shifters die wel op het bord aanwezig zijn alleen voor de 6502 bus interface bedoelt, niet voor de SPI bus.

Ik zou aanraden om in plaats van een Arduino iets te gebruiken wat wel 3.3V niveaus ondersteund, zoals bijvoorbeeld een Raspberry Pi Pico of ESP32 of een van de nieuwere Arduino's met ARM processor.

FlightControl-User commented 10 months ago

Dag Frank, hartelijk dank voor deze info! Dus ik moet een Pi Pico gebruiken of een ESP32! Goed om te weten. Ik had al een Arduino aangesloten maar gelukkig zonder al te veel schade tot hiertoe.

FlightControl-User commented 10 months ago

Denk je dat het mogelijk moet zijn om een Pi Pico te programmeren zodat we via de header de VERA kunnen her-programmeren als een gebruiker via een update programma zijn CX16 onbruikbaar is geraakt? Ik woon in Antwerpen en doe mijn best om een fall-back scenario uit te werken dat doenbaar is voor gebruikers thuis, die een CX16 VERA willen upgraden met nieuwe firmware. Zo kunnen we ook de firmware van de SMC met een Arduino herprogrammeren in geval van nood. Het kost de gebruiker wel wat geld, maar mits een eenvoudige procedure en een kleine investering, kan hij zijn machine terug krijgen.