Flash-Programmierung für AT89S2051

Verzeihen Sie mir, wenn dies eine Noob-Frage ist, dies ist mein erstes MCU-Projekt.

Nachdem ich hier und da ein paar Tutorials gelesen hatte, habe ich meine MCU-Schaltung aufgebaut und ein einfaches Programm in Keil μVision 4 programmiert und zu HEX-80 kompiliert. Ich habe jedoch Probleme beim Versuch, das Programm auf die MCU zu flashen.

Grundsätzlich weiß ich nicht, wie ich die Geräte (PC-> MCU) anschließen soll. Ich hatte den Eindruck, dass ein einfacher USB-> TTL (Serial)-> MCU-UART-Eingang dies tun würde, aber anscheinend nicht.

Nach 5 Stunden Suche habe ich nur Artikel gefunden, die sich auf AVR oder PIC beziehen, ohne dass irgendetwas entfernt mit 8051 zu tun hat. Ich verstehe, dass der AT89S2051 über ISP-Funktionalität verfügt, sodass ich keinen dedizierten Chip-Flash-Programmierer benötige. Ich habe auch festgestellt, dass die MCU über serielle Flash-Funktionen verfügt.

Kann mich hier jemand in die richtige Richtung weisen?

Weitere Details:

MCU: Atmel AT89S2051 (auf Steckplatine)
PC: Win 7 x64 (Sollte egal sein, aber hier ist es sowieso)
USB->TTL: PL2303HX (On-Board-Chipsatz)

Verdrahtung:

Der RXD (TTL-Ausgang) ist mit dem TXD (Pin 3.1) des UART verdrahtet.
Der TXD (TTL-Ausgang) ist mit dem RXD (Pin 3.0) des UART verdrahtet. Der GND (TTL-Ausgang) ist mit der
Schaltungsmasse verbunden
5V (TTL-Ausgang) ist mit der Schaltung +5V verdrahtet.
Die +3,3V (TTL-Ausgang) sind nicht verbunden.

Programme, die ich ausprobiert (und nicht verwendet) habe:

AtmelISP
PonyProg
IspPgm

Haben Sie schon nach einem ISP-Programmierer gesucht?
@IgnacioVazquez-Abrams An diesem Punkt bin ich ziemlich verwirrt über den gesamten Flash-Vorgang. Von einem ISP-Programmierer sprechen Sie von einem Hardwaregerät / einer Leiterplatte, die ISP-Chips programmiert, oder von einem Softwareprogramm, das eine solche Funktion möglicherweise durch eine serielle Ausgabe ermöglicht.

Antworten (1)

Wo Sie in Verwirrung geraten, ist, dass ISP zwar für In-System-Programmierung steht, aber häufig noch einen dedizierten Hardware-Programmierer benötigt, um die erforderlichen Spannungen und / oder das Protokoll zum Programmieren des FLASH bereitzustellen. Für dieses Gerät benötigen Sie etwas wie einen Atmel AT89ISP .

Ich habe die AT89-Serie noch nie verwendet, aber auf Seite 32 des AT89S2051-Datenblatts sehen Sie, dass es sich um eine SPI-Schnittstelle handelt, die eine Uhr und Daten-Ein- und -Ausgangsleitungen erfordert. Einige FTDI-Geräte können SPI-Kommunikation unterstützen, aber ich bin mir ziemlich sicher, dass der PL2303HX dies nicht kann, und nach einer kurzen Überprüfung des Datenblatts scheint er nur den asynchronen Modus zu erwähnen.

Im Allgemeinen wäre der einfachste Weg, den AT89ISP-Programmierer zu kaufen, oder ich glaube, es gibt ein paar DIY-Projekte und Klone. Obwohl das Budget nicht knapp ist, ist es wahrscheinlich immer am einfachsten, mit einem offiziell unterstützten Programmierer zu beginnen.

Wenn ich das richtig verstehe, verwende ich in Bezug auf die Software einfach das AtmelISP-Programm mit dem eigentlichen AtmelISP-Kabel, das mit den auf Seite 32 des AT89S2051-Datenblatts angegebenen Pins verbunden ist. 31 Dollar, um eine 2-Dollar-MCU zu programmieren...
@CPUTerminator, ja, das ist richtig, es ist üblich, am Anfang etwas Geld auszugeben. Vor diesem Hintergrund sollten Sie vielleicht über Ihre CPU-Wahl nachdenken. Wenn Sie Code in C schreiben, ist der 8051-Befehlssatz kein großer Vorteil, daher wäre ein AVR vielleicht längerfristig die bessere Wahl. Die Arduino (und billigere Klone) haben bereits einen seriellen Bootloader in den Chip geflasht. Entweder das, oder wenn Sie die gleiche Art von Geld für einen AVR-ISP-Programmierer ausgeben, können Sie ihn langfristig besser nutzen.
Nun, ich denke, Sie haben wieder Recht ... Aber da ich die MCU bereits gekauft habe, könnte ich sie genauso gut verwenden ... Ich werde definitiv langfristig in eine "Mainstream" (AVR/PIC) MCU investieren, vielleicht eine, die entweder direkt über UART programmiert werden kann (gibt es die oder verstehe ich wieder etwas falsch?). Danke für deine Antwort.
Mit der UART-Programmierung und dem Arduino hat schon jemand mit einem ISP-Programmierer einen seriellen Bootloader einprogrammiert. Einige Atmel-Chips haben etwas namens SAM-BA (Boot Assistant) eingebaut, aber das sind nur die komplexeren ARM-Chips. Ein Vorteil für einen ISP-Programmierer besteht darin, dass er oft auch Hardware-Debugging zulässt.