github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/src/machine/board_matrixportal-m4.go (about) 1 //go:build matrixportal_m4 2 3 package machine 4 5 // used to reset into bootloader 6 const resetMagicValue = 0xF01669EF 7 8 // Digital pins 9 const ( 10 // Pin // Function SERCOM PWM Interrupt 11 // ---- // ---------------- ------ --- --------- 12 D0 = PA01 // UART RX 1[1] PWM EXTI1 13 D1 = PA00 // UART TX 1[0] PWM EXTI0 14 D2 = PB22 // Button "Up" EXTI6 15 D3 = PB23 // Button "Down" EXTI7 16 D4 = PA23 // NeoPixel EXTI7 17 D5 = PB31 // I2C SDA 5[1] EXTI15 18 D6 = PB30 // I2C SCL 5[0] EXTI14 19 D7 = PB00 // HUB75 R1 EXTI0 20 D8 = PB01 // HUB75 G1 EXTI1 21 D9 = PB02 // HUB75 B1 EXTI2 22 D10 = PB03 // HUB75 R2 EXTI3 23 D11 = PB04 // HUB75 G2 EXTI4 24 D12 = PB05 // HUB75 B2 EXTI5 25 D13 = PA14 // LED PWM EXTI14 26 D14 = PB06 // HUB75 CLK EXTI6 27 D15 = PB14 // HUB75 LAT EXTI14 28 D16 = PB12 // HUB75 OE EXTI12 29 D17 = PB07 // HUB75 ADDR A EXTI7 30 D18 = PB08 // HUB75 ADDR B EXTI8 31 D19 = PB09 // HUB75 ADDR C EXTI9 32 D20 = PB15 // HUB75 ADDR D EXTI15 33 D21 = PB13 // HUB75 ADDR E EXTI13 34 D22 = PA02 // ADC (A0) EXTI2 35 D23 = PA05 // ADC (A1) EXTI5 36 D24 = PA04 // ADC (A2) PWM EXTI4 37 D25 = PA06 // ADC (A3) PWM EXTI6 38 D26 = PA07 // ADC (A4) EXTI7 39 D27 = PA12 // ESP32 UART RX 4[1] PWM EXTI12 40 D28 = PA13 // ESP32 UART TX 4[0] PWM EXTI13 41 D29 = PA20 // ESP32 GPIO0 PWM EXTI4 42 D30 = PA21 // ESP32 Reset PWM EXTI5 43 D31 = PA22 // ESP32 Busy PWM EXTI6 44 D32 = PA18 // ESP32 RTS PWM EXTI2 45 D33 = PB17 // ESP32 SPI CS PWM EXTI1 46 D34 = PA16 // ESP32 SPI SCK 3[1] PWM EXTI0 47 D35 = PA17 // ESP32 SPI SDI 3[0] PWM EXTI1 48 D36 = PA19 // ESP32 SPI SDO 1[3] PWM EXTI3 49 D37 = NoPin // USB Host enable 50 D38 = PA24 // USB DM 51 D39 = PA25 // USB DP 52 D40 = PA03 // DAC/VREFP 53 D41 = PB10 // Flash QSPI SCK 54 D42 = PB11 // Flash QSPI CS 55 D43 = PA08 // Flash QSPI I00 56 D44 = PA09 // Flash QSPI IO1 57 D45 = PA10 // Flash QSPI IO2 58 D46 = PA11 // Flash QSPI IO3 59 D47 = PA27 // LIS3DH IRQ EXTI11 60 D48 = PA05 // SPI SCK 0[1] EXTI5 61 D49 = PA04 // SPI SDO 0[0] PWM EXTI4 62 D50 = PA07 // SPI SDI 0[3] EXTI7 63 ) 64 65 // Analog pins 66 const ( 67 A0 = PA02 // ADC Channel 0 68 A1 = PA05 // ADC Channel 5 69 A2 = PA04 // ADC Channel 4 70 A3 = PA06 // ADC Channel 6 71 A4 = PA07 // ADC Channel 7 72 ) 73 74 // LED pins 75 const ( 76 LED = D13 77 NEOPIXEL = D4 78 WS2812 = D4 79 ) 80 81 // Button pins 82 const ( 83 BUTTON_UP = D2 84 BUTTON_DOWN = D3 85 ) 86 87 // UART pins 88 const ( 89 UART1_RX_PIN = D0 // SERCOM1[1] 90 UART1_TX_PIN = D1 // SERCOM1[0] 91 92 UART2_RX_PIN = D27 // SERCOM4[1] (ESP32 RX) 93 UART2_TX_PIN = D28 // SERCOM4[0] (ESP32 TX) 94 95 UART_RX_PIN = UART1_RX_PIN 96 UART_TX_PIN = UART1_TX_PIN 97 ) 98 99 // UART on the MatrixPortal M4 100 var ( 101 UART1 = &sercomUSART1 102 UART2 = &sercomUSART4 103 104 DefaultUART = UART1 105 ) 106 107 // SPI pins 108 const ( 109 SPI0_SCK_PIN = D34 // SERCOM3[1] (ESP32 SCK) 110 SPI0_SDO_PIN = D36 // SERCOM1[3] (ESP32 SDO) 111 SPI0_SDI_PIN = D35 // SERCOM3[0] (ESP32 SDI) 112 113 SPI1_SCK_PIN = D48 // SERCOM0[1] 114 SPI1_SDO_PIN = D49 // SERCOM0[0] 115 SPI1_SDI_PIN = D50 // SERCOM0[3] 116 117 SPI_SCK_PIN = SPI0_SCK_PIN 118 SPI_SDO_PIN = SPI0_SDO_PIN 119 SPI_SDI_PIN = SPI0_SDI_PIN 120 ) 121 122 // I2C pins 123 const ( 124 I2C0_SDA_PIN = D5 // SERCOM5[1] 125 I2C0_SCL_PIN = D6 // SERCOM5[0] 126 127 I2C_SDA_PIN = I2C0_SDA_PIN 128 I2C_SCL_PIN = I2C0_SCL_PIN 129 130 SDA_PIN = I2C_SDA_PIN // awkward naming required by machine_atsamd51.go 131 SCL_PIN = I2C_SCL_PIN // 132 ) 133 134 // I2C on the MatrixPortal M4 135 var ( 136 I2C0 = sercomI2CM5 137 ) 138 139 // ESP32 pins 140 const ( 141 NINA_ACK = D31 142 NINA_GPIO0 = D29 143 NINA_RESETN = D30 144 145 NINA_RX = UART2_RX_PIN 146 NINA_TX = UART2_TX_PIN 147 NINA_RTS = D32 148 149 NINA_CS = D33 150 NINA_SDO = SPI0_SDO_PIN 151 NINA_SDI = SPI0_SDI_PIN 152 NINA_SCK = SPI0_SCK_PIN 153 ) 154 155 // SPI on the MatrixPortal M4 156 var ( 157 SPI0 = sercomSPIM3 // BUG: SDO on SERCOM1! 158 NINA_SPI = SPI0 159 160 SPI1 = sercomSPIM0 161 ) 162 163 // HUB75 pins 164 const ( 165 HUB75_R1 = D7 166 HUB75_G1 = D8 167 HUB75_B1 = D9 168 HUB75_R2 = D10 169 HUB75_G2 = D11 170 HUB75_B2 = D12 171 172 HUB75_CLK = D14 173 HUB75_LAT = D15 174 HUB75_OE = D16 175 HUB75_ADDR_A = D17 176 HUB75_ADDR_B = D18 177 HUB75_ADDR_C = D19 178 HUB75_ADDR_D = D20 179 HUB75_ADDR_E = D21 180 ) 181 182 // USB CDC pins (UART0) 183 const ( 184 USBCDC_DM_PIN = D38 185 USBCDC_DP_PIN = D39 186 187 UART0_RX_PIN = USBCDC_DM_PIN 188 UART0_TX_PIN = USBCDC_DP_PIN 189 ) 190 191 // USB CDC identifiers 192 const ( 193 usb_STRING_PRODUCT = "Matrix Portal M4" 194 usb_STRING_MANUFACTURER = "Adafruit Industries" 195 ) 196 197 var ( 198 usb_VID uint16 = 0x239A 199 usb_PID uint16 = 0x80C9 200 )