Learning - Help Please

Jblight32
Posts: 22
Joined: Fri Jun 16, 2023 4:54 pm

Re: Learning - Help Please

Postby Jblight32 » Sat Dec 28, 2024 12:54 pm

What is the difference between shielded vs non-shielded chips like these two S3 boards?
Other than a huge size difference, the only thing I can see is an antenna and some extra pins
https://www.ebay.com/itm/226192973258?_
https://www.ebay.com/itm/315104341944?_

MicroController
Posts: 2661
Joined: Mon Oct 17, 2022 7:38 pm
Location: Europe, Germany

Re: Learning - Help Please

Postby MicroController » Sat Dec 28, 2024 5:42 pm

The 'shielded' ones are usually the Espressif-made "modules", and when they are, they have an FCC EMC certification. The unshielded ones are usually not FCC or otherwise EMC certified and hence may in theory not be legally operated, much less sold when built into a product, in many jurisdictions, or only operated if you have a HAM license.

Plus, the bigger dev board also has a USB<->UART converter on board (for an extra/dedicated UART connection), and an RGB LED.

Functionally they're identical, but different chips and modules come with different sizes of flash memory and (optionally) external PSRAM.

How much flash you should buy depends, of course, on the application(s) you have in mind. Note though that, if you want "over-the-air" (OTA) firmware updates, you'll need at least 2x the application size of flash (one application "partition" is running while the other one is being updated/overwritten by the running application). 4MB of flash is the low end, and may not be enough for a 'reasonably' sized application with OTA capability.

"External"/PSRAM is needed for some use cases, e.g. if you need to framebuffer a big-ish TFT display or some kinds of real-time audio processing. Notice that the internal SRAM is "only" half a MB, of which 1/4 to 1/3 is easily taken up by application/OS code copied to RAM. Add the network stack and a handful of concurrent TCP connections, and 1/2 or more of the internal RAM may be used up before your application can even do anything useful. TL;DR: Having 4 or 8 MB of "external" RAM is quite beneficial for many applications on the ESP32-S3. Only downsides of having it are 1) slightly higher cost, 2) potentially higher power consumption in sleep mode, 3) one less IO pin available for other things.

(I put "external" in quotation marks above because nowadays chips can be had which house that "external" PSRAM in the same plastic package as the rest of the MCU; logically and electrically it's still "external" to the MCU though.)

Jblight32
Posts: 22
Joined: Fri Jun 16, 2023 4:54 pm

Re: Learning - Help Please

Postby Jblight32 » Mon Jan 06, 2025 3:28 pm

Oh wow, so if I wanted to sell a product containing the esp32 (maybe even go for a patent)... pretty much no chance without the shielded module ver?
The unshielded minis are amazingly small!
In the meantime, I'm thinking of ordering two 'ESP32-S3-DevKitM-1 ESP32-S3-MINI-1 D2N8 Development Boards'.
https://www.ebay.com/itm/315042335479?_

For an led strip like ws2812, it sounds like theres a specific pin (mosi, is it assignable or hard-wired) that's best to use?
I'm reading about the LED PWM functions and IO-MUX from here:
https://www.espressif.com/sites/default ... o-mux-gpio
According to the S3 datasheet, GPIO's 0,3,19,20 are best to use... but why?

When you say:
Multiple tasks, or ISRs and tasks, can only safely and efficiently interact via FreeRTOS's synchronization primitives. Just sharing a global variable between tasks is usually not going to cut it.
Do you mean things like time slicing (which seems a bit complex), and xtaskcreate(), pinnedtocore()? or is there something more efficient?

MicroController
Posts: 2661
Joined: Mon Oct 17, 2022 7:38 pm
Location: Europe, Germany

Re: Learning - Help Please

Postby MicroController » Mon Jan 06, 2025 4:12 pm

Oh wow, so if I wanted to sell a product containing the esp32 (maybe even go for a patent)... pretty much no chance without the shielded module ver?
Probably not without going through the full certification process with your product.
For an led strip like ws2812, it sounds like theres a specific pin (mosi, is it assignable or hard-wired) that's best to use?
I'm reading about the LED PWM functions and IO-MUX from here:
https://www.espressif.com/sites/default ... o-mux-gpio
According to the S3 datasheet, GPIO's 0,3,19,20 are best to use... but why?
The SPI signals should all be routable to arbitrary pins.
Some signals can 'bypass' the GPIO matrix when connecting to specific pins, being connected directly to and through the IO MUX. This avoids the latency the signals encounter when travelling through the GPIO matrix first before arriving at the IO MUX. The extra latency is negligible most of the time, the notable exception being high-speed SPI communication (at 20+ MHz or so).
When you say:
Multiple tasks, or ISRs and tasks, can only safely and efficiently interact via FreeRTOS's synchronization primitives. Just sharing a global variable between tasks is usually not going to cut it.
Do you mean things like time slicing (which seems a bit complex), and xtaskcreate(), pinnedtocore()? or is there something more efficient?
Sorry for not being clearer. By tasks "interacting" I only mean sharing or exchanging 'data' (or events) between each other. Tasks being inherently asynchronous and subject to non-deterministic timing must use synchronization primitives (i.e. notifications, semaphores/mutexes, or queues) provided by the OS in order to a) maintain the consistency of shared data and b) synchronize their actions to other tasks or ISRs.

