aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/machine/board_p1am-100.go
blob: f2a7d13f95384689178f46c1125b12b209c23c83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
//go:build p1am_100

// This contains the pin mappings for the ProductivityOpen P1AM-100 board.
//
// For more information, see: https://facts-engineering.github.io/
package machine

// used to reset into bootloader
const resetMagicValue = 0x07738135

// Note: On the P1AM-100, pins D8, D9, D10, A3, and A4 are used for
// communication with the base controller.

// GPIO Pins
const (
	D0 Pin = PA22 // PWM available
	D1 Pin = PA23 // PWM available
	D2 Pin = PA10 // PWM available
	D3 Pin = PA11 // PWM available
	D4 Pin = PB10 // PWM available
	D5 Pin = PB11 // PWM available
	D6 Pin = PA20 // PWM available
	D7 Pin = PA21 // PWM available

	D8  Pin = PA16 // PWM available
	D9  Pin = PA17
	D10 Pin = PA19 // PWM available
	D11 Pin = PA08
	D12 Pin = PA09
	D13 Pin = PB23
	D14 Pin = PB22

	// Remaining pins are shared with analog pins
	D15 Pin = PA02

	D16 Pin = PB02
	D17 Pin = PB03
	D18 Pin = PA04 // PWM available
	D19 Pin = PA05 // PWM available
	D20 Pin = PA06
	D21 Pin = PA07
)

// Analog pins
const (
	A0 Pin = PA02 // ADC/AIN[0]
	A1 Pin = PB02 // ADC/AIN[10]
	A2 Pin = PB03 // ADC/AIN[11]
	A3 Pin = PA04 // ADC/AIN[4]
	A4 Pin = PA05 // ADC/AIN[5]
	A5 Pin = PA06 // ADC/AIN[6]
	A6 Pin = PA07 // ADC/AIN[7]
)

const (
	SWITCH      Pin = PA28
	LED         Pin = PB08
	ADC_BATTERY Pin = PB09 // ADC/AIN[3]
)

// P1AM Base Controller
const (
	BASE_SLAVE_SELECT_PIN Pin = A3
	BASE_SLAVE_ACK_PIN    Pin = A4
	BASE_ENABLE_PIN       Pin = PB09
)

// USBCDC pins
const (
	USBCDC_DM_PIN          Pin = PA24
	USBCDC_DP_PIN          Pin = PA25
	USBCDC_HOST_ENABLE_PIN Pin = PA18
)

// UART1 pins
const (
	UART_RX_PIN Pin = PB23 // RX: SERCOM5/PAD[3]
	UART_TX_PIN Pin = PB22 // TX: SERCOM5/PAD[2]
)

// UART1 on the P1AM-100 connects to the normal TX/RX pins.
var UART1 = &sercomUSART5

// I2C pins
const (
	SDA_PIN Pin = PA08 // SDA:  SERCOM0/PAD[0]
	SCL_PIN Pin = PA09 // SCL:  SERCOM0/PAD[1]
)

// I2C on the P1AM-100.
var (
	I2C0 = sercomI2CM0
)

// SPI pins
const (
	SPI0_SCK_PIN Pin = D9  // SCK: SERCOM1/PAD[1]
	SPI0_SDO_PIN Pin = D8  // SDO: SERCOM1/PAD[0]
	SPI0_SDI_PIN Pin = D10 // SDI: SERCOM1/PAD[3]
)

// SD card pins
const (
	SDCARD_SDI_PIN Pin = PA15 // SDI: SERCOM2/PAD[3]
	SDCARD_SDO_PIN Pin = PA12 // SDO: SERCOM2/PAD[0]
	SDCARD_SCK_PIN Pin = PA13 // SCK: SERCOM2/PAD[1]
	SDCARD_SS_PIN  Pin = PA14 // SS: as GPIO
	SDCARD_CD_PIN  Pin = PA27
)

// SPI on the P1AM-100 is used for Base Controller.
var (
	SPI0                = sercomSPIM1
	BASE_CONTROLLER_SPI = SPI0
)

// SPI1 is connected to the SD card slot on the P1AM-100
var (
	SPI1       = sercomSPIM2
	SDCARD_SPI = SPI1
)

// I2S pins
const (
	I2S_SCK_PIN Pin = D2
	I2S_SDO_PIN Pin = A6
	I2S_SDI_PIN     = NoPin
	I2S_WS_PIN      = D3
)

// USB CDC identifiers
const (
	usb_STRING_PRODUCT      = "P1AM-100"
	usb_STRING_MANUFACTURER = "Facts Engineering"
)

var (
	usb_VID uint16 = 0x1354
	usb_PID uint16 = 0x4000
)