github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/src/machine/board_grandcentral-m4.go (about) 1 //go:build grandcentral_m4 2 3 package machine 4 5 // Digital pins 6 const ( 7 // = Pin Alt. Function SERCOM PWM Timer Interrupt 8 // ------ -------------------- -------- ----------- ----------- 9 D0 = PB25 // UART1 RX 0[1] EXTI9 10 D1 = PB24 // UART1 TX 0[0] EXTI8 11 D2 = PC18 // TCC0[2] EXTI2 12 D3 = PC19 // TCC0[3] EXTI3 13 D4 = PC20 // TCC0[4] EXTI4 14 D5 = PC21 // TCC0[5] EXTI5 15 D6 = PD20 // TCC1[0] EXTI10 16 D7 = PD21 // TCC1[1] EXTI11 17 D8 = PB18 // TCC1[0] EXTI2 18 D9 = PB02 // TC6[0] EXTI3 19 D10 = PB22 // TC7[0] EXTI6 20 D11 = PB23 // EXTI7 21 D12 = PB00 // TC7[0] EXTI0 22 D13 = PB01 // On-board LED TC7[1] EXTI1 23 D14 = PB16 // UART4 TX, I2S0 SCK 5[0] TC6[0] EXTI0 24 D15 = PB17 // UART4 RX, I2S0 MCK 5[1] EXTI1 25 D16 = PC22 // UART3 TX 1[0] EXTI6 26 D17 = PC23 // UART3 RX 1[1] EXTI6 27 D18 = PB12 // UART2 TX 4[0] TCC3[0] EXTI12 28 D19 = PB13 // UART2 RX 4[1] TCC3[1] EXTI13 29 D20 = PB20 // I2C0 SDA 3[0] EXTI4 30 D21 = PB21 // I2C0 SCL 3[1] EXTI5 31 D22 = PD12 // EXTI7 32 D23 = PA15 // TCC2[1] EXTI15 33 D24 = PC17 // I2C1 SCL 6[1] TCC0[1] EXTI1 34 D25 = PC16 // I2C1 SDA 6[0] TCC0[0] EXTI0 35 D26 = PA12 // PCC DEN1 TC2[0] EXTI12 36 D27 = PA13 // PCC DEN2 TC2[1] EXTI13 37 D28 = PA14 // PCC CLK TCC2[0] EXTI14 38 D29 = PB19 // PCC XCLK EXTI3 39 D30 = PA23 // PCC D7 TC4[1] EXTI7 40 D31 = PA22 // PCC D6, I2S0 SDI TC4[0] EXTI6 41 D32 = PA21 // PCC D5, I2S0 SDO EXTI5 42 D33 = PA20 // PCC D4, I2S0 FS EXTI4 43 D34 = PA19 // PCC D3 TC3[1] EXTI3 44 D35 = PA18 // PCC D2 TC3[0] EXTI2 45 D36 = PA17 // PCC D1 EXTI1 46 D37 = PA16 // PCC D0 EXTI0 47 D38 = PB15 // PCC D9 TCC4[1] EXTI15 48 D39 = PB14 // PCC D8 TCC4[0] EXTI14 49 D40 = PC13 // PCC D11 EXTI13 50 D41 = PC12 // PCC D10 EXTI12 51 D42 = PC15 // PCC D13 EXTI15 52 D43 = PC14 // PCC D12 EXTI14 53 D44 = PC11 // EXTI11 54 D45 = PC10 // EXTI10 55 D46 = PC06 // EXTI6 56 D47 = PC07 // EXTI5 57 D48 = PC04 // EXTI4 58 D49 = PC05 // EXTI5 59 D50 = PD11 // SPI0 SDI 7[3] EXTI11 60 D51 = PD08 // SPI0 SDO 7[0] EXTI8 61 D52 = PD09 // SPI0 SCK 7[1] EXTI9 62 D53 = PD10 // SPI0 CS EXTI10 63 D54 = PB05 // ADC1 (A8) EXTI5 64 D55 = PB06 // ADC1 (A9) EXTI6 65 D56 = PB07 // ADC1 (A10) EXTI7 66 D57 = PB08 // ADC1 (A11) EXTI8 67 D58 = PB09 // ADC1 (A12) EXTI9 68 D59 = PA04 // ADC0 (A13) TC0[0] EXTI4 69 D60 = PA06 // ADC0 (A14) TC1[0] EXTI6 70 D61 = PA07 // ADC0 (A15) TC1[1] EXTI7 71 D62 = PB20 // I2C0 SDA 3[0] TCC1[2] EXTI4 72 D63 = PB21 // I2C0 SCL 3[1] TCC1[3] EXTI5 73 D64 = PD11 // SPI0 SDI 7[3] EXTI6 74 D65 = PD08 // SPI0 SDO 7[0] EXTI3 75 D66 = PD09 // SPI0 SCK 7[1] EXTI4 76 D67 = PA02 // ADC0 (A0), DAC0 EXTI2 77 D68 = PA05 // ADC0 (A1), DAC1 EXTI5 78 D69 = PB03 // ADC0 (A2) TC6[1] EXTI3 79 D70 = PC00 // ADC1 (A3) EXTI0 80 D71 = PC01 // ADC1 (A4) EXTI1 81 D72 = PC02 // ADC1 (A5) EXTI2 82 D73 = PC03 // ADC1 (A6) EXTI3 83 D74 = PB04 // ADC1 (A7) EXTI4 84 D75 = PC31 // UART RX LED 85 D76 = PC30 // UART TX LED 86 D77 = PA27 // USB HOST EN 87 D78 = PA24 // USB DM EXTI8 88 D79 = PA25 // USB DP EXTI9 89 D80 = PB29 // SD/SPI1 SDI 2[3] 90 D81 = PB27 // SD/SPI1 SCK 2[1] 91 D82 = PB26 // SD/SPI1 SDO 2[0] 92 D83 = PB28 // SD/SPI1 CS 93 D84 = PA03 // AREF EXTI3 94 D85 = PA02 // DAC0 EXTI2 95 D86 = PA05 // DAC1 EXTI5 96 D87 = PB01 // On-board LED (D13) TC7[1] EXTI1 97 D88 = PC24 // On-board NeoPixel 98 D89 = PB10 // QSPI SCK EXTI10 99 D90 = PB11 // QSPI CS EXTI11 100 D91 = PA08 // QSPI ID0 EXTI(NMI) 101 D92 = PA09 // QSPI ID1 EXTI9 102 D93 = PA10 // QSPI ID2 EXTI10 103 D94 = PA11 // QSPI ID3 EXTI11 104 D95 = PB31 // SD Detect EXTI15 105 D96 = PB30 // SWO EXTI14 106 ) 107 108 // Analog pins 109 const ( 110 A0 = D67 // (PA02) ADC0 ch. 0, 111 A1 = D68 // (PA05) ADC0 ch. 5, 112 A2 = D69 // (PB03) ADC0 ch. 15 113 A3 = D70 // (PC00) ADC1 ch. 10 114 A4 = D71 // (PC01) ADC1 ch. 11 115 A5 = D72 // (PC02) ADC1 ch. 4 116 A6 = D73 // (PC03) ADC1 ch. 5 117 A7 = D74 // (PB04) ADC1 ch. 6 118 A8 = D54 // (PB05) ADC1 ch. 7 119 A9 = D55 // (PB06) ADC1 ch. 8 120 A10 = D56 // (PB07) ADC1 ch. 9 121 A11 = D57 // (PB08) ADC1 ch. 0 122 A12 = D58 // (PB09) ADC1 ch. 1 123 A13 = D59 // (PA04) ADC0 ch. 4 124 A14 = D60 // (PA06) ADC0 ch. 6 125 A15 = D61 // (PA07) ADC0 ch. 7 126 127 AREF = D84 // (PA03) 128 ) 129 130 // LED pins 131 const ( 132 LED_PIN = D13 // (PB01), also on D87 133 UART_RX_LED_PIN = D75 // (PC31) 134 UART_TX_LED_PIN = D76 // (PC30) 135 NEOPIXEL_PIN = D88 // (PC24) 136 137 // aliases used by examples and drivers 138 LED = LED_PIN 139 LED_RX = UART_RX_LED_PIN 140 LED_TX = UART_TX_LED_PIN 141 NEOPIXEL = NEOPIXEL_PIN 142 WS2812 = NEOPIXEL_PIN 143 ) 144 145 // UART pins 146 const ( 147 UART1_RX_PIN = D0 // (PB25) 148 UART1_TX_PIN = D1 // (PB24) 149 150 UART2_RX_PIN = D19 // (PB13) 151 UART2_TX_PIN = D18 // (PB12) 152 153 UART3_RX_PIN = D17 // (PC23) 154 UART3_TX_PIN = D16 // (PC22) 155 156 UART4_RX_PIN = D15 // (PB17) 157 UART4_TX_PIN = D14 // (PB16) 158 159 UART_RX_PIN = UART1_RX_PIN // default pins 160 UART_TX_PIN = UART1_TX_PIN // 161 ) 162 163 // UART on the Grand Central M4 164 var ( 165 UART1 = &sercomUSART0 166 UART2 = &sercomUSART4 167 UART3 = &sercomUSART1 168 UART4 = &sercomUSART5 169 170 DefaultUART = UART1 171 ) 172 173 // SPI pins 174 const ( 175 SPI0_SCK_PIN = D66 // (PD09), also on D52 176 SPI0_SDO_PIN = D65 // (PD08), also on D51 177 SPI0_SDI_PIN = D64 // (PD11), also on D50 178 SPI0_CS_PIN = D53 // (PD10) 179 180 SPI1_SCK_PIN = D81 // (PB27) 181 SPI1_SDO_PIN = D82 // (PB26) 182 SPI1_SDI_PIN = D80 // (PB29) 183 184 SPI_SCK_PIN = SPI0_SCK_PIN // default pins 185 SPI_SDO_PIN = SPI0_SDO_PIN // 186 SPI_SDI_PIN = SPI0_SDI_PIN // 187 SPI_CS_PIN = SPI0_CS_PIN // 188 ) 189 190 // SPI on the Grand Central M4 191 var ( 192 SPI0 = sercomSPIM7 193 SPI1 = sercomSPIM2 // SD card 194 ) 195 196 // I2C pins 197 const ( 198 I2C0_SDA_PIN = D62 // (PB20), also on D20 199 I2C0_SCL_PIN = D63 // (PB21), also on D21 200 201 I2C1_SDA_PIN = D25 // (PC16) 202 I2C1_SCL_PIN = D24 // (PC17) 203 204 I2C_SDA_PIN = I2C0_SDA_PIN // default pins 205 I2C_SCL_PIN = I2C0_SCL_PIN // 206 207 SDA_PIN = I2C_SDA_PIN // unconventional pin names 208 SCL_PIN = I2C_SCL_PIN // (required by machine_atsamd51.go) 209 ) 210 211 // I2C on the Grand Central M4 212 var ( 213 I2C0 = sercomI2CM3 214 I2C1 = sercomI2CM6 215 ) 216 217 // I2S pins 218 const ( 219 I2S0_SCK_PIN = D14 // (PB16) 220 I2S0_MCK_PIN = D15 // (PB17) 221 I2S0_FS_PIN = D33 // (PA20) 222 I2S0_SDO_PIN = D32 // (PA21) 223 I2S0_SDI_PIN = D31 // (PA22) 224 225 I2S_SCK_PIN = I2S0_SCK_PIN // default pins 226 I2S_WS_PIN = I2S0_FS_PIN // 227 I2S_SD_PIN = I2S0_SDO_PIN // 228 ) 229 230 // SD card pins 231 const ( 232 SD0_SCK_PIN = D81 // (PB27) 233 SD0_SDO_PIN = D82 // (PB26) 234 SD0_SDI_PIN = D80 // (PB29) 235 SD0_CS_PIN = D83 // (PB28) 236 SD0_DET_PIN = D95 // (PB31) 237 238 SDCARD_SCK_PIN = SD0_SCK_PIN // default pins 239 SDCARD_SDO_PIN = SD0_SDO_PIN // 240 SDCARD_SDI_PIN = SD0_SDI_PIN // 241 SDCARD_CS_PIN = SD0_CS_PIN // 242 SDCARD_DET_PIN = SD0_DET_PIN // 243 ) 244 245 // Other peripheral constants 246 const ( 247 resetMagicValue = 0xF01669EF // Used to reset into bootloader 248 ) 249 250 // USB CDC pins 251 const ( 252 USBCDC_HOSTEN_PIN = D77 // (PA27) host enable 253 USBCDC_DM_PIN = D78 // (PA24) D- 254 USBCDC_DP_PIN = D79 // (PA25) D+ 255 ) 256 257 // USB CDC identifiers 258 const ( 259 usb_STRING_PRODUCT = "Adafruit Grand Central M4" 260 usb_STRING_MANUFACTURER = "Adafruit" 261 ) 262 263 var ( 264 usb_VID uint16 = 0x239A 265 usb_PID uint16 = 0x8031 266 )