Perhaps the most interesting aspect of embedded systems development is combination of both hardware and firmware. Embedded engineers often have the knowledge to develop both which enables them to not only design the circuit and “brain” in a product, but to also give it life through programming.
The EiE development board was created to support both hardware and firmware development. The book provides detailed information on the circuit building blocks and overall design of the board. The latest version of schematics and Gerber files are also available (see link below).
We will “soon” be publishing more hardware resources including a tutorial to build your own modular, low-cost version of the EiE development board.
The hardware development board for EiE has a J-Link programmer/debugger on board, a powerful Cortex-M3 processor, and the ingenious nRF51422 ANT/BLE 2.4GHz radio and Cortex-M0 System on Chip.
The two processors each have datasheets and user guides. Though you do not need these for the online EiE program, they are essential documents to have during low-level development with the processor. This is fully explained in the EiE textbook.
Designing a product from scratch involves much more than simply adapting a development board to do what you want although that is a great place to start. Engineers make thousands of decisions in specifying a processor and designing the circuit blocks that will make up the final product. Capturing this in a block diagram is an imperative step in the design process.
Schematics capture the circuit details of the sections in the block diagram. We use Altium Designer for all schematics. The connectivity to the processor is defined and the circuits required are built up with parts and connections needed to make them work. A lot of experience sits behind the decisions that are made in creating these circuits, and in many cases, the designer will reuse many parts or even whole topologies that they have used previously. It takes a lot of time! Just allocating processor pins can take a full day of time to ensure that all signals have a pin and special pins are correctly assigned. In Altium, we use several schematic pages dedicated to different parts of the product. The “Project Master” controls the connectivity between all of the sheets in the project.
Power is supplied by either of the two USB micro B connectors. In most cases, a PC will be plugged in to the connector on the right marked “J-Link” and power will be supplied from there. USB 5V is regulated to 3.3V with a “low dropout” (LDO) voltage regulator IC.
Cortex-M3 Microcontroller (MCU)
An Atmel SAM3U2 ARM Cortex-M3 processor is the main applications MCU. The base clock for the processor is provided by a 12 MHz crystal, and there is a 32 kHz crystal for a real-time clock or low power operation. The MCU interfaces to the nRF51422 radio processor, the daughter board connection, and the other on-board peripherals.
nRF51422 Cortex-M0 ANT / BLE System on Chip (SoC)
The nRF51422 Cortex-M0 / ANT / BLE system on chip is another processor coupled with a 2.4GHz radio transceiver. The board has a built-in PCB antenna so you can communicate wirelessly using the ANT or Bluetooth Low Energy protocols. The M0 core can be programmed and debugged through the J-Link on board just like the Cortex-M3. The M0 is connected to the M3 over SPI and some additional flow control lines and also has access to 4 LEDs for local status.
Input / Output Hardware
There are 8 discrete LEDs: white, purple, blue, cyan, red, yellow, orange and green. If you look closely, you will see that the white, purple, cyan and blue LEDs are actually RGB LEDs with certain resistors populated. The three individual elements of each RGB LED are NOT controlled separately by the MCU as there would not be enough pins! It is actually less cost to use RGBs here than buying the specific colors. There is also a tri-color red-green-blue (RGB) LED backlight on the LCD to which the processor does have control of each color. The board has four other indicator LEDs: two for J-Link status, one for power-on, and one “heartbeat” or system tick LED. Two piezoelectric buzzers provide audio output ranging from annoying single tones to surprisingly melodic songs if you program them just right. For easy user inputs, there are four buttons all of which are active-low. The 5th smaller button is a reset button for the processor. The development board also provides a basic serial port to connect to a PC or other device. The board also has an SD card and USB data connection.
J-Link Programmer / Debugger
There are actually two SAM3U2 processors on each development board, but the one in the top right corner is factory programmed as the J-Link programming and debugging device. This provides essential development capability and saves a great deal of cost compared to buying a standalone programmer. There is a switch on the latest EiE development boards that changes between the Cortex M3 and Cortex M0 processors so you can program and debug both.
Printed Circuit Board (PCB)
When schematics are complete and thoroughly checked, the PCB is started. Each schematic symbol has an associated “footprint” or “land pattern” that corresponds to the physical part that will be placed on the board. All of the wiring done in the schematic defines the connectivity or “net list” for the board that tells the PCB tool what needs to be connected. Both development boards are two-layers with all of the normally populated components on the top side to minimize production cost.
3D models of all of the parts can be included which helps to visualize the board.
The above information provides enough familiarity to enable you to complete all of the online modules, though you can learn a great deal more about the hardware design of the platform in the hardware part of the EiE program. Even if you never do hardware design, embedded systems programmers must understand the hardware they are working with, especially when writing code at the driver level. This is a unique requirement of embedded design.
[Last Update: 2023-AUG-22]