-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for esp32-s3 #48
Comments
Moin, der SPI wird mit und ohne DMA genutzt. Für so einfache Sachen wie etwa Abfragen ob der Co-Prozessor beschäftigt ist oder welches Objekt berührt wurde, da lohnt sich DMA einfach nicht, zum einen ist da der Overhead, zum anderen braucht man das Ergebnis ohnehin direkt. DMA ist für das Display-Update, also wenn es darum geht mehr als nur ein paar Bytes zu schicken, das was richtig lange aufhalten würde, wenn man da drauf warten würde. Viel gemacht habe ich mit den ESP32 jetzt nicht wirklich, ich mag die Dinger eigentlich nicht so, mir ist die Dokumentation zu dünn und man ist im Grunde genommen dem ESP-IDF ausgeliefert. Und dessen Performance beeindruckt mich nicht so. Was den Watchdog angeht, ich habe rtc_wdt_feed() und vPortVield() am Ende von meiner Hauptschleife: Warum das überhaupt notwendig ist habe ich nie ergründet, gerade mit DMA läuft die Schleife ja nun nicht wirklich lange und wenn da schon ein RTOS drunter ist sollte das sich eigentlich um sowas kümmern. |
The ESP32 has been wonderful in my experience. Via Arduino, the abstraction is such that you basically don't have to care about ESP-IDF or FreeRTOS at all, but the expanded capabilities are available if/when you do, so porting existing code to or away from the Espressif chips is a snap. Having two cores is great, and Wi-Fi is fantastic for OTA updating of "sealed" products without externally accessible maintenance ports. The ESP32s are cheap, plentiful, and unlike other chips (STM32, etc), they weathered the chip shortage extremely well, which was a blessing for those of us who used them in commercial products. I know you've been doing a ton of DMA work to squeeze the most out of these chips with your library - and perhaps have been disappointed with their SPI performance relative to other chips. But my experiences of them, with your library, have been nothing but positive. |
Well yes, I had to work with ESP-IDF since the ESP32 Arduino SPI class does not support DMA. |
Ich habe endlich ein Board mit ESP32-S3 auf dem Tisch und bisher kommt hier gar nichts aus dem SPI raus. Das rtc_wdt_feed() musste ich auskommentieren, damit gab es Fehler beim Compilieren durch das Include. Ich habe dieses Board hier: https://bpi-steam.com/Leaf_S3_doc/en/ Ich habe GPIO10 bis GPIO14 konfiguriert und hänge da mit dem Logic-Analyzer drauf, PD an 14 funktioniert scheinbar, CS am 10 sieht sehr seltsam aus und auf SCK = 12, MOSI = 11 sowie MISO = 13 passiert gar nichts. Also zumindest in PlatformIO ist das alles noch etwas merkwürdig. |
Ok, gefunden und gefixt. spi_bus_initialize(HSPI_HOST, &buscfg, 2); Auf das SPI2_HOST kommt man ja praktisch automatisch. |
Hi Rudolph, das heißt, man ist nach wie vor auf die ESP-IDF angewiesen, wenn man DMA nutzen will am ESP32-S3? Gerade gefunden:
Sehr gut! |
Ja, bisher ist das leider so, wie bei den meisten anderen Arduino Cores auch, entweder geht man an der SPI Klasse vorbei und ist entsprechend dazu nicht mehr kompatibel, oder man bekommt kein DMA. |
Hast du evtl ein Beispiel. Mein Idee war den Eve mit einem eigenen SPI anzusprechen und anderen SPI Geräte über einen zweiten. |
Ich habe DMA per ESP-IDF ja gerade wieder eingebaut, aktiviert über das vorhandensein von EVE_USE_ESP_IDF. Eigentlich wäre das Makro um DMA zu aktivieren EVE_DMA, beim ESP32 nutze ich das allerdings um alles was zwischen EVE_start_cmd_burst() und EVE_end_cmd_burst() in einen Puffer zu schreiben und entweder wird dieser Puffer per Arduino API übertragen, oder über DMA mit ESP-IDF wenn EVE_USE_ESP_IDF vorhanden ist. Ich würde gerne für normale Transfers die Arduino SPI Klasse verwenden, da diese inzwischen schneller ist als ESP-IDF, so im Gegensatz zu dem vorherigen Stand als die Arduino Klasse das ESP-IDF verwendet hat. Ausprobiert habe ich das mit einem ESP32-S3. Ah, um ESP-IDF zu nutzen muss auch EVE_init_spi() aufgerufen werden, ich muss wohl auch mal wieder die Beispiele aktualisieren. |
Hallo,
ich arbeite mit einem esp32-s3 (esp-idf) und dem BT815 und laufe hier in einige Probleme. Um überhaupt auf dem esp32-s3 die lib zum laufen zu bringen musste ich eigentlich nur die HOST_ID auf SPI2_HOST setzen.
Allerdings bekomme ich immer einen Watchdog Trigger, den ich nicht richtig verstehe.
Ich lasse die touch Kalibrierung laufen und die Funktion
spi_device_polling_transmit(EVE_spi_device_simple, &trans);
endet immer im WDT.Noch bin ich auf der Suche nach der Ursache, aber ich möchte heir schon mal fragen, warum zwei spi_devices angelegt werden? Und wieso die unterschiedlichen Frequenzen?
FT800-FT813/EVE_target.c
Lines 383 to 389 in aa717f3
Liebe Grüße
The text was updated successfully, but these errors were encountered: