Baudraten für PIPico über stdio.usb einstellen

OP #8100223
Lesenswert?
• ▲
▼

Hallo, ich bin dabei die Baudraten für PiPIco in C++ zu programmieren. Die Verbindung läuft über die USB-Buchse mit den stdio-funktionen. Da gibt es aber keine Möglichkeit die Baudrate zu programmieren. Man kann nur dazu eine #def machen:

1
#define         PICO_DEFAULT_UART_BAUD_RATE     9600

Der Compiler sagt nichts dazu. Aber leider bemerke ich keine Veränderungen der Übertragungsdauern. Mit den Oszi messe ich immer nur ca.150ns für die kürzesten Impulse, egal was ich definiere.
Es gibt ja auch noch die UARTs 0 und 1 beim Pico. Die laufen aber nicht über die USB-Buchse, oder?
Zur Not würden mir auch die 115200 reichen, lieber wäre mir aber schneller.

#8100227
Lesenswert?
• ▲
▼

Rudi schrieb:

Es gibt ja auch noch die UARTs 0 und 1 beim Pico. Die laufen aber nicht über die USB-Buchse, oder? Zur Not würden mir auch die 115200 reichen, lieber wäre mir aber schneller.

Fangen wir hinten an, die UARTs unterstützen knapp 8 MBaud bei den Standard-genutzten 125MHz (genau: CPU_FREQ/16) Kann man auch schön mit einem UART-USB Kabel testen. (mein PL2303 schafft 4MBaud in den PC hinein) Zwei Picos kann man aber bequem mit maximaler Geschwindigkeit quatschen lassen. Bei der Geschwindigkeit empfiehlt es sich DMA zu nutzen.

Die ACM hat im Grunde genommen gar keine Baud Rate, die Geschwindigkeit wird durch die USB-Geschwindigkeit bestimmt. Hast du da D+ und D- gemessen?

Bin jetzt nicht 100% sicher, aber ich meine mich zu erinnern, dass entweder pro Millisekunde oder alle 125µs je 64 Bytes übertragen werden können. Da sind die PiPicos übrigens deutlich langsamer als zB. die STM32F4.

: Bearbeitet durch User
#8100241
Lesenswert?
• ▲
▼

Norbert schrieb:

Bin jetzt nicht 100% sicher, aber ich meine mich zu erinnern, dass entweder pro Millisekunde oder alle 125µs je 64 Bytes übertragen werden können.

Pro Millisekunde, der RP2040 etc. ist nur ein Full-Speed-Device (12 MBit/sec). Microframes alle 125 µsec gibt es erst ab High-Speed (480 MBit/sec).

Die 64 Byte beziehen sich aber auf den Inhalt eines Pakets ("Transfer"). Pro Frame können mehere Pakete ("Transfers") übertragen werden. Bei 64 Byte Nutzdaten pro Paket sind das maximal 13 Pakete pro Frame, d.h. 832 Byte.

Und damit liegt die maximale Nutzdatenrate bei etwa 832 kByte/sec.

#8100256
Lesenswert?
• ▲
▼

Harald K. schrieb:

Die 64 Byte beziehen sich aber auf den Inhalt eines Pakets ("Transfer"). Pro Frame können mehere Pakete ("Transfers") übertragen werden. Bei 64 Byte Nutzdaten pro Paket sind das maximal 13 Pakete pro Frame, d.h. 832 Byte. Und damit liegt die maximale Nutzdatenrate bei etwa 832 kByte/sec.

Hmmm, habe ich noch nie durch das Ding bekommen. Noch nicht einmal ansatzweise. Vielleicht eine Limitierung des tinyUSB im SDK. Muss gelegentlich mal einen Blick hinein werfen.

#8100281
Lesenswert?
• ▲
▼

Norbert schrieb:

Hmmm, habe ich noch nie durch das Ding bekommen. Noch nicht einmal ansatzweise.

Setzt "bulk" transfer voraus. Früher(tm) gab es USB-IDE-Adapter, die nur Fullspeed konnten (weil es damals Highspeed noch gar nicht gab), mit denen lag' man bei eben jenen 800 kByte/sec.

Einer der wenigen USB-SCSI-Adapter (Adaptec USBConnect 2000) stammt auch aus der Vor-2.0-Zeit und liefert entsprechende Datenraten. Gemütlich, sehr gemütlich.

So sieht das Ding aus: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQh0-06yFS-401_PGBjnMACkD4rwgcbSLFMuBlaQKwFGotfq_pHXYJxIwam&s=10

OP #8100282
Lesenswert?
• ▲
▼

Also, über USB weiß ich wohl zuwenig. Was ich hier lese, gibt es einen großen Unterschied zu seriell. Wenn ich nun mit meinen PiPico Daten an einen PC senden will, muß ich praktischer Weise über USB gehen. Da nützten mir die 2 Uarts im PiPico wohl auch nichts.

Harald K. schrieb:

Und damit liegt die maximale Nutzdatenrate bei etwa 832 kByte/sec

Wenn es aber so schnell geht, warum kommt der gesendete Text am Teminal Putty so langsam an, dass man fast mitlesen kann?

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