ArmSys Support

ArmModMid - ARM 32bit processor Module

*** Preliminary ***


What Is It ?

For hobbyist and educational electronics the usage of small 8bit micro-processors in simple and relatively large, dual in-line packages, have been the norm. The Microchip PIC series and Atmel AVR series are very popular and PCB's can be easily produced and assembled with them. More recently there has been a big push in low cost and low power 32bit ARM based microprocessors. These are a lot more powerful than 8bit ones, and due to their 32bit architecture are easier to program. Unfortunately they only tend to come in small packages with fine pin spacing that make it difficult to use for the hobbyist and student when making their own electronics PCB designs.

The idea of the ArmModMid unit is to provide a simple and small ARM processor based module that can be installed onto hobbyist and student designed and built electronics PCB's allowing them to easily make use of this technology. It connects to the users PCB through two 20way 2mm pitch connectors or soldered pinholes. The module is relatively small at 59mm x 29mm.

As well as a 32bit ARM STM32M4 processor, it has a USB interface, 14 ADC channels, a MicroSD card holder and a battery backed up real-time clock amongst other features making it especially useful as a data logger, robot control and general control module.


The ArmModMid is designed with data logging usage in mind. It has the following core features:
  • Powerful ARM 32bit processor running at up to 168MHz with floating point hardware. STM32F405.
  • Processor has 1 MByte of Flash program storage and 192kbytes of RAM
  • Mini USB-B interface for power, programming, debug and general usage (communications with a PC for example).
  • MicroSD card socket allowing up to 64GBytes of data storage memory to be used.
  • Battery backed up real-time clock to store and maintain date and time.
  • 5V to 3.3V regulator for local and optionally external power.
  • 40pin 2mm pitch connector to main PCB.
  • Debug LED. Every microprocessor needs one of these :)
The ARM STM32F405 on the ArmModMid provides the following core features:

32bit ARM core running at up to 168MHz
1 Mbyte
192 kbytes
4 kbytes of battery backed up RAM for non-volatile memory store
USB 2.0 high-speed/full-speed interface
14 channels into 3 x 12bit ADC's at up to 2.4 mega samples per second
2 channels from 2 x 12bit DAC's
14 timers (16 and 32bit)
Up to 16 PWM channels
2 x I2C interfaces
2 x SPI interfaces
4 x serial port UARTS
2 x CAN bus
Battery backed up real time clock for date and time
31 lines of general digital IO lines shared with peripherals


The 32bit ARM core provides a lot of power to create sophisticated systems. To help with harnessing this power in an easy to use way we provide the ArmSys software system. This provides a simple to use integrated development environment with GNU C++/C compiller tool set and the ArmSys C++ class library to make programing the systems relatively easy along with examples.
Features of the ArmSys environment are:
  • Simple C++ class library to access system hardware including I2C, SPI, RTC, ADC's etc.
  • Can be used as a simple single program or as a multi tasking real time program.
  • Class library provides easy usage of the real time operating system features of FreeRTOS allowing multiple tasks to be run simultaneously,
  • Class library provides useful modules such as a MicroSD card file system and USB disk device support.
ArmSys IDE


The ArmModMid user manual
STM32 overal description
STM32M405 electrical manual
STM32M405 reference manual doc/STM32F405xx-reference.pdf
STM32M405 programming manual doc/STM32F405xx-programming.pdf