Simulátory EPROM s ATmega64 a STM32F103

      28.5.2020 V dávných dobách, kdy MCUčka ještě neměly funkci ISP (In-System Programming) a program byl uložen v externí nebo interní paměti EPROM, to měli vývojáři docela složité. Při každém programovacím cyklu bylo nutno švába vydloubnout z patice, strčit na pár minut do mazačky, pak do programátoru a zpět do desky. Trochu pomohlo točit více čipů dokola. S příchodem pamětí FlashROM se sice doba mazání řádově zkrátila, ale neustálé přehazování čipů (byť třeba v ZIF patici) bylo na palici. Neocenitelným pomocníkem tak byl simulátor EPROM obsahující paměť SRAM, který se zastrčil do patice místo EPROMky a programoval po kabelu z PC bez nutnosti vyjímání a navíc třeba i poskytoval různé ladicí funkce.
      Před časem jsem si hrál s MCU SAB80C537 z rodiny x51 na desce komunikačního interface EZS Olympo Controls UNI1, kde jsem UV EPROMku nahradil EEPROMkou W27E512, ale nutnost přehazování čipů a nemožnost jednoduše implementovat bootloader mě dovedla k myšlence postavit si vlastní jednoduchý simulátor EPROM. Chtěl jsem pro něj využít SRAM paměť z šuplíkových zásob a tak jsem vybral typ IS61C1024-15J o kapacitě 128 kB. Jelikož mi stačí bohatě simulovat 64kB paměť, tak jsem nejvyšší adresní bit připojil na jumper a bude tak možno ručně přepínat 2 banky. Pro řízení jsem vybral dobře známý a dostupný MCU ATmega64A-AU, který pracuje s 5V napájením a má díky pouzdru TQFP64 (které však není nejmenší) dostatečný počet IO portů. S PC bude komunikovat přes UART. Protože jsem si zapojení nechtěl příliš komplikovat oddělovači sběrnic, udělal jsem takovou prasárničku, že jsem SRAMku od patice oddělil pouze odpory a spoléhám na výkonné 3-stavové IO drivery ATmegy přímo připojené na piny SRAMky, které vnější úrovně během programování přeperou. Jako takovou vychytávku jsem navíc přidal paměť SPI FlashROM (potřebuje napájení 3,3 V), z které se program natáhne do SRAMky, když nebude simulátor zrovna připojený k PC. Jeden GPIO jsem ještě využil pro generování resetu připojeného systému, který by se měl uvolnit až po nahrání programu do SRAM a řada GPIO zbyla volných.

simulátor EPROM s ATmega64-schema simulátor EPROM s ATmega64-PCB design
ATmega schema ATmega PCB

      Zaroutoval jsem PCB layout, ale výsledná destička není úplně kompaktních rozměrů a může se stát, že by na připojené desce vadila nějaká vyšší součástka. Pak lze celou destičku elevovat pomocí několika precizních patic zasunutých do sebe. Toto mé provedení se na fóru setkalo s jistou kritikou a také jsem dostal inspiraci, že se to dá skutečně zaroutovat na půdorysu samotné EPROMky. Začala tak záhy vznikat druhá zmenšená verze, kde jsem použil modernější ARM MCU STM32F103C8T6 v pouzdru LQFP48, které se vejde mezi 2 řady pinů velké patice DIL28. Získal jsem ho vypájením z levného kitu Blue Pill pro Arduino za 48 Kč. Menší počet pinů však znamenal nedostatek GPIO pinů a tak jsem musel SPI sběrnici pro FlashROM namultiplexovat s nejvyššími adresními bity. Další problém je, že MCU vyžaduje 3,3V napájení a zdaleka ne všechny piny jsou 5V-tolerantní. To si vyžádalo hned 5 čipů 3-stavových level shifterů (3x 74LVC8T245 a 2x 74LV1T125), které se zároveň postarají o čisté oddělení SRAMky od systému během programování. Použitá 128kB paměť SRAM LP62S1024AX v menším pouzdru TSSOP32L-1 je též pro 3,3V napájení. Komunikace s PC bude přes UART a když se zadaří, tak i přes USB, které jsem dosud neprogramoval.
      Routování 2-vrstvé desky bylo docela peklo a poslední 4 spoje jsem tahal několik nocí. Musel jsem použít oblé cesty a nakonec jsem i snížil izolační mezeru mezi cestami z 6 na 5 milů, což však dnes pro čínské výrobce PCB není žádný problém. Jak jsem následně zjistil, tak ani 4-vrstvá deska by nebyla zas tak drahá (8$ vs 2$ u JLCPCB). Když se mi sešlo více destiček do panelizace, poslal jsem je hromadně do výroby.

simulátor EPROM s STM32F103-schema simulátor EPROM s STM32F103-PCB design
STM32 schema STM32 PCB

      19.3.2021 mi dorazily destičky z JLCPCB, rozřezal jsem si je brusným kotoučkem a pustil se do osazování. Spoje jsem kontroloval na makrofotce a 5-mil clearance je skutečně v pohodě. Neměl jsem doma v zásobě SMD odpory velikosti 0402, takže jsem ještě musel udělat objednávku v TME. Až pak mě napadlo, jak by se na destičku dal vměstnat větší procesor v pouzdru LQFP64. Prostřední piny precizní DILové lišty bych mohl ucvakat a připájet je pouze k SMD ploškám na spodní straně plošňáku, horní strana by tak byla k dispozici v celé šířce. Skrz desky by šly jen krajní piny kvůli větří mechanické pevnosti THT spojů.

JLCPCB received PCBs PCB simulátoru EPROM s STM32F103-top PCB simulátoru EPROM s STM32F103-bottom
desky z JLCPCB STM32 sim. PCB top STM32 sim. PCB bottom

      11.4.2021 Dokončil jsem osazování obou destiček. Teď ještě napsat firmware. Jako první se pustím do ATmegy, kterou mám za ta léta více v krvi.

osazené PCB simulátorů EPROM-top sazené PCB simulátorů EPROM-bottom
osazené PCB top osazené PCB bottom




Zpět

Aktualizováno 16.4.2021 v 7:03