# Why again a new Microcontroller? # Where are the main differences? * STM32F3/F4 * RaspberryPico (RP2040) * ArduinoUno (ATMega328P) * ArduinoATMega * ArduinoMicro/Nano * ATtiny ## Table of Comparison | Attributes | RP2040 | STM32-F3 | STM32L1 | ESP8266 | ArduinoMicro/ Nano | | ------------------------ | ------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------ | | Core | ARM Cortex M0+ | ARM Cortex M4 | ARM Cortex M3 | Tensilica LX106 | ATmega328P | | Coprocessor | - | - | - | X | X | | Core - max Speed | 133 MHz | 170 MHz | 32MHz | 80 MHz (up to 160 MHz) | 16 MHz | | Core - Memory SRAM/Flash | 264KB | 40 KB /128 to 256 KB | 32 KB - 512 KB | 160 KB (36 KB available to user) | 32 KB (2 KB used for Bootloader) | | **uC Components** | | | | | | | ADC | x4 12-bit | 4 x 12-Bit ADCs (5 Msps) | 12-Bit | 10 bit | | | DAC | - | 2 x DAC | 2x 12-Bit | X | | | PWM | up to 16 | 31 - 33 | 4 | 4 | | | Timer | | Advanced control 2(16 bit) / General purpose 5 (16 bit) 1 (32 bit) / Basic 2 (16 bit) | "11x timers: 1x 32-bit, 6x 16-bit with up to 4 IC/OC/PWM channels, 2x 16-bit basic timers, 2x watchdog timers (independent and window)" | N/A | | | Interrupts | 26 | NVIC - 66 maskable interrupt - 16 priority levels | 56 maskable interrupt - 16 priority levels | 16 | | | GPIO | "30 (eig 26 siehe Quelle ""jeffgeerling"")" | 8 Groups - Normal I/Os 20 - 5-volt tolerant I/Os 17 - Speed max. 36 MHz | 51-115 | 17 | 22 (6 of which are PWM) | | **Consumption** | | | | | | | Power overall | "92.8 mA, 0.33 W" | 21.8 mA (bei 24 MHz | Peripherals enabled) | 230 µA/MHz Run mode/11 µA Low-power run mode/1.15 µA standby mode + RTC | 70 mA (nur empfangen von WiFi Daten) | | Power hibernation | "2 mA, 6 mW" | 2.8 mA (bei 24 MHz | Peripherals disabled) | "1mA, 16MHz, Peripherals disabled" | 20 µA | | **Communication** | | | | | | | SPI | 2 (OSPI) | "2 (3) SPI (18 Mbits/s)- half/full duplex I2S interface, 4 to 16 - programmable bit frames" | 8 | 2 | | | I2C | 2 | "2 x I2C, standard (ut. 100 KHz), fast (ut. 400 KHz), fast mode + (ut. 1 MHz)" | 2 | 1 | | | USART | 2 | 3 USART (9 Mbits/s) | 3 | X | | | UART | 2 | 2 UART | 2 | 2 | | # Toolchain and SDK on the fly ## Comparison to ArduinoIDE + CLI support + Features + Chip Support + Abstraction Layer support + CI proof # Differences MicroPython and C/C++ * Performance/Power Consumption * Type savety * Avainable features ## Todos ### 20210224 - [x] Search for datasheets of uC and Cores ### 20210303 - [x] Fill the comparison table - [ ] Init of template repository for fast and easy deployment ## Teams ### RP2040 - ARM Cortex M0 Borensky, Degold, Ulbel, Aksoy, Wachter Datasheet: [9] Amazon Pico: ### STM32F3 - ARM Cortex M4 Kupert, Haslinger, Dejan, Gessl ### ESP8266 - Tensilica LX106 Felber, Meier, Kolesik, Weiss Datasheet: [Link](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf) Amazon Nodmcu: [Link](https://www.amazon.de/-/en/AZDelivery-NodeMCU-ESP8266-ESP-12F-Development/dp/B0754HWZSQ/ref=sr_1_3?dchild=1&keywords=nodemcu&qid=1614438560&sr=8-3) Nodmcu Tutorial for MicroPython and esptool:[Text](https://null-byte.wonderhowto.com/how-to/get-started-with-micropython-for-esp8266-microcontrollers-0210302/) / [Video](https://www.youtube.com/watch?v=j0hgKkwmSlw) ESP8266 Micropython binaries: [Link](http://micropython.org/download/esp8266/) ### STM32L1 - ARM Cortex M3 Bruckner, Laback, Lehmann, Matschinegg, Shukhov ### TM4C1294/MSP430 - ARM Cortex M4F Borko ### MicroPython / C / c++ Frühmann, Meth, Beier, Brugger ### ArduinoMicro/ Nano Ceornea, Ganguly, Haas, Jindra ## Resources * [1] https://www.raspberrypi.org/documentation/pico/getting-started/ (zuletzt besucht 02.03.2021) * [2] https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf (zuletzt besucht 02.03.2021) * [3] https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf (zuletzt besucht 02.03.2021) * [4] https://www.mikrocontroller.net/articles/ARM_Cortex_Mikrocontroller (zuletzt besucht 02.03.2021) * [5] https://github.com/raspberrypi/pico-sdk (zuletzt besucht 02.03.2021) * [6] https://www.elektormagazine.de/news/neu-raspberry-pi-pico-und-der-mikrocontroller-rp2040 (zuletzt besucht 02.03.2021) * [7] https://socialcompare.com/en/comparison/syt5-embdev-5thoqzuz (zuletzt besucht 02.03.2021) * [8] https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/arm-based-microcontrollers/products.html#p887=ARM%20Cortex-M4F (zuletzt besucht 02.03.2021) * [Y] https://hackaday.com/2021/01/20/raspberry-pi-enters-microcontroller-game-with-4-pico/ (zuletzt besucht 02.03.2021) * [Y] https://www.tomshardware.com/features/raspberry-pi-pico-vs-arduino (zuletzt besucht 02.03.2021) * [Y] https://www.jeffgeerling.com/blog/2021/raspberry-pi-pico-new-4-microcontroller (zuletzt besucht 02.03.2021) ### Datasheets and Overviews of uC * [9] "ARM Cortex M0 | RP2040" [online](https://datasheets.raspberrypi.org/rp2040/rp2040-datasheet.pdf) | zuletzt besucht 02.03.2021 * [9.5] "RaspberryPi Pico Data Sheet" [online](https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf) | zuletzt besucht 02.03.2021 * [10] "ARM Cortex M4 | STM32F405xx" [online](https://www.st.com/resource/en/datasheet/dm00037051.pdf) | zuletzt besucht 24.02.2021 * [11] "ARM Cortex M4 | STM32-F303" [online](https://www.st.com/resource/en/datasheet/stm32f303vc.pdf) | zuletzt besucht 24.02.2021 * [12] "ESP8266EX" | ESP8266EX [online](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf) | zuletzt besucht 03.03.2021 * [13] "ARM Cortex M3 | STM32L1" [online](https://www.st.com/resource/en/datasheet/stm32l162vd.pdf) | zuletzt besucht 03.03.2021 #### Datasheets of Cores --- **Version** *20210303v3*