1// +build sam,atsamd21,feather_m0 2 3package machine 4 5import ( 6 "device/sam" 7 "runtime/interrupt" 8) 9 10// used to reset into bootloader 11const RESET_MAGIC_VALUE = 0xf01669ef 12 13// GPIO Pins 14const ( 15 D0 = PA11 // UART0 RX 16 D1 = PA10 // UART0 TX 17 D2 = NoPin // does not seem to exist 18 D3 = PA09 19 D4 = PA08 20 D5 = PA15 // PWM available 21 D6 = PA20 // PWM available 22 D7 = NoPin // does not seem to exist 23 D8 = PA06 24 D9 = PA07 // PWM available 25 D10 = PA18 // can be used for PWM or UART1 TX 26 D11 = PA16 // can be used for PWM or UART1 RX 27 D12 = PA19 // PWM available 28 D13 = PA17 // PWM available 29) 30 31// Analog pins 32const ( 33 A0 = PA02 // ADC/AIN[0] 34 A1 = PB08 // ADC/AIN[2] 35 A2 = PB09 // ADC/AIN[3] 36 A3 = PA04 // ADC/AIN[4] 37 A4 = PA05 // ADC/AIN[5] 38 A5 = PB02 // ADC/AIN[10] 39) 40 41const ( 42 LED = D13 43) 44 45// UART0 aka USBCDC pins 46const ( 47 USBCDC_DM_PIN = PA24 48 USBCDC_DP_PIN = PA25 49) 50 51// UART1 pins 52const ( 53 UART_TX_PIN = D10 54 UART_RX_PIN = D11 55) 56 57// UART1 on the Feather M0. 58var ( 59 UART1 = UART{ 60 Buffer: NewRingBuffer(), 61 Bus: sam.SERCOM1_USART, 62 SERCOM: 1, 63 } 64) 65 66func init() { 67 UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM1, UART1.handleInterrupt) 68} 69 70// I2C pins 71const ( 72 SDA_PIN = PA22 // SDA: SERCOM3/PAD[0] 73 SCL_PIN = PA23 // SCL: SERCOM3/PAD[1] 74) 75 76// I2C on the Feather M0. 77var ( 78 I2C0 = I2C{ 79 Bus: sam.SERCOM3_I2CM, 80 SERCOM: 3, 81 } 82) 83 84// SPI pins 85const ( 86 SPI0_SCK_PIN = PB11 // SCK: SERCOM4/PAD[3] 87 SPI0_SDO_PIN = PB10 // SDO: SERCOM4/PAD[2] 88 SPI0_SDI_PIN = PA12 // SDI: SERCOM4/PAD[0] 89) 90 91// SPI on the Feather M0. 92var ( 93 SPI0 = SPI{ 94 Bus: sam.SERCOM4_SPI, 95 SERCOM: 4, 96 } 97) 98 99// I2S pins 100const ( 101 I2S_SCK_PIN = PA10 102 I2S_SD_PIN = PA08 103 I2S_WS_PIN = NoPin // TODO: figure out what this is on Feather M0. 104) 105 106// USB CDC identifiers 107const ( 108 usb_STRING_PRODUCT = "Adafruit Feather M0 Express" 109 usb_STRING_MANUFACTURER = "Adafruit" 110) 111 112var ( 113 usb_VID uint16 = 0x239A 114 usb_PID uint16 = 0x801B 115) 116