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  )