Forum: Mikrocontroller und Digitale Elektronik BSL über USB mit MSP430F449 und FT232R


von Fabio S. (codehamster)


Lesenswert?

Hallo zusammen,

ich überarbeite gerade eine ältere Platine und habe die konventionelle 
RS232-Schnittstelle durch eine USB-Schnittstelle ersetzt.

Was mir negativ auffällt, ist das wenn ich SW über den BSL einspielen 
will die Übertragung über USB ca. 3x so lange dauert, wie wenn ich die 
selbe Platine über RS232 programmiere.

Konfiguration des FT232RL:
Buspowered, #DTR inverted, 3.3V auf Prozessorseite

Beispiel:
152KB Hexfile

BSL über RS232: 23 sek
BSL über USB:   81 sek.

Was ich nicht verstehe, die Baudrate ist ja Fix, also was verursacht die 
Verzögerung?

Hat jemand schon die selben Erfahrungen gemacht und hat jemand den Grund 
dafür gefunden?
Oder gibt es eine Lösung ohne Zeitverlust?

MFG Fabio

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Ich hab auch so eine Schaltung mit FT232 im Einsatz, kann aber nicht mit 
der direkten Verbindung vergleichen. Ich könnte mir nur vorstellen, dass 
die Loadersoftware am PC immer nach jedem gesendendeten Byte wartet, ob 
es richtig zurück kommt. Der MSP430 schreibt ja jedes empfangene Byte 
zurück. Der FT232 hat relativ große FIFO Puffer, es könnte da eben sein, 
dass der Durchlauf der Daten durch die Puffer so lang dauert und der PC 
entsprechend bei jedem Byte auf die Antwort warten muss.
Vielleicht kann man die Puffer abschalten? Ich wüsste aber jetzt nicht 
wie. Vielleicht hilft auch eine selbst geschriebene PC-Software, die den 
Zeitverstz akzeptiert, ohne zu warten - oder kann man das BSL-Programm 
vom mspgcc auch so konfigurieren? Weiß ich auch nicht.

Grüße,

Peter

von Fabio S. (codehamster)


Lesenswert?

In den Einstellungen für den FT232R kann ich keine Änderungen der Grösse 
für den FIFO Puffer vornehmen.

Der Support von FTDI hat mir bei einem ähnlichen Problem bei einem 
Serial to USB Adapter (ebenfalls mit einem FTDI chip drin) geschrieben 
dass ich die Latency von Standard 16 auf 3ms herunterstellen soll. Dies 
über die erweiterten COM-Port Einstellungen des Betriebssystems. Dies 
hat damals eine Verbesserung gebracht.

Momentan bin ich ratlos...

Ich verwende ProgBox von Synasys, habe es auch schon mit anderen BSL's 
versucht. Mit dem gleichen Ergebnis.

MFG Fabio

von Christian R. (supachris)


Lesenswert?

Also die Puffergröße kann man einstellen, im gerätemanager beim 
virtuellen COM Port. Minimum ist aber 64 Byte. Latency so klein wie 
möglich. Aber viel schneller wirds nicht werden, da die Bytes 
kleckerweise übertragen werden. Dafür ist USB nicht ausgelegt.

von Fabio S. (codehamster)


Lesenswert?

Also kann ich nicht davon ausgehen dass ein USB to Serial Baustein auch 
wie eine COM Schnittstelle behandelt wird. Auch wenn er als VirtualPort 
gelistet wird.

Ist es denn möglich den BSL Blockweise zu füttern? anstatt Byte weise?

Wenn ich Christians Antwort richtig verstanden habe liegt da der Hund 
begraben...

von Christian R. (supachris)


Lesenswert?

Nee, soweit ich weiß, verkaftet der BSL immer nur 8 Bytes am Stück. 
Außerdem muss man ständig auf die Antwort warten. Das bringt alles nix 
dann. Musst du mit leben, dass es langsam ist. Für große Blöcke geht USB 
Serial richtig fix, aber für so einen kleinen Hin- unf Her-Transfer halt 
nicht.

von Fabio S. (codehamster)


Lesenswert?

ok, herzlichen Dank für die Infos, hab ich wieder was gelernt dabei =)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.