Pi Pico RP2040 USB Kommunikation mit Lazarus/Freepascal?

Antworten
cbiner
Beiträge: 3
Registriert: Mi 7. Dez 2016, 23:26
CPU-Target: W11-64Bit / Pi4

Pi Pico RP2040 USB Kommunikation mit Lazarus/Freepascal?

Beitrag von cbiner »

Hallo zusammen

Habe mit fpcupdeluxe IDE für Pi Pico RP2040 gebaut. Läuft soweit, mit Blink-Beispiel getestet und auf Anhieb mit Erfolg!

Frage: Möchte den RP2040 via USB mit PC kommunizieren lassen.

Die Arduino Beispiel wie:

Code: Alles auswählen

int led = LED_BUILTIN;
void setup() {
  Serial.begin(460800);
  pinMode (led,OUTPUT);
}

void loop() {
  digitalWrite (led,HIGH);
  Serial.println ("ON = eingeschaltet");
  delay(100);
  digitalWrite(led,LOW);
  Serial.println("OFF = ausgeschaltet");
  delay(100);
}
laufen auf PC/W11 mit Lazarus IDE/64 sehr gut. Egal ob ein AVR 328p oder ein Pico RP2040 als Ziel programmiert wurde.

Die Beispiele mit UART0 oder UART1 mit Lazarus sprechen wohl direkt die GPIO Pins an, aber wie komme ich auf die USB des Pico?
Habe ich was übersehen?

Danke für Tips.
cb

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Pi Pico RP2040 USB Kommunikation mit Lazarus/Freepascal?

Beitrag von af0815 »

Was willst du auf der USB. Normalerweise ist dort der emulierte Comport. Da ist nichts mit I/O.

Wenn du den Pico mit USB am PC anschliesst, so erscheint normalerweise ein Comport. Über den kannst du kommunizieren. Ich habe keinen Pico, aber fast alle anderen Syteme reagieren über USB so.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

cbiner
Beiträge: 3
Registriert: Mi 7. Dez 2016, 23:26
CPU-Target: W11-64Bit / Pi4

Re: Pi Pico RP2040 USB Kommunikation mit Lazarus/Freepascal?

Beitrag von cbiner »

af0815 hat geschrieben:
Fr 11. Nov 2022, 19:59
Was willst du auf der USB. Normalerweise ist dort der emulierte Comport. Da ist nichts mit I/O.
Via USB kommunizieren, dafür ist die ja da und ich will eben nicht über die I/O ports eine UART/USB Kommunikation aufbauen.
af0815 hat geschrieben:
Fr 11. Nov 2022, 19:59
Wenn du den Pico mit USB am PC anschliesst, so erscheint normalerweise ein Comport. Über den kannst du kommunizieren. Ich habe keinen Pico, aber fast alle anderen Systeme reagieren über USB so.
Ohne Pico: dann wird es eher schwierig meine Frage zu verstehen. Aber trotzdem Danke für den Input.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Pi Pico RP2040 USB Kommunikation mit Lazarus/Freepascal?

Beitrag von af0815 »

Über den USB fährt man die Comportemulation. Emulation deswegen, weil da ein Comport simuliert wird. Daher suchst du ein Programm was dir am Pico zeigt wie man die serielle betreibt.

Auch dein Arduino Beispiel liefert dir ja Daten über die serielle Schnittstelle.

Über USB kommunizieren alleine ist eine leere Hülse. Weil man muss sagen welches Protokoll du über USB betreibst, bzw. betreiben willst. HID Emulation, virtueller Comport sind die Klassiker.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

chmod222
Beiträge: 14
Registriert: Do 19. Aug 2021, 17:29

Re: Pi Pico RP2040 USB Kommunikation mit Lazarus/Freepascal?

Beitrag von chmod222 »

Ich denke das Geheimnis findest du in der Pico C SDK. Ich weiß so viel, dass es 3 Wege gibt im Pico mit der C SDK über Serial zu kommunizieren:
  1. Die Serial Klasse, sendet wie du bereits herausgefunden hast über USB raus und wird irgendwie für dich transparent verpackt
  2. Die Serial1 Klasse verwendet den Hardware UART0 (Pins 1 & 2)
  3. Die Serial2 Klasse verwendet den Hardware UART1 (Pins 21 & 22)
Dem Datasheet des RP2040 vom Pico kann man entnehmen, dass das Gerät 2 Hardware UARTs besitzt, ergo kann man darauf schließen, dass die USB Kommunikation nicht über einen dieser UARTs läuft sondern irgendwie anders vollzogen wird. Ich habe nirgendwo rausgefunden wie genau das läuft. Da man sein Projekt so kompilieren kann, dass stdout und stdin über USB umgeleitet werden, gehe ich fest davon aus dass die SDK das irgendwie für dich hübsch macht. Der RP2040 kann auch USB 1.1 Host/Client Mode, ich weiß jetzt aber nicht ob er dafür benutzt wird.

Die Beispiele die du gefunden hast mit den GPIO sind vermutlich die selben die ich auch gefunden habe, da sind die GPIO nur für Demozwecke benutzt worden um übers Serial eine LED ein und auszuschalten, aber nicht fürs Serial selbst.

edit: Ich hab nochmal etwas gebuddelt. Die Arduino SDK benutzt TinyUSB fürs USB Serial also wird das alles "manuell" gemacht, bzw ohne Hilfe vom Chip selbst, heißt in Pascal müsstest du auch selbst das USB Serial Protokoll bauen.

cbiner
Beiträge: 3
Registriert: Mi 7. Dez 2016, 23:26
CPU-Target: W11-64Bit / Pi4

Re: Pi Pico RP2040 USB Kommunikation mit Lazarus/Freepascal?

Beitrag von cbiner »

chmod222 hat geschrieben:
Fr 11. Nov 2022, 21:56
edit: Ich hab nochmal etwas gebuddelt. Die Arduino SDK benutzt TinyUSB fürs USB Serial also wird das alles "manuell" gemacht, bzw ohne Hilfe vom Chip selbst, heißt in Pascal müsstest du auch selbst das USB Serial Protokoll bauen.
Ja, habe ich auch gerade entdeckt. Dann wird es wohl via UART und TTL/USB für mich eventuell einfacher, da ich gerne mit Lazarus/Freepascal den Pico und die PC-GUI programmieren möchte.

Antworten