Skip to content

Commit 75f1349

Browse files
quentinmitaykevl
authored andcommitted
Add support for the P1AM-100 (similar to Arduino MKR)
1 parent 533d2c9 commit 75f1349

File tree

3 files changed

+173
-0
lines changed

3 files changed

+173
-0
lines changed

src/machine/board_p1am-100.go

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
// +build p1am_100
2+
3+
// This contains the pin mappings for the ProductivityOpen P1AM-100 board.
4+
//
5+
// For more information, see: https://facts-engineering.github.io/
6+
//
7+
package machine
8+
9+
// used to reset into bootloader
10+
const RESET_MAGIC_VALUE = 0x07738135
11+
12+
// Note: On the P1AM-100, pins D8, D9, D10, A3, and A4 are used for
13+
// communication with the base controller.
14+
15+
// GPIO Pins
16+
const (
17+
D0 Pin = PA22 // PWM available
18+
D1 Pin = PA23 // PWM available
19+
D2 Pin = PA10 // PWM available
20+
D3 Pin = PA11 // PWM available
21+
D4 Pin = PB10 // PWM available
22+
D5 Pin = PB11 // PWM available
23+
D6 Pin = PA20 // PWM available
24+
D7 Pin = PA21 // PWM available
25+
26+
D8 Pin = PA16 // PWM available
27+
D9 Pin = PA17
28+
D10 Pin = PA19 // PWM available
29+
D11 Pin = PA08
30+
D12 Pin = PA09
31+
D13 Pin = PB23
32+
D14 Pin = PB22
33+
34+
// Remaining pins are shared with analog pins
35+
D15 Pin = PA02
36+
37+
D16 Pin = PB02
38+
D17 Pin = PB03
39+
D18 Pin = PA04 // PWM available
40+
D19 Pin = PA05 // PWM available
41+
D20 Pin = PA06
42+
D21 Pin = PA07
43+
)
44+
45+
// Analog pins
46+
const (
47+
A0 Pin = PA02 // ADC/AIN[0]
48+
A1 Pin = PB02 // ADC/AIN[10]
49+
A2 Pin = PB03 // ADC/AIN[11]
50+
A3 Pin = PA04 // ADC/AIN[4]
51+
A4 Pin = PA05 // ADC/AIN[5]
52+
A5 Pin = PA06 // ADC/AIN[6]
53+
A6 Pin = PA07 // ADC/AIN[7]
54+
)
55+
56+
const (
57+
SWITCH Pin = PA28
58+
LED Pin = PB08
59+
ADC_BATTERY Pin = PB09 // ADC/AIN[3]
60+
)
61+
62+
// P1AM Base Controller
63+
const (
64+
BASE_SLAVE_SELECT_PIN Pin = A3
65+
BASE_SLAVE_ACK_PIN Pin = A4
66+
BASE_ENABLE_PIN Pin = PB09
67+
)
68+
69+
// UART0 aka USBCDC pins
70+
const (
71+
USBCDC_DM_PIN Pin = PA24
72+
USBCDC_DP_PIN Pin = PA25
73+
USBCDC_HOST_ENABLE_PIN Pin = PA18
74+
)
75+
76+
// UART1 pins
77+
const (
78+
UART_RX_PIN Pin = PB23 // RX: SERCOM5/PAD[3]
79+
UART_TX_PIN Pin = PB22 // TX: SERCOM5/PAD[2]
80+
)
81+
82+
// I2C pins
83+
const (
84+
SDA_PIN Pin = PA08 // SDA: SERCOM0/PAD[0]
85+
SCL_PIN Pin = PA09 // SCL: SERCOM0/PAD[1]
86+
)
87+
88+
// SPI pins
89+
const (
90+
SPI0_SCK_PIN Pin = D9 // SCK: SERCOM1/PAD[1]
91+
SPI0_MOSI_PIN Pin = D8 // MOSI: SERCOM1/PAD[0]
92+
SPI0_MISO_PIN Pin = D10 // MISO: SERCOM1/PAD[3]
93+
)
94+
95+
// SD card pins
96+
const (
97+
SDCARD_MISO_PIN Pin = PA15 // MISO: SERCOM2/PAD[3]
98+
SDCARD_MOSI_PIN Pin = PA12 // MOSI: SERCOM2/PAD[0]
99+
SDCARD_SCK_PIN Pin = PA13 // SCK: SERCOM2/PAD[1]
100+
SDCARD_SS_PIN Pin = PA14 // SS: as GPIO
101+
SDCARD_CD_PIN Pin = PA27
102+
)
103+
104+
// I2S pins
105+
const (
106+
I2S_SCK_PIN Pin = D2
107+
I2S_SD_PIN Pin = A6
108+
I2S_WS_PIN = D3
109+
)
110+
111+
// USB CDC identifiers
112+
const (
113+
usb_STRING_PRODUCT = "P1AM-100"
114+
usb_STRING_MANUFACTURER = "Facts Engineering"
115+
)
116+
117+
var (
118+
usb_VID uint16 = 0x1354
119+
usb_PID uint16 = 0x4000
120+
)
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// +build sam,atsamd21,p1am_100
2+
3+
package machine
4+
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
9+
10+
// UART1 on the P1AM-100 connects to the normal TX/RX pins.
11+
var (
12+
UART1 = UART{
13+
Buffer: NewRingBuffer(),
14+
Bus: sam.SERCOM3_USART,
15+
SERCOM: 5,
16+
}
17+
)
18+
19+
func init() {
20+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM5, UART1.handleInterrupt)
21+
}
22+
23+
// I2C on the P1AM-100.
24+
var (
25+
I2C0 = I2C{
26+
Bus: sam.SERCOM0_I2CM,
27+
SERCOM: 0,
28+
}
29+
)
30+
31+
// SPI on the P1AM-100 is used for Base Controller.
32+
var (
33+
SPI0 = SPI{
34+
Bus: sam.SERCOM1_SPI,
35+
SERCOM: 1,
36+
}
37+
BASE_CONTROLLER_SPI = SPI0
38+
)
39+
40+
// SPI1 is connected to the SD card slot on the P1AM-100
41+
var (
42+
SPI1 = SPI{
43+
Bus: sam.SERCOM2_SPI,
44+
SERCOM: 2,
45+
}
46+
SDCARD_SPI = SPI1
47+
)

targets/p1am-100.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"inherits": ["atsamd21g18a"],
3+
"build-tags": ["sam", "atsamd21g18a", "p1am_100"],
4+
"flash-command": "bossac -d -i -e -w -v -R --port={port} --offset=0x2000 {bin}",
5+
"flash-1200-bps-reset": "true"
6+
}

0 commit comments

Comments
 (0)