Skip to content

Acmesystems YARM board

Support for the Acmesystems YARM board.

Overview

Yarm is a smart and cost effective solution for system integrators to build their own RF applications at 868 MHz avoiding all the hardware design costs requested to start a new custom RF project.

Yarm integrates:

  • a Microchip SAML21 low power MCU
  • a Microchip ATA8510 radio module

See Acmesystems product page for more information.

In the provided configuration, stdio is available via USB. The board could be configured to provide it on the exposed UART instead, by defining

USEMODULE=stdio_uart

Depending on the connection to your PC, you will probably also need to set PORT_LINUX to a different value (default is /dev/ttyACM0), for instance

PORT_LINUX=/dev/ttyUSB0

Hardware

yarm image

MCU

MCUATSAML21J18B
FamilyARM Cortex-M0+
VendorMicrochip
RAM32Kb
Flash256Kb
Frequencyup to 48MHz
FPUno
Timers8 (16-bit)
ADCs1x 12-bit (20 channels)
UARTsx 6 (shared with SPI and I2C)
SPIsmax 6 (see UART)
I2Csmax 6 (see UART)
Vcc1.8V - 3.6V
DatasheetDatasheet

RADIO

TransceiverATA8510
VendorMicrochip
Sensitivity-123dBm
Output power-12dBm to +14.5dBm programmable in 0.4-dB steps ]
DatasheetDatasheet

NOTE: not all MCU interfaces are available on YARM; see the pinout to know more.

Implementation Status

DeviceIDSupportedComments
MCUsaml21partlyPLL clock not implemented
Low-level driverGPIOyes
PWMyes
UARTyes
I2Cyes
SPIyes
USByes
RTTyes
RTCyes
RNGyes
Timeryes
ADCyes

Flashing the device

Both the MCU and the radio module are flashed using Atmel ICE, with the help of a small adapter. The software used is edbg, bundled with RIOT.

wiring

On Linux you might have to add a udev rule for Atmel ICE, like

bash
(
cat <<END
# Atmel-ICE JTAG/SWD in-circuit debugger
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2141", MODE="664", GROUP="plugdev"
END
) | sudo tee -a /etc/udev/rules.d/99-atmel-ice.rules
sudo service udev restart

Supported Toolchains

Recommended toolchain for SAML21 is GNU Tools for ARM Embedded Processors. On Debian Buster, the default gcc-arm-none-eabi package works well.