The ATXMEGA-A1 development board is designed to address the issue of increasing RAM requirements for wireless communication stacks like Zigbee and IPv6 over 802.15.4 (6LoWPAN).
With wireless sensor network standards still developing, more features are being integrated into the specifications as developers start to better understand how the protocols will be used. Many developers are also expanding the sizes of networks they're creating and adding more sophisticated application services on top of the protocol stacks. All of this results in increased RAM and flash usage by the software to satisfy those requirements. However the RAM requirements are increasing faster than flash requirements. Because of this, the ATXMEGA-A1 development board incorporates 32 kB of external RAM in addition to the 8 kB of internal RAM on the MCU.
The ATXMEGA-A1 board uses Atmel's newest 8-bit microcontroller, the ATXMega128-A1. It sports the same popular AVR core and 128 kB flash, 8 kB of internal RAM, and an external memory bus to add additional RAM. However it has a huge amount of enhancements and new features, many of which are excellent for wireless sensor networks. The board also can be powered by USB, external DC input, or batteries. For battery power, it contains a boost converter that maintains a constant 3.3V output even as the battery drains. It also has an industry standard FTDI USB to serial bridge so that developers can access the MCU via USB. The FTDI chip supports all versions of Windows, Mac, and Linux.
Here are some of the new features in the ATXMega and why I think they're good for wireless sensor networks:
- Configurable Clock PLL.
The clock frequency can now be configured on the fly to change internal clocking frequency. This allows dynamic clock scaling so that software can tell the MCU to run at full speed 32 MHz during compute-intensive tasks and then switch to a lower speed for normal tasks. It can also run at 32 kHz for extremely low power operation.
- Integrated AES-128 Encryption.
AES-128 is the standard encryption for wireless sensor networks and having it integrated into the MCU removes the chance to extract the keys via SPI sniffing. For more information on this, check out Travis Goodspeed's excellent post on how to sniff AES keys via the SPI bus.
- Event System.
The hardware event system is one of the newest features of the ATXMega. Because of it, the MCU can actually take ADC samples periodically and move them to memory, all while the MCU is asleep.
- Real Time Clock.
The RTC allows accurate time keeping which enables sensor data to be precisely timestamped. This is important in a sensor network when multiple samples need to be synchronized. There are both a 16-bit and 32-bit real time counters for long sleep periods as well.
- Multiple Serial Interfaces.
There are now four I2C busses, four SPI busses, and 8 UARTs integrated on-chip. Due to the dramatic increase in serial interfaces, each universal serial connector on this board has its own dedicated I2C, SPI, and UART serial bus.
- Increased Interrupt pins.
All IO pins on the device can be used for external interrupts. There are also dedicated asynchronous interrupt pins which can trigger the MCU to wake when an interrupt occurs. Each universal serial connector on this board has both an asynchronous interrupt and standard interrupt pins.
- Enhanced GPIO functionality.
The GPIO pins can be configured with an internal pullup, pulldown, buskeeper, wired-OR, or wired-AND configuration. The port registers also now have SET, CLEAR, and TOGGLE registers so that there's no more need for the standard read-modify-write. This allows for atomic setting/clearing of individual GPIO pins. GPIO pins from different ports can also be grouped into a virtual port which can be controlled just like a normal port.
- High resolution ADC.
The analog to digital converter now has 12-bits of resolution as opposed to the previous 10 bits. This is a 4x increase in the ADC resolution.
- Integrated DAC.
The ATXMega now has an on-board, 12-bit digital to analog converter that can convert at up to 1 MSample/sec.
- Programmable, multi-level, interrupt controller.
The interrupt controller now contains three priority levels that can be used to distinguish between high, medium, and low priority interrupts. There is also a round-robin feature to prevent interrupt service starvation for low priority interrupts.
- DMA Controller.
The ATXMega has an integrated DMA controller which is rare for an 8-bit microcontroller. This means that its possible to offload tasks such as memory copying and moving data between peripherals from the MCU.
Note: Unfortunately, DMA access to the SPI master is not supported on these boards.
I've prepared some starter code that can be used immediately on these boards. Since many things are enhanced, the new register maps take a bit of time to get used to. The starter code provides working examples of how to do fundamental operations on the ATXMega. You can find out more about it and get the source code from here:
The Chibi simplified 802.15.4 wireless protocol stack has already been ported to the ATXMega. To compile the code for that MCU, just go into the makefile and set the MCU variable to the atxmega. The code can be downloaded from the Chibi Project page:
The documentation, schematics, and bill-of-materials (BOM) can be found in the user guide:
FL-ATXMEGA-A1-DEV v1.0 User Guide