Skip to content
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

Fix ESP-IDF support #1005

Merged
merged 14 commits into from
Oct 10, 2024
Merged

Fix ESP-IDF support #1005

merged 14 commits into from
Oct 10, 2024

Conversation

LennartF22
Copy link

Multiple fixes and minor improvements for ESP-IDF support and the corresponding example.

Copy link
Member

@2bndy5 2bndy5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LennartF22 Your experience with ESP32 is very impressive! Its the kind of expertise that can only come from using the ESP-IDF for a long time (over many hardware revisions)

@LennartF22
Copy link
Author

@LennartF22 Your experience with ESP32 is very impressive! Its the kind of expertise that can only come from using the ESP-IDF for a long time (over many hardware revisions)

You still find new quirks every once in a while 😅

It also worked without it, but if we don't acquire the bus, we will have
issues when the bus is used by multiple devices and we control the CS line
manually.

move
DMA usually performs worse than no DMA for transactions with just a few dozen
of bytes, thus we disable it.
No benefit in using a larger queue_size, since we are using blocking/polling
transactions.
@2bndy5 2bndy5 merged commit 988bd18 into nRF24:esp-idf Oct 10, 2024
1 check passed
@2bndy5
Copy link
Member

2bndy5 commented Oct 11, 2024

Ok. I got it working on Windows with the corrected USB drivers (thank you for the detailed instructions). I found that the PIO's builtin serial monitor (which uses pyserial under the hood) didn't work at all. Instead, I used SimplySerial (externally installed to work with CircuitPython) and it worked flawlessly.

I'm going to start filling out the examples and writing the docs/esp_idf.md document that would instruct newcomers how to setup their RF24 project using only the ESP-IDF. In this doc I'll add instructions about how to

  • configure the pins accordingly
  • use multiple SPI buses for multiple radios (as similarly done in our docs/pico_sdk.md)

Many thanks to @LennartF22! With these changes, we should have v1.5.0 out before the new year (barring any other problems).

2bndy5 pushed a commit that referenced this pull request Jan 10, 2025
* Remove TinyUSB code
* Use USB CDC for ESP32-S2 and USB Serial JTAG for ESP32-S3
* Add support for adding local PlatformIO overrides
* Fix SPI pin initialization
  And stop setting properties that are in a "union" with the actual pin numbers.
* Fix SPI mode
* Properly initialize device config struct
* Remove not properly working status register check
  The check did not work properly, since CS is not asserted!
* Make sure transaction functions are called
  It also worked without it, but if we don't acquire the bus, we will have
  issues when the bus is used by multiple devices and we control the CS line
  manually.
* Stop using DMA for small transactions
  DMA usually performs worse than no DMA for transactions with just a few dozen
  of bytes, thus we disable it.
* Reduce queue_size to 1
  No benefit in using a larger queue_size, since we are using blocking/polling
  transactions.
* Use max_transfer_sz again
* Remove unnecessary properties
* Use `extern "C"` for app_main function only
* Use internal bus configuration in example
2bndy5 pushed a commit that referenced this pull request Jan 12, 2025
* Remove TinyUSB code
* Use USB CDC for ESP32-S2 and USB Serial JTAG for ESP32-S3
* Add support for adding local PlatformIO overrides
* Fix SPI pin initialization
  And stop setting properties that are in a "union" with the actual pin numbers.
* Fix SPI mode
* Properly initialize device config struct
* Remove not properly working status register check
  The check did not work properly, since CS is not asserted!
* Make sure transaction functions are called
  It also worked without it, but if we don't acquire the bus, we will have
  issues when the bus is used by multiple devices and we control the CS line
  manually.
* Stop using DMA for small transactions
  DMA usually performs worse than no DMA for transactions with just a few dozen
  of bytes, thus we disable it.
* Reduce queue_size to 1
  No benefit in using a larger queue_size, since we are using blocking/polling
  transactions.
* Use max_transfer_sz again
* Remove unnecessary properties
* Use `extern "C"` for app_main function only
* Use internal bus configuration in example
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants