Learning - Help Please
Re: Learning - Help Please
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?_
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
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.)
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.)
Re: Learning - Help Please
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:
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:
Do you mean things like time slicing (which seems a bit complex), and xtaskcreate(), pinnedtocore()? or is there something more efficient?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.
-
MicroController
- Posts: 2661
- Joined: Mon Oct 17, 2022 7:38 pm
- Location: Europe, Germany
Re: Learning - Help Please
Probably not without going through the full certification process with your product.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 SPI signals should all be routable to arbitrary pins.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?
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).
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.When you say:Do you mean things like time slicing (which seems a bit complex), and xtaskcreate(), pinnedtocore()? or is there something more efficient?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.
Re: Learning - Help Please
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
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
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.
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.
Re: Learning - Help Please
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
Nope.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
Who is online
Users browsing this forum: ChatGPT-User and 18 guests