Installation des RP2040 Core von Earle Philhower für Platform IO
In diesem Artikel hatte ich ja schon das LoRaWAN LR1262 Development Board mit RP2040 und 1.8 “ LCD für LoRa-Anwendungen von der Hardwareseite her vorgestellt.Und im Artikel Libraries und Software für das Elecrow LoRaWAN LR1262 Dev.-Board mit Raspi-Pico 2040 geht es dann um die Programmierung.
Und da bin ich auf ein Problem gestoßen: Um die LED-Ampeln darauf anzusprechen, muss ich den auf dem Board verbauten PCA9557 IO-Expander über I2C ansprechen. Bei diesem Board sind SDA auf Pin 20 und SCL auf Pin 21. Die Pins kann ich natürlich auf einem fest verdrahteten Board nicht hardwaretechnisch ändern, ich muss sie in der Software konfigurieren.
Core von m-bed (platform = raspberrypi)
Und genau das gelingt mir nicht mit der Platform IO-Konfiguration[env:pico]
platform = raspberrypi
board = pico
framework = arduinoWire.setSDA(PIN_SDA); Wire.setSCL(PIN_SCL);Wire.begin(PIN_SDA,PIN_SCL);#include "mbed.h"
I2C i2c (PIN_SDA, PIN_SCL)
...
loop() {
char cmd[2];
cmd[0] = 0x01;
cmd[1] = 0x00;
i2c.write(ADDR_LEDS, cmd, 2);
delay(100);
cmd[1] = 0xff;
i2c.write(ADDR_LEDS, cmd, 2);
delay(100);
} Nebenher zum Thema Boot-Select gesagt: bei dem mbed-core kann man den Reset-Taster erst etwas länger halten, so etwa eine halbe Sekunde und dann ganz schnell nochmal kurz drücken, um in den Boot-, also Programmier/Flash-Upload-Modus, zu gehen. Das schont die Finger und Nerven bei den winzigen Knöpfchen auf dem Board, weil man nicht zwei Knöpfchen gleichzeitig drücken muss.
Da nicht mal das I2C-Hello-World-Programm mit dem mbed-Code funktioniert, suche ich nach einer anderen Lösung. Und werde auf den Core von Earle Philhower aufmerksam.
Core von Earle Philhower (platform = ...maxgerhardt...)
Um den earlephilhower-Core zu benutzen, hat sich folgende Konfiguration bei mir bewährt:[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
board_build.core = earlephilhower
framework = arduinoUnd siehe da, hier klappt die Pin-Konfiguration und Ansprache von I2C
#include
#include
...
void setup() {
Wire.setSDA(PIN_SDA);
Wire.setSCL(PIN_SCL);
Wire.begin();
// Alle 8 Pins des PCA9557 für die farbigen LEDs als Ausgang konfigurieren (0 = Ausgang)
i2cWrite(ADDR_LEDS, 3, 0);
delay (10);
}
void loop() {
for (int i = 4; i <= 128; i*=2) {
i2cWrite (ADDR_LEDS, 1, i);
delay(200);
}
} Die vom Arduino gewohnten Befehle Wire.setSDA(PIN_SDA); und Wire.setSCL(PIN_SCL); lassen sich damit verwenden, der I2C-Bus richtig konfigurieren und die LEDs laufen fröhlich durch, so wie sich das gehört.
Der earlephilhower-Core ist also der bessere Core, so wie es scheint. Er ist ein "aufgebohrter" Standard-Core mit so einigen nützlichen Erweiterungen und Modernisierungen. Es wird auch der neue RP2350 (Pico 2) unterstützt. Die zahlreichen Feature könnt ihr auf https://github.com/earlephilhower/arduino-pico nachlesen. Auf der Seite beschreibt Earle F. Philhower, III allerdings nur die Einbindung in die Arduino IDE.
Um den earlephilhower-core in die Platform IO Umgebung, die ich zusammen mit Visual Studio Code benutze, zu bringen, braucht es noch die Zeile platform = https://github.com/maxgerhardt/platform-raspberrypi.git in der platformio.ini. Und schon lässt sich alles wunderbar kompilieren.
Max Gerhardt schreibt in seinem GitHub, dass er den Fork gemacht hat, weil er den Fortschritt bei der Entwicklung zum Raspberry Pi RP2040 und RP2350 Arduino Core für PlatformIO vermisst hat. Mehr kann man dort nachlesen.
Ein wichtigen Feature des earlephilhower-cores ist auch, dass sie den 1200-Baud-Trick beherrscht, die den Firmware-Upload sehr vereinfacht: Beim Upload (CTRL+ALT+U) wird der Pico direkt in den Boot-Select-Modus versetzt. Man muss also nicht mehr BOOT+RESET drücken. Man muss gar keine Knöpfe mehr drücken. Allerdings funktionierte das Finden des UF2-Upload-Laufwerks über das picotool nicht richtig, so dass ich die neue Firmware doch noch händisch auf das UF2-Laufwerk kopieren muss. Was mit einem script aber super easy mit einem Doppelklick erledigt ist. Und nach dem Upload resetet der Pico dann selbstständig. Also keine Pein mehr mit Winz-Knöpfelchen.
