GHI electronics FEZ Panda III User manual

GHI Electronics
501 E. Whitcomb Ave.
Madison Heights, Michigan 48071
Phone : (248) 397-8856
Fax: (248) 397-8890
www.GHIElectronics.com
Where Hardware Meets Software
FEZ Panda III User Manual
*** DRAFT ***

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
Overview
The FEZ Panda III is a small low-cost Single Board Computer (SBC) that has the G80
System on Chip (SoC) at its heart. It runs .NET Micro Framework software platform;
a tiny version of Microsoft .NET framework. The value of FEZ Panda III is not only in
the hardware capabilities such as the Cortex-M4 processor, memory and
peripherals, but also is in the integration between the hardware and the embedded
software. This provides high level features such as FAT file system, TCP/IP stack,
Graphics and Threading through .NET APIs. Furthermore, the embedded software
includes GHI Electronics’ extensions such as USB Host and Signal Generate. All are
provided royalty-free with the FEZ Panda III SBC.
All programming and debugging features are available through the state of the art
Microsoft's Visual Studio. Allowing C# and Visual Basic development over a simple
USB or serial connection.

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
Benefits
Key Features
G80 SoC at its core
256KByte of RAM
1MByte of Flash
USB Host/Device with drivers
4-bit SD card interface
Plenty of essential peripherals such as GPIO, SPI, UART, I2C, CAN, ADC, DAC
and PWM.
High level features such as file system, networking and Graphics.
Supports Visual C# and Visual Basic
Applications
Data Logger
Hand Held Testers
Internet of Things Applications
Networked Alarm Systems
Automation Applications
Controllers, Robotics

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
Specifications
Dimensions W x L x H (mm)
26.67 x 38.1 x TBA
Core System Hardware
G80 SoC
Processor
180 Mhz 32-bit Cortex-M4
FLASH Available/Free
1MB/256kB
RAM Available/Free
256kB/152kB
Color TFT Display Controller
Through Native SPI
Graphics (font/controls)
Image Decoder
Complete
BMP
Native Networking Support
None
Programmable IOs
52 IOs + 4 LEDs + 2 Buttons
PWM
21 + 4 LEDs
Analog Input
16
Analog Output
2
UART (COM)
4
SPI
2
I2C
Available
CAN
2
One-wire
Supported on all IOs
USB Host
HID, Mass Storage, CDC, Raw
USB Client
HID, Mass Storage, CDC, Raw
4bit SDHC/SD/MMC
Supported
Real Time Clock
Available
Piracy Protection
Available
In-Field Update
No
Operating Temperature
-40° to +85°
Lead Free
Yes
RoHS Compliant
Yes
Load native C/assembly
TBD

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
Pinout –40 Pin Header
Secondary Features
Pin
3.3 Volts Out
3V3
Digital In / Out
D20
Digital In / Out
D22
Digital In / Out
D24
Digital In / Out
D26
Digital In / Out
D28
CAN2 RD
D30
CAN2 TD
D32
Digital In / Out
D34
SPI2 SCK / PWM
D35
SPI2 MISO / Analog In
D36
SPI2 MOSI / Analog In
D38
COM3 RX
D40
COM3 TX
D42
COM3 CTS
D44
COM3 RTS / PWM
D46
PWM
D48
PWM
D50
Digital In / Out
D52
5 Volts In / Out
5V
Secondary Features
Pin
Ground
GND
PWM
D21
Analog In
D23
Analog In
D25
Analog In
D27
Analog In
D29
COM4 RX / Analog In
D31
COM4 TX / Analog In
D33
Ground
GND
Mode
MOD
COM2 RX
D37
COM2 TX
D39
COM2 CTS
D41
COM2 RTS
D43
Digital In / Out
D45
Digital In / Out
D47
Digital In / Out
D49
Digital In / Out
D51
Ground
GND
3.3 Volts Out
3V3

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
Pinout –Arduino-Compatible Headers
Secondary Features
Pin
Reset Input
RST
3.3 Volts Out
3V3
5 Volts In / Out
5V
Ground
GND
VIN for external
VIN
Analog In / PWM
A0
Analog In / PWM
A1
Analog In / Out
A2
Analog In / Out
A3
Analog In / PWM
A4
Analog In / PWM
A5
Secondary Features
Pin
Optional battery for RTC
VBAT
Ground
GND
SPI1 SCK / PWM
D13
SPI1 MISO / PWM
D12
SPI1 MOSI / PWM
D11
PWM
D10
Analog In / PWM
D9
Analog In / PWM
D8
CAN1 TD
D7
PWM
D6
PWM
D5
CAN1 RD
D4
I2C SCL
D3
I2C SDA
D2
COM1 TX
D1
COM1 RX
D0

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
FEZ Panda III and Arduino Comparison
FEZ Panda III is not an Arduino board, but it makes use of the idea of having a
stackable hardware platform. The similar form factor between FEZ Panda II and
Arduino allows developers to use almost any of the available Arduino shields.
While using the same shields, FEZ Panda III offers more powerful hardware and
software platform, greater flexibility and far more features. Starting with Microsoft
Visual C# Express and the possibility for debugging and ending with high-end
libraries like USB device, threading, XML, better Ethernet networking and many
others. Additionally FEZ Panda III has extra IOs exposed on an easily accessible 40-
pin female header.
Software Examples
These are quick snippets for a quick start up. Full details are located in the free
NETMF for Beginners book, located at https://www.ghielectronics.com/support
Blinking an LED
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GHI.Pins;
public class Program
{
public static void Main()
{
var LED = new OutputPort(FEZPandaIII.GpioLed1,true);
while(true){
LED.Write(!LED.Read()); // Invert
Thread.Sleep(30);
}
}
}

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
Fading an LED
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GHI.Pins;
public class Program
{
public static void Main()
{
var LED = new PWM(FEZPandaIII.PwmOutput.LED1, 10000, 0.1,
false);
double level = 0.5;
double step = 0.01;
while (true)
{
LED.DutyCycle = level;
LED.Start();
level += step;
if ((level >= 0.9) || (level <= 0.1))
{
step *= -1; // Invert the step
}
Thread.Sleep(10);
}
}
}
Press the Button to set the LED
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GHI.Pins;
public class Program
{
static OutputPort LED = new OutputPort(FEZPandaIII.Led1, false);
public static void Main()
{
var Button = new InterruptPort(FEZPandaIII.Ldr0, true,
Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth);
Button.OnInterrupt += Button_OnInterrupt;
Thread.Sleep(Timeout.Infinite);
}
static void Button_OnInterrupt(uint pin, uint state, DateTime time)
{

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
LED.Write(state == 0);
}
}
Reading a USB Keyboard
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GHI.Pins;
using GHI.Usb.Host;
public class Program
{
public static void Main()
{
Controller.KeyboardConnected += Controller_KeyboardConnected;
Controller.Start();
Thread.Sleep(Timeout.Infinite);
}
static void Controller_KeyboardConnected(object sender, Keyboard e)
{
Debug.Print("Keyboard connected.");
e.CharDown += e_CharDown;
}
static void e_CharDown(Keyboard sender, Keyboard.KeyboardEventArgs args)
{
Debug.Print("You Pressed: " + args.ASCII);
}
}
Writing a file to a USB memory drive
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using Microsoft.SPOT.IO;
using System.IO;
using System.Text;
using GHI.Pins;
using GHI.Usb.Host;
public class Program
{

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
private static AutoResetEvent evt = new AutoResetEvent(false);
static MassStorage massStorage = null;
public static void Main()
{
Controller.MassStorageConnected += Controller_MassStorageConnected;
RemovableMedia.Insert += RemovableMedia_Insert;
Controller.Start();
evt.WaitOne(); // Wait for it be inserted
massStorage.Mount();
evt.WaitOne(); // Wait fro it to get mounted
using (var fs = new FileStream("\\USB\\Hello.txt",
FileMode.OpenOrCreate))
fs.Write(Encoding.UTF8.GetBytes("Hello, World!"), 0, 13);
massStorage.Unmount();
Thread.Sleep(Timeout.Infinite);
}
static void RemovableMedia_Insert(object sender, MediaEventArgs e)
{
Debug.Print("Mounted.");
evt.Set();
}
private static void Controller_MassStorageConnected(object sender,
MassStorage ms)
{
Debug.Print("Inserted.");
massStorage = ms;
evt.Set();
}
}
Reading files from an SD card
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.IO;
using System.IO;
using GHI.IO;
using GHI.IO.Storage;
public class Program
{
private static AutoResetEvent evt = new AutoResetEvent(false);
public static void Main()
{
// Insert an SD card before running this code.
SDCard SD = new SDCard();

FEZ Panda III User Manual ***DRAFT ***
April 29, 2015
Where Hardware Meets Software
SD.Mount();
bool fs_ready = false;
RemovableMedia.Insert += (a, b) =>
{
fs_ready = true;
};
while (!fs_ready)
{
Thread.Sleep(50);
}
if (VolumeInfo.GetVolumes()[0].IsFormatted)
{
string rootDirectory = VolumeInfo.GetVolumes()[0].RootDirectory;
string[] files = Directory.GetFiles(rootDirectory);
Debug.Print("Files available on " + rootDirectory + ":");
for (int i = 0; i < files.Length; i++)
Debug.Print(files[i]);
}
else
{
Debug.Print("Storage is not formatted.");
}
// Unmount when done
SD.Unmount();
}
}
What’s next?
The free .NET for Beginners book is the best place to get started. This book and
others, along with many helpful tutorials and documents are located on the
support section on the GHI Electronics website
http://www.ghielectronics.com/support
Last but not least, the GHI Electronics community is a wealth of information and
support. The engineers are GHI Electronics monitor and contribute to the
community forums around the clock. The home of the most active .NET Micro
Framework community on the web http://www.ghielectronics.com/community

Mouser Electronics
Authorized Distributor
Click to View Pricing, Inventory, Delivery & Lifecycle Information:
GHI Electronics:
PNDA3-GB-474
Table of contents