diff --git a/src/machine/board_arduino_mkrwifi1010.go b/src/machine/board_arduino_mkrwifi1010.go index e8cf76ab..3f91d728 100644 --- a/src/machine/board_arduino_mkrwifi1010.go +++ b/src/machine/board_arduino_mkrwifi1010.go @@ -101,10 +101,7 @@ var UART1 = &sercomUSART5 // I2C on the Arduino MKR WiFi 1010. var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } + I2C0 = sercomI2CM2 ) // SPI on the Arduino MKR WiFi 1010. diff --git a/src/machine/board_arduino_nano33.go b/src/machine/board_arduino_nano33.go index ae4a7cd8..34c0a35f 100644 --- a/src/machine/board_arduino_nano33.go +++ b/src/machine/board_arduino_nano33.go @@ -70,6 +70,11 @@ const ( SCL_PIN Pin = A5 // SCL: SERCOM4/PAD[1] ) +// I2C on the Arduino Nano 33. +var ( + I2C0 = sercomI2CM4 +) + // SPI pins const ( SPI0_SCK_PIN Pin = D13 // SCK: SERCOM1/PAD[1] diff --git a/src/machine/board_arduino_nano33_baremetal.go b/src/machine/board_arduino_nano33_baremetal.go index 708698e4..dde7d21d 100644 --- a/src/machine/board_arduino_nano33_baremetal.go +++ b/src/machine/board_arduino_nano33_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the Arduino Nano 33. -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM4_I2CM, - SERCOM: 4, - } -) - // SPI on the Arduino Nano 33. var ( SPI0 = SPI{ diff --git a/src/machine/board_atsame54-xpro.go b/src/machine/board_atsame54-xpro.go index 92d1d713..630070d6 100644 --- a/src/machine/board_atsame54-xpro.go +++ b/src/machine/board_atsame54-xpro.go @@ -254,28 +254,16 @@ var ( // I2C on the SAM E54 Xplained Pro var ( // Extension Header EXT1 - I2C0 = I2C{ - Bus: sam.SERCOM3_I2CM, - SERCOM: 3, - } + I2C0 = sercomI2CM3 // Extension Header EXT2 - I2C1 = I2C{ - Bus: sam.SERCOM7_I2CM, - SERCOM: 7, - } + I2C1 = sercomI2CM7 // Extension Header EXT3 - I2C2 = I2C{ - Bus: sam.SERCOM7_I2CM, - SERCOM: 7, - } + I2C2 = sercomI2CM7 // Data Gateway Interface - I2C3 = I2C{ - Bus: sam.SERCOM7_I2CM, - SERCOM: 7, - } + I2C3 = sercomI2CM7 ) // SPI on the SAM E54 Xplained Pro diff --git a/src/machine/board_circuitplay_express.go b/src/machine/board_circuitplay_express.go index e39784e0..89d2b8bb 100644 --- a/src/machine/board_circuitplay_express.go +++ b/src/machine/board_circuitplay_express.go @@ -83,6 +83,12 @@ const ( SCL1_PIN = PA01 // I2C1 internal ) +// I2C on the Circuit Playground Express. +var ( + I2C0 = sercomI2CM5 // external device + I2C1 = sercomI2CM1 // internal device +) + // SPI pins (internal flash) const ( SPI0_SCK_PIN = PA21 // SCK: SERCOM3/PAD[3] diff --git a/src/machine/board_circuitplay_express_baremetal.go b/src/machine/board_circuitplay_express_baremetal.go index cc5f2a62..9f6e56c7 100644 --- a/src/machine/board_circuitplay_express_baremetal.go +++ b/src/machine/board_circuitplay_express_baremetal.go @@ -6,20 +6,6 @@ import ( "device/sam" ) -// I2C on the Circuit Playground Express. -var ( - // external device - I2C0 = &I2C{ - Bus: sam.SERCOM5_I2CM, - SERCOM: 5, - } - // internal device - I2C1 = &I2C{ - Bus: sam.SERCOM1_I2CM, - SERCOM: 1, - } -) - // SPI on the Circuit Playground Express. var ( SPI0 = SPI{ diff --git a/src/machine/board_feather-m0.go b/src/machine/board_feather-m0.go index 91e23883..387a331e 100644 --- a/src/machine/board_feather-m0.go +++ b/src/machine/board_feather-m0.go @@ -64,10 +64,7 @@ const ( // I2C on the Feather M0. var ( - I2C0 = &I2C{ - Bus: sam.SERCOM3_I2CM, - SERCOM: 3, - } + I2C0 = sercomI2CM3 ) // SPI pins diff --git a/src/machine/board_feather-m4-can.go b/src/machine/board_feather-m4-can.go index df2327d5..d77ce0bd 100644 --- a/src/machine/board_feather-m4-can.go +++ b/src/machine/board_feather-m4-can.go @@ -116,10 +116,7 @@ func init() { // I2C on the Feather M4 CAN. var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } + I2C0 = sercomI2CM2 ) // SPI on the Feather M4 CAN. diff --git a/src/machine/board_feather-m4.go b/src/machine/board_feather-m4.go index b8a3854d..06edc263 100644 --- a/src/machine/board_feather-m4.go +++ b/src/machine/board_feather-m4.go @@ -69,6 +69,11 @@ const ( SCL_PIN = D21 // SCL: SERCOM2/PAD[1] ) +// I2C on the Feather M4. +var ( + I2C0 = sercomI2CM2 +) + // SPI pins const ( SPI0_SCK_PIN = D25 // SCK: SERCOM1/PAD[1] diff --git a/src/machine/board_feather-m4_baremetal.go b/src/machine/board_feather-m4_baremetal.go index 005de851..c1bcabc1 100644 --- a/src/machine/board_feather-m4_baremetal.go +++ b/src/machine/board_feather-m4_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the Feather M4. -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } -) - // SPI on the Feather M4. var ( SPI0 = SPI{ diff --git a/src/machine/board_grandcentral-m4.go b/src/machine/board_grandcentral-m4.go index 9e8e56d0..7acf5f40 100644 --- a/src/machine/board_grandcentral-m4.go +++ b/src/machine/board_grandcentral-m4.go @@ -202,6 +202,12 @@ const ( SCL_PIN = I2C_SCL_PIN // (required by machine_atsamd51.go) ) +// I2C on the Grand Central M4 +var ( + I2C0 = sercomI2CM3 + I2C1 = sercomI2CM6 +) + // I2S pins const ( I2S0_SCK_PIN = D14 // (PB16) diff --git a/src/machine/board_grandcentral-m4_baremetal.go b/src/machine/board_grandcentral-m4_baremetal.go index e862b29f..4961e21c 100644 --- a/src/machine/board_grandcentral-m4_baremetal.go +++ b/src/machine/board_grandcentral-m4_baremetal.go @@ -6,18 +6,6 @@ import ( "device/sam" ) -// I2C on the Grand Central M4 -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM3_I2CM, - SERCOM: 3, - } - I2C1 = &I2C{ - Bus: sam.SERCOM6_I2CM, - SERCOM: 6, - } -) - // SPI on the Grand Central M4 var ( SPI0 = SPI{ diff --git a/src/machine/board_itsybitsy-m0.go b/src/machine/board_itsybitsy-m0.go index 828b4620..76edf46a 100644 --- a/src/machine/board_itsybitsy-m0.go +++ b/src/machine/board_itsybitsy-m0.go @@ -66,10 +66,7 @@ const ( // I2C on the ItsyBitsy M0. var ( - I2C0 = &I2C{ - Bus: sam.SERCOM3_I2CM, - SERCOM: 3, - } + I2C0 = sercomI2CM3 ) // SPI pins diff --git a/src/machine/board_itsybitsy-m4.go b/src/machine/board_itsybitsy-m4.go index e3ad2164..44184a3c 100644 --- a/src/machine/board_itsybitsy-m4.go +++ b/src/machine/board_itsybitsy-m4.go @@ -67,6 +67,11 @@ const ( SCL_PIN = PA13 // SCL: SERCOM2/PAD[1] ) +// I2C on the ItsyBitsy M4. +var ( + I2C0 = sercomI2CM2 +) + // SPI pins const ( SPI0_SCK_PIN = PA01 // SCK: SERCOM1/PAD[1] diff --git a/src/machine/board_itsybitsy-m4_baremetal.go b/src/machine/board_itsybitsy-m4_baremetal.go index 0e779a2a..d5eb0c93 100644 --- a/src/machine/board_itsybitsy-m4_baremetal.go +++ b/src/machine/board_itsybitsy-m4_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the ItsyBitsy M4. -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } -) - // SPI on the ItsyBitsy M4. var ( SPI0 = SPI{ diff --git a/src/machine/board_matrixportal-m4.go b/src/machine/board_matrixportal-m4.go index ae1753ce..a925f604 100644 --- a/src/machine/board_matrixportal-m4.go +++ b/src/machine/board_matrixportal-m4.go @@ -131,6 +131,11 @@ const ( SCL_PIN = I2C_SCL_PIN // ) +// I2C on the MatrixPortal M4 +var ( + I2C0 = sercomI2CM5 +) + // ESP32 pins const ( NINA_ACK = D31 diff --git a/src/machine/board_matrixportal-m4_baremetal.go b/src/machine/board_matrixportal-m4_baremetal.go index 5b9a6fee..6106ed80 100644 --- a/src/machine/board_matrixportal-m4_baremetal.go +++ b/src/machine/board_matrixportal-m4_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the MatrixPortal M4 -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM5_I2CM, - SERCOM: 5, - } -) - // SPI on the MatrixPortal M4 var ( SPI0 = SPI{ diff --git a/src/machine/board_metro-m4-airlift.go b/src/machine/board_metro-m4-airlift.go index 6525286d..70889c5b 100644 --- a/src/machine/board_metro-m4-airlift.go +++ b/src/machine/board_metro-m4-airlift.go @@ -81,6 +81,11 @@ const ( SCL_PIN = PB03 // SCL: SERCOM5/PAD[1] ) +// I2C on the Metro M4. +var ( + I2C0 = sercomI2CM5 +) + // SPI pins const ( SPI0_SCK_PIN = PA13 // SCK: SERCOM2/PAD[1] diff --git a/src/machine/board_metro-m4-airlift_baremetal.go b/src/machine/board_metro-m4-airlift_baremetal.go index 2dd84f81..4025d222 100644 --- a/src/machine/board_metro-m4-airlift_baremetal.go +++ b/src/machine/board_metro-m4-airlift_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the Metro M4. -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM5_I2CM, - SERCOM: 5, - } -) - // SPI on the Metro M4. var ( SPI0 = SPI{ diff --git a/src/machine/board_p1am-100.go b/src/machine/board_p1am-100.go index caeaba69..e21fc8f2 100644 --- a/src/machine/board_p1am-100.go +++ b/src/machine/board_p1am-100.go @@ -88,6 +88,11 @@ const ( 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] diff --git a/src/machine/board_p1am-100_baremetal.go b/src/machine/board_p1am-100_baremetal.go index 067fe07e..83fa8d0f 100644 --- a/src/machine/board_p1am-100_baremetal.go +++ b/src/machine/board_p1am-100_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the P1AM-100. -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM0_I2CM, - SERCOM: 0, - } -) - // SPI on the P1AM-100 is used for Base Controller. var ( SPI0 = SPI{ diff --git a/src/machine/board_pybadge.go b/src/machine/board_pybadge.go index a4cd61c7..eda709bc 100644 --- a/src/machine/board_pybadge.go +++ b/src/machine/board_pybadge.go @@ -97,6 +97,9 @@ const ( SCL_PIN = PA13 // SCL: SERCOM2/PAD[1] ) +// I2C on the ItsyBitsy M4. +var I2C0 = sercomI2CM2 + // SPI pins const ( SPI0_SCK_PIN = PA17 // SCK: SERCOM1/PAD[1] diff --git a/src/machine/board_pybadge_baremetal.go b/src/machine/board_pybadge_baremetal.go index 94fa7da2..9dbed424 100644 --- a/src/machine/board_pybadge_baremetal.go +++ b/src/machine/board_pybadge_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the ItsyBitsy M4. -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } -) - // SPI on the PyBadge. var ( SPI0 = SPI{ diff --git a/src/machine/board_pygamer.go b/src/machine/board_pygamer.go index f537f852..6ba3e50b 100644 --- a/src/machine/board_pygamer.go +++ b/src/machine/board_pygamer.go @@ -100,10 +100,7 @@ const ( // I2C on the PyGamer. var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } + I2C0 = sercomI2CM2 ) // SPI pins diff --git a/src/machine/board_pyportal.go b/src/machine/board_pyportal.go index 28badad2..57833453 100644 --- a/src/machine/board_pyportal.go +++ b/src/machine/board_pyportal.go @@ -119,6 +119,11 @@ const ( SCL_PIN = PB03 // SCL: SERCOM2/PAD[1] ) +// I2C on the PyPortal. +var ( + I2C0 = sercomI2CM5 +) + // SPI pins const ( SPI0_SCK_PIN = PA13 // SCK: SERCOM1/PAD[1] diff --git a/src/machine/board_pyportal_baremetal.go b/src/machine/board_pyportal_baremetal.go index 9f7a77e0..105908af 100644 --- a/src/machine/board_pyportal_baremetal.go +++ b/src/machine/board_pyportal_baremetal.go @@ -6,14 +6,6 @@ import ( "device/sam" ) -// I2C on the PyPortal. -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM5_I2CM, - SERCOM: 5, - } -) - // SPI on the PyPortal. var ( SPI0 = SPI{ diff --git a/src/machine/board_qtpy.go b/src/machine/board_qtpy.go index 64389331..50c040e5 100644 --- a/src/machine/board_qtpy.go +++ b/src/machine/board_qtpy.go @@ -84,10 +84,7 @@ const ( // I2C on the QT Py M0. var ( - I2C0 = &I2C{ - Bus: sam.SERCOM1_I2CM, - SERCOM: 1, - } + I2C0 = sercomI2CM1 ) // I2S pins diff --git a/src/machine/board_trinket.go b/src/machine/board_trinket.go index 8df249e5..5e73b915 100644 --- a/src/machine/board_trinket.go +++ b/src/machine/board_trinket.go @@ -70,10 +70,7 @@ const ( // I2C on the Trinket M0. var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } + I2C0 = sercomI2CM2 ) // I2S pins diff --git a/src/machine/board_wioterminal.go b/src/machine/board_wioterminal.go index 55631d74..4637300a 100644 --- a/src/machine/board_wioterminal.go +++ b/src/machine/board_wioterminal.go @@ -362,6 +362,12 @@ const ( SCL_PIN = SCL0_PIN ) +// I2C on the Wio Terminal +var ( + I2C0 = sercomI2CM4 + I2C1 = sercomI2CM4 +) + // SPI pins const ( SPI0_SCK_PIN = SCK // SCK: SERCOM5/PAD[1] diff --git a/src/machine/board_wioterminal_baremetal.go b/src/machine/board_wioterminal_baremetal.go index da333cd5..4d4748f2 100644 --- a/src/machine/board_wioterminal_baremetal.go +++ b/src/machine/board_wioterminal_baremetal.go @@ -6,19 +6,6 @@ import ( "device/sam" ) -// I2C on the Wio Terminal -var ( - I2C0 = &I2C{ - Bus: sam.SERCOM4_I2CM, - SERCOM: 4, - } - - I2C1 = &I2C{ - Bus: sam.SERCOM4_I2CM, - SERCOM: 4, - } -) - // SPI on the Wio Terminal var ( SPI0 = SPI{ diff --git a/src/machine/board_xiao.go b/src/machine/board_xiao.go index 5cf87b7d..0b04757e 100644 --- a/src/machine/board_xiao.go +++ b/src/machine/board_xiao.go @@ -70,10 +70,7 @@ const ( // I2C on the Xiao var ( - I2C0 = &I2C{ - Bus: sam.SERCOM2_I2CM, - SERCOM: 2, - } + I2C0 = sercomI2CM2 ) // SPI pins diff --git a/src/machine/machine_atsamd21e18.go b/src/machine/machine_atsamd21e18.go index 0d62e883..cdd73378 100644 --- a/src/machine/machine_atsamd21e18.go +++ b/src/machine/machine_atsamd21e18.go @@ -17,6 +17,11 @@ var ( sercomUSART1 = UART{Buffer: NewRingBuffer(), Bus: sam.SERCOM1_USART, SERCOM: 1} sercomUSART2 = UART{Buffer: NewRingBuffer(), Bus: sam.SERCOM2_USART, SERCOM: 2} sercomUSART3 = UART{Buffer: NewRingBuffer(), Bus: sam.SERCOM3_USART, SERCOM: 3} + + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} ) func init() { diff --git a/src/machine/machine_atsamd21g18.go b/src/machine/machine_atsamd21g18.go index b836b0eb..e130aaeb 100644 --- a/src/machine/machine_atsamd21g18.go +++ b/src/machine/machine_atsamd21g18.go @@ -19,6 +19,13 @@ var ( sercomUSART3 = UART{Buffer: NewRingBuffer(), Bus: sam.SERCOM3_USART, SERCOM: 3} sercomUSART4 = UART{Buffer: NewRingBuffer(), Bus: sam.SERCOM4_USART, SERCOM: 4} sercomUSART5 = UART{Buffer: NewRingBuffer(), Bus: sam.SERCOM5_USART, SERCOM: 5} + + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} ) func init() { diff --git a/src/machine/machine_atsamd51g19.go b/src/machine/machine_atsamd51g19.go index 0c916e38..d328b066 100644 --- a/src/machine/machine_atsamd51g19.go +++ b/src/machine/machine_atsamd51g19.go @@ -11,6 +11,15 @@ import "device/sam" const HSRAM_SIZE = 0x00030000 +var ( + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} +) + // This chip has three TCC peripherals, which have PWM as one feature. var ( TCC0 = (*TCC)(sam.TCC0) diff --git a/src/machine/machine_atsamd51j19.go b/src/machine/machine_atsamd51j19.go index f16374dc..e1640c76 100644 --- a/src/machine/machine_atsamd51j19.go +++ b/src/machine/machine_atsamd51j19.go @@ -11,6 +11,15 @@ import "device/sam" const HSRAM_SIZE = 0x00030000 +var ( + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} +) + // This chip has five TCC peripherals, which have PWM as one feature. var ( TCC0 = (*TCC)(sam.TCC0) diff --git a/src/machine/machine_atsamd51j20.go b/src/machine/machine_atsamd51j20.go index 1a3b8e61..e26e45fc 100644 --- a/src/machine/machine_atsamd51j20.go +++ b/src/machine/machine_atsamd51j20.go @@ -11,6 +11,15 @@ import "device/sam" const HSRAM_SIZE = 0x00040000 +var ( + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} +) + // This chip has five TCC peripherals, which have PWM as one feature. var ( TCC0 = (*TCC)(sam.TCC0) diff --git a/src/machine/machine_atsamd51p19.go b/src/machine/machine_atsamd51p19.go index 93861b50..49c7b27f 100644 --- a/src/machine/machine_atsamd51p19.go +++ b/src/machine/machine_atsamd51p19.go @@ -11,6 +11,17 @@ import "device/sam" const HSRAM_SIZE = 0x00030000 +var ( + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} + sercomI2CM6 = &I2C{Bus: sam.SERCOM6_I2CM, SERCOM: 6} + sercomI2CM7 = &I2C{Bus: sam.SERCOM7_I2CM, SERCOM: 7} +) + // This chip has five TCC peripherals, which have PWM as one feature. var ( TCC0 = (*TCC)(sam.TCC0) diff --git a/src/machine/machine_atsamd51p20.go b/src/machine/machine_atsamd51p20.go index 0d3776e8..733cc0c0 100644 --- a/src/machine/machine_atsamd51p20.go +++ b/src/machine/machine_atsamd51p20.go @@ -11,6 +11,17 @@ import "device/sam" const HSRAM_SIZE = 0x00040000 +var ( + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} + sercomI2CM6 = &I2C{Bus: sam.SERCOM6_I2CM, SERCOM: 6} + sercomI2CM7 = &I2C{Bus: sam.SERCOM7_I2CM, SERCOM: 7} +) + // This chip has five TCC peripherals, which have PWM as one feature. var ( TCC0 = (*TCC)(sam.TCC0) diff --git a/src/machine/machine_atsame51j19.go b/src/machine/machine_atsame51j19.go index 4a2021bd..cc282f1b 100644 --- a/src/machine/machine_atsame51j19.go +++ b/src/machine/machine_atsame51j19.go @@ -11,6 +11,15 @@ import "device/sam" const HSRAM_SIZE = 0x00030000 +var ( + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} +) + // This chip has five TCC peripherals, which have PWM as one feature. var ( TCC0 = (*TCC)(sam.TCC0) diff --git a/src/machine/machine_atsame54p20.go b/src/machine/machine_atsame54p20.go index 4c49385d..6401a115 100644 --- a/src/machine/machine_atsame54p20.go +++ b/src/machine/machine_atsame54p20.go @@ -11,6 +11,17 @@ import "device/sam" const HSRAM_SIZE = 0x00040000 +var ( + sercomI2CM0 = &I2C{Bus: sam.SERCOM0_I2CM, SERCOM: 0} + sercomI2CM1 = &I2C{Bus: sam.SERCOM1_I2CM, SERCOM: 1} + sercomI2CM2 = &I2C{Bus: sam.SERCOM2_I2CM, SERCOM: 2} + sercomI2CM3 = &I2C{Bus: sam.SERCOM3_I2CM, SERCOM: 3} + sercomI2CM4 = &I2C{Bus: sam.SERCOM4_I2CM, SERCOM: 4} + sercomI2CM5 = &I2C{Bus: sam.SERCOM5_I2CM, SERCOM: 5} + sercomI2CM6 = &I2C{Bus: sam.SERCOM6_I2CM, SERCOM: 6} + sercomI2CM7 = &I2C{Bus: sam.SERCOM7_I2CM, SERCOM: 7} +) + // This chip has five TCC peripherals, which have PWM as one feature. var ( TCC0 = (*TCC)(sam.TCC0) diff --git a/src/machine/machine_generic.go b/src/machine/machine_generic.go index 8e6821fa..31758eb3 100644 --- a/src/machine/machine_generic.go +++ b/src/machine/machine_generic.go @@ -5,8 +5,6 @@ package machine // Dummy machine package that calls out to external functions. var ( - SPI0 = SPI{0} - I2C0 = &I2C{0} UART0 = &UART{0} USB = &UART{100} ) @@ -175,4 +173,13 @@ var ( sercomUSART3 = UART{3} sercomUSART4 = UART{4} sercomUSART5 = UART{5} + + sercomI2CM0 = &I2C{0} + sercomI2CM1 = &I2C{1} + sercomI2CM2 = &I2C{2} + sercomI2CM3 = &I2C{3} + sercomI2CM4 = &I2C{4} + sercomI2CM5 = &I2C{5} + sercomI2CM6 = &I2C{6} + sercomI2CM7 = &I2C{7} ) diff --git a/src/machine/machine_generic_peripherals.go b/src/machine/machine_generic_peripherals.go new file mode 100644 index 00000000..03146e8b --- /dev/null +++ b/src/machine/machine_generic_peripherals.go @@ -0,0 +1,11 @@ +// +build !baremetal,!arduino_mkr1000,!arduino_mkrwifi1010,!arduino_nano33,!arduino_zero,!circuitplay_express,!feather_m0,!feather_m4,!grandcentral_m4,!itsybitsy_m0,!itsybitsy_m4,!matrixportal_m4,!metro_m4_airlift,!p1am_100,!pybadge,!pygamer,!pyportal,!qtpy,!trinket_m0,!wioterminal,!xiao + +package machine + +// These peripherals are defined separately so that they can be excluded on +// boards that define their peripherals in the board file (e.g. board_qtpy.go). + +var ( + SPI0 = SPI{0} + I2C0 = &I2C{0} +)