Jblight32
Posts: 22
Joined: Fri Jun 16, 2023 4:54 pm

Re: Learning - Help Please

Postby Jblight32 » Fri Mar 14, 2025 2:05 am

I am a little confused as to what I should use to write code.
I started with arduino-ide, but then there's espressif-ide and esp-idf... I have also seen people using visual studio.

The esp-idf seems to just be a command line compiler?
espressif-ide looks more like a text doc.... but arduino-ide is a very nice system with a lot of helpful libraries.
What should I use to write code in so it also works with FreeRTOS?
or does it matter? Is FreeRTOS just used implemented in compiling through espressif-ide?

I dont understand if I can write code in any program and then I should compile/upload with espressif-ide and that will work with FreeRTOS. Kind of a mess trying to self teach

MicroController
Posts: 2661
Joined: Mon Oct 17, 2022 7:38 pm
Location: Europe, Germany

Re: Learning - Help Please

Postby MicroController » Fri Mar 14, 2025 7:55 am

Here's a quick rundown:
1) ESP-IDF is the "SDK", i.e. the tools and libraries to compile, flash, debug applications for the ESP32. It's command-line based, so you can use any editor you like to write code and then build it via the idf.py tool. The IDF includes FreeRTOS and "driver" code for the peripherals of the ESP32s.
2) Visual Studio Code is somewhat in between a fancy text editor for code and an IDE. It doesn't build/compile code, but can integrate external programs to do that. Using the ESP-IDF extension, it integrates the ESP-IDF tools and libraries into its UI so you can build from VS Code by clicking a button.
3) The Espressif IDE is an alternative which does exactly the same things Visual Studio Code with the IDF extension does.
4) "Arduino" is another IDE you can use plus the Arduino framework which provides simplified APIs for many ESP features. Internally, the Arduino framework includes and builds 'on top' of the ESP-IDF; because of this, you can use ESP-IDF APIs inside the Arduino IDE and Arduino 'sketches' alongside the Arduino APIs.

Jblight32
Posts: 22
Joined: Fri Jun 16, 2023 4:54 pm

Re: Learning - Help Please

Postby Jblight32 » Sun Mar 16, 2025 7:53 am

Ok so I can continue to code in ArduinoIDE, but the one and only way to utilize FreeRTOS is by compiling through ESP-IDF?

MicroController
Posts: 2661
Joined: Mon Oct 17, 2022 7:38 pm
Location: Europe, Germany

Re: Learning - Help Please

Postby MicroController » Sun Mar 16, 2025 7:54 pm

the one and only way to utilize FreeRTOS is by compiling through ESP-IDF?
Nope.

Jblight32
Posts: 22
Joined: Fri Jun 16, 2023 4:54 pm

Re: Learning - Help Please

Postby Jblight32 » Mon Mar 17, 2025 4:35 am

I can utilize FreeRTOS through ArduinoIDE?

MicroController
Posts: 2661
Joined: Mon Oct 17, 2022 7:38 pm
Location: Europe, Germany

Re: Learning - Help Please

Postby MicroController » Mon Mar 17, 2025 8:02 am


Who is online

Users browsing this forum: Bytespider, Qwantbot and 8 guests