USB-C an ATmega328 oder STM32

OP #7528831
Lesenswert?

Hallo Leute. Kann ich irgendwie einen USB-C Connector so verdrahten, dass er nicht nur die Versorgungsspannung übernimmt, sondern das ich auch komplett darüber programmieren kann? Also sprich so das J1 und J2 entfallen. Hat das schonmal jemand umgesetzt? Der Controller wäre nackt, also es müsste auch der erste Zugriff funktionieren. Es geht mir hier nur um den Controller plus USB. Der Rest ist nicht diskussionsrelevant, da nicht fertig. Vielen Dank!

Angehängte Dateien:
#7528837
Lesenswert?

Debug accessory mode könnte das sein was du suchst. Hier ein Bsp wie man das machen könnte ( er hat es für SWD auf ARM, aber die Idee ist die gleiche): https://threadreaderapp.com/thread/1495860045728395278.html

Dann bastelst du dir halt noch ein dongle das beide CCs high zieht und isp auf den pins adaptiert.

Alternativ einen uC verwenden der mit einem usb-bootloader ab-Werk daherkommt (afaik haben das sogar die avr mit nativem usb drinnen)...

#7528866
Lesenswert?

Philipp schrieb:

Es geht mir hier nur um den Controller plus USB.

Das funktioniert schon deshalb nicht weil du RESET hart mit GND verbunden hast. So kannst du den Atmega328P noch nicht einmal über J1 programmieren.

Ein fabrikneuer Atmega328P kommt ohne Bootloader und kann nur wie im Datenblatt beschrieben programmiert werden.

Du kannst natürlich zwischen USB und Atmega328P einen ISP-Programmer mit aufs Board nehmen. Nur, die brauchen auch Software, und die muss erst mal draufprogrammiert werden ...

LG, Sebastian

#7528867
Lesenswert?

Da macht du dir extra die Mühe Avcc per LC-Glied zu entkoppeln, und dann baust du einen Kurzschluss von Aref gegen Vcc ein?

Aref lässt sich per Software auf Avcc verbinden, da reicht nur ein Kondensator gegen GND am Pin.

Und was soll die Kondensator-Serienschaltung daneben am Bild?

Angehängte Dateien:
Moderator Persönliche Seite #7528870
Lesenswert?

Sebastian W. schrieb:

Du kannst natürlich zwischen USB und Atmega328P einen ISP-Programmer mit aufs Board nehmen. Nur, die brauchen auch Software, und die muss erst mal draufprogrammiert werden ...

Er könnte einen FTDI nehmen, der eine MPSSE hat, der kann ohne weitere Software auch ISP. Aber ob das den Aufwand lohnt?

(FTDI als on-board debugger auf ARMs haben wir aber schon gemacht. Funktionierte problemlos mit OpenOCD.)

#7528891
Lesenswert?

Philipp schrieb:

Der Controller wäre nackt, also es müsste auch der erste Zugriff funktionieren. USB-C an ATmega328 oder STM32

Mit einem USB-UART-Konverter funktioniert das mit jedem STM32, weil die einen eingebauten UART-Bootloader haben. Man braucht also keinen "großen" uC mit USB-Port. Zum Flashen braucht man noch zwei Signale, RESET und BOOT. Dafür könnte man RTS und DTR benutzen, aber die werden vom PC auch mal unfreiwillig angesteuert.

Deshalb erzeuge ich die mit einem 4060, der von RX-Signal resettet wird. Wenn der PC ein längeres Break sendet, kommt zuerst RESET. Etwas später wird BOOT aktiv und RESET wieder inaktiv. Damit startet der Bootloader. Ein kürzeres Break kann den Reset-Taster ersetzen.

Das funktioniert mit jedem STM32 und, weil man nur RX und TX braucht, auch mit dem kleinsten USB-UART-Konverter, z.B. FT230X. Man braucht auch nichts weiter als 2 Optokoppler oder einen ISO-7021 für eine galvanische Trennung.

Unabhängig von meiner Mimik funktionieren die MCP2200 und MCP2221x nicht mit dem STM32-Bootloader, weil die nur 8N1 kennen. Der Bootloader braucht 8E1.

Angehängte Dateien:
Gast #7528895
Lesenswert?

Die Transistoren sind unnötig, du kannst LEDs direkt ansteuern.

Zum Reset Taster gehört weiter nach unten, er muss den Reset Eingang auf Low ziehen.

Bist du ganz sicher, dass du USB Kommunikation über normale I/O Pins machen willst? Vermutlich willst du V-USB verwenden. Informiere dich über die Einschränkungen dieser Implementierung. Soweit ich weiß, läuft das nicht so unproblematisch, wie man das gerne hätte.

Bauform B. schrieb:

Mit einem USB-UART-Konverter funktioniert das mit jedem STM32

Einige STM32 Modelle enthalten sogar einen Bootloader, der USB direkt unterstützt. Zum Beispiel der STM32L072 und der STM32F303.

Hier ist ein ähnliches Board, wie das aus dem Eröffnungsbeitrag, aber mit dem STM32L072: http://stefanfrings.de/yupstick/index.html

Beitrag #7528996 wurde von einem Moderator gelöscht.
OP #7529000
Lesenswert?

Das funktioniert mit jedem STM32 und, weil man nur RX und TX braucht, auch mit dem kleinsten USB-UART-Konverter, z.B. FT230X. Man braucht auch nichts weiter als 2 Optokoppler oder einen ISO-7021 für eine galvanische Trennung.

Unabhängig von meiner Mimik funktionieren die MCP2200 und MCP2221x nicht mit dem STM32-Bootloader, weil die nur 8N1 kennen. Der Bootloader braucht 8E1.

Vielen Dank. Ich wollte langfristig ohnehin auf STM32 wechseln. Das endgültige Projekt ist weit grösser. Das Testboard dient einem Test zur Umsetzung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren