diff --git a/.travis.yml b/.travis.yml
index 4ede432f..821e2e21 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,12 +18,12 @@ script:
- go install github.com/aykevl/tinygo
- go test -v .
- make gen-device
- - tinygo build -o blinky1.nrf.elf -target=pca10040 examples/blinky1
- - tinygo build -o blinky2.nrf.elf -target=pca10040 examples/blinky2
- - tinygo build -o blinky2 examples/blinky2
- - tinygo build -o test.nrf.elf -target=pca10040 examples/test
- - tinygo build -o blinky1.nrf51.elf -target=microbit examples/echo
- - tinygo build -o test.nrf.elf -target=nrf52840-mdk examples/blinky1
- - tinygo build -o blinky1.stm32.elf -target=bluepill examples/blinky1
- - tinygo build -o blinky1.o -target=arduino examples/blinky1 # TODO: avr-as/avr-gcc doesn't work
- - tinygo build -o blinky1.o -target=digispark examples/blinky1
+ - tinygo build -o blinky1.nrf.elf -target=pca10040 examples/blinky1
+ - tinygo build -o blinky2.nrf.elf -target=pca10040 examples/blinky2
+ - tinygo build -o blinky2 examples/blinky2
+ - tinygo build -o test.nrf.elf -target=pca10040 examples/test
+ - tinygo build -o blinky1.nrf51.elf -target=microbit examples/echo
+ - tinygo build -o test.nrf.elf -target=nrf52840-mdk examples/blinky1
+ - tinygo build -o blinky1.nrf51d.elf -target=pca10031 examples/blinky1
+ - tinygo build -o blinky1.stm32.elf -target=bluepill examples/blinky1
+ - tinygo build -o blinky1.avr.o -target=arduino examples/blinky1 # TODO: avr-as/avr-gcc doesn't work
diff --git a/docs/targets.rst b/docs/targets.rst
index 741dc3ec..33963109 100644
--- a/docs/targets.rst
+++ b/docs/targets.rst
@@ -28,6 +28,10 @@ technology (LLVM) as the proprietary ARM compiler for code generation.
* `BBC micro:bit `_ (`nRF51822
`_)
+ * `Nordic PCA10031
+ `_
+ (`nRF51422
+ `_)
* `Nordic PCA10040
`_
(`nRF52832
diff --git a/src/machine/board_pca10031.go b/src/machine/board_pca10031.go
new file mode 100644
index 00000000..afd0045d
--- /dev/null
+++ b/src/machine/board_pca10031.go
@@ -0,0 +1,32 @@
+// +build nrf51,pca10031
+
+// pca10031 is a nrf51 based dongle, intended for use in wireless applications.
+//
+// https://infocenter.nordicsemi.com/pdf/nRF51_Dongle_UG_v1.0.pdf
+package machine
+
+// The pca10031 has a 32kHz crystal on board.
+const HasLowFrequencyCrystal = true
+
+// LED on the pca10031
+const (
+ LED = LED_RED
+ LED1 = LED_RED
+ LED2 = LED_GREEN
+ LED3 = LED_BLUE
+ LED_RED = 21
+ LED_GREEN = 22
+ LED_BLUE = 23
+)
+
+// UART pins
+const (
+ UART_TX_PIN = 9
+ UART_RX_PIN = 11
+)
+
+// I2C pins (disabled)
+const (
+ SDA_PIN = 0xff
+ SCL_PIN = 0xff
+)
diff --git a/targets/pca10031.json b/targets/pca10031.json
new file mode 100644
index 00000000..d0dd3d46
--- /dev/null
+++ b/targets/pca10031.json
@@ -0,0 +1,7 @@
+{
+ "inherits": ["nrf51"],
+ "build-tags": ["pca10031"],
+ "flash": "nrfjprog -f nrf51 --sectorerase --program {hex} --reset",
+ "ocd-daemon": ["openocd", "-f", "interface/cmsis-dap.cfg", "-f", "target/nrf51.cfg"],
+ "gdb-initial-cmds": ["target remote :3333", "monitor halt", "load", "monitor reset", "c"]
+}