EEPROJ Selecting Low-End MCU for our projects
Introduction
TODO see other page why M4F.
Hardware
IC Selection
Selection criteria:
Only paying attention to Microchip Technology, STMicroelectronics, and NXP per TODO.
For low-end projects, will prefer non-FN, non-BGA packages, to significantly decrease project design cost, improve manufacturability, testability, repairability, and ability of CCA assembly without professional, precision, and high-cost equipment.
The following MCUs fit "low-end" criteria for our projects:
| Microchip Technology | STMicroelectronics | NXP | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Family | Family | Family | Family | Family | Family | Family | Family | Family | Family | Family | ||||||||||||||
| Family Name | SAM E54 | SAM E53 | SAM E51 | SAM D51 | STM32F3 | STM32F4 | STM32G4 | STM32L4 | STM32L4R | STM32L4S | ||||||||||||||
| Family Type | Mixed-signal microcontrollers | High-performance | Mixed-signal microcontrollers | Ultra-low power | Ultra-low power | Ultra-low power | ||||||||||||||||||
| Sub-family type | Advanced | Foundation | Access | |||||||||||||||||||||
| Sub-family PN | STM32F469/479 | STM32F429/439 | STM32F427/437 | STM32F446 | STM32F407/417 | STM32F405/415 | STM32F401 | STM32F410 | STM32F411 | STM32F412 | STM32F413/F423 | |||||||||||||
| Sub-family explanation | 469: No Encryption | 479: Encryption | ||||||||||||||||||||||
| Largest non-BGA package | 128-TQFP | 128-TQFP | 128-TQFP | 128-TQFP | 208-LQFP | |||||||||||||||||||
| Largest BGA package | 120-TFBGA | 120-TFBGA | 120-TFBGA | 120-TFBGA | 216-TFBGA | |||||||||||||||||||
| Features | With Ethernet and CAN | With Ethernet, without CAN | Without Ethernet, but with CAN | Without Ethernet or CAN | ||||||||||||||||||||
| SPI | ||||||||||||||||||||||||
| USB | ||||||||||||||||||||||||
| Ethernet | ||||||||||||||||||||||||
| Advantages | Documentation, community support, user base, Arduino bootloader | Pinout, M7 family, open source hardware | ||||||||||||||||||||||
| Disadvantages | Limited pin count compared to STM, NXP | Less refined documentation compared to Microchip | ||||||||||||||||||||||
| Software | ||||||||||||||||||||||||
| Best non-BGA IC PN | ATSAME54P20A-AU
$9.36 128-TQFP |
STM32F469BIT6
$23.02 208-LQFP |
STM32F479BIT6
$23.90 208-LQFP |
|||||||||||||||||||||
| Best BGA IC PN | ATSAME54P20A-CTUT
$9.78 120-TFBGA |
STM32F469NIH6
$23.02 216-TFBGA |
STM32F479NIH6
$23.90 216-TFBGA |
|||||||||||||||||||||
Software
Programming Language
Programming language for all of our projects shall be real C.
We explicitly choose to NOT care about any interpreted or shell languages, because of their waste and low efficiency.
If available, we can pass-thru any of vendor's or third party support for related languages, like Arduino and others, but won't use it in our own projects.
Operating System
Although simple projects can be, and have historically been based on simplistic programming approaches like Super Loop / Infinite Loop / Foreground-Background systems, typically using ISRs (interrupts) to handle high-priority functions with prompt attention, given the complexity of our projects, we will be using a pseudo-RTOS. We say pseudo because with MCUs nothing is actually real-time, and nothing truly works in parallel.
Among what is available, uC/OS-III has always caught our attention, but its cost used to be the only factor constraining us. Now that it has been released as open source, we will be defaulting to it in our projects. uC/OS-III has awesome documentation, awesome additional documentation like books, plenty of community support, very capable and full-featured RTOS, etc.
FreeRTOS we always could not stomach. Incomplete documentation was just the start. Sorry, we are going to pass unless situation improves.
IDEs
TODO