Difference between revisions of "EEPROJ Selecting Low-End MCU for our projects"

From 21st Century Products Wiki
Line 2: Line 2:
TODO see other page why M4F.
TODO see other page why M4F.


=== IC Selection ===
=== Hardware ===
 
==== IC Selection ====
Selection criteria:
Selection criteria:


Line 450: Line 452:
|
|
|}
|}
=== 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
=== TODO continue ===

Revision as of 18:37, 4 February 2022

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:

Low-End MCUs 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

TODO continue