The physical layer of the development platform. [VIDEO]
|Platform||Test Tools||SAM3U2 Firmware||nRF51422 Firmware||Software|
The hardware platform for this program consists of two custom development boards very similar in design, but with key differences most notably with the LCD (ASCII character display vs. dot matrix display). The core features of the boards are identical, where each board 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 ASCII LCD board is targeted at learning ground-0 concepts like processor initialization and low-level driver development. The dot matrix board course material is focused on higher level applications and thus hardware that requires some higher level firmware like the graphical LCD is added. Having two pieces of hardware to work with where each can be used in conjunction with the other for different exercises like two-way data transfer over the radio, serial data exchange, and daughter board development offers a truly complete, robust platform for education and development.
Hardware Block Diagrams
Designing a product from scratch involves much more than simply adapting a development board to do what you want (though this is a great place to start as long as it will take you all the way through to a finished product). 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.
Both development boards use the same power input. 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 an LDO (low-dropout regulator).
Atmel Cortex-M3 Microcontroller Unit (MCU)
An Atmel SAM3U2 ARM Cortex-M3 processor is the main applications MCU. The clock for the processor is provided by a 12 MHz crystal, and there is an 32 kHz crystal for a real-time clock or low power operation. The interface to the nRF51422 radio processor and the Blade daughter board connection are identical on both development boards. All of the other signals to the different input/output peripherals on the boards are different.
Nordic Semiconductor nRF51422 Cortex-M0 / ANT / BLE System on Chip (SoC)
Both development boards implement the nRF51422 Cortex-M0 / ANT / BLE system on chip. This is a 2.4GHz radio transceiver with a built-in PCB antenna so you can communicate wirelessly using the Dynastream 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, though any of these signals could be repurposed. The M0 also has access to 4 small LEDs for local status.
ASCII Board Input/Output (IO)
The ASCII board has 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 (there would not be enough pins!). However 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.
Dot Matrix Board Input/Output (IO)
The dot matrix board has 4 RGB LEDs where each segment is controlled individually by the M3 processor. The LED backlight on the LCD is white-only. The board also has the four other indicator LEDs: two for J-Link status, one for power-on, and one “heartbeat”. One piezoelectric buzzer and two active-low buttons are available in addition to the processor reset button. There are two capacitive-touch slider areas that offer some unique input capability, and the LCD is a 128 x 64 pixel black and white dot matrix display. This board also provides a basic serial port.
Segger J-Link Onboard
There are actually two SAM3U2 processors on each board, but the one in the top right corner is factory programmed as the J-Link programming and debugging device. This saves a great deal of cost in buying a standalone programmer to work with the board. In real products, an external programmer is used because including it on board would typically be a large, unnecessary expense.
Printed Circuit Boards (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.
You can learn a great deal more about the hardware design of the platform in the hardware part of the program. The above information provides enough familiarity to enable you to complete all of the modules in both the low level and high level firmware segments. Full schematics are available and it is suggested that you print them out so you always have a copy available to reference. 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.[STATUS: RELEASED. Last Update: 2016-MAR-02]