all: changeover to eliminate all direct use of master/slave terminology
Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
родитель
fdaddf6917
коммит
d1c4ed664e
51 изменённых файлов: 576 добавлений и 576 удалений
|
@ -32,7 +32,7 @@ Microcontrollers have lots of peripherals (I2C, SPI, ADC, etc.) and many don't h
|
|||
|
||||
## How to use our Github repository
|
||||
|
||||
The `master` branch of this repo will always have the latest released version of TinyGo. All of the active development work for the next release will take place in the `dev` branch. TinyGo will use semantic versioning and will create a tag/release for each release.
|
||||
The `release` branch of this repo will always have the latest released version of TinyGo. All of the active development work for the next release will take place in the `dev` branch. TinyGo will use semantic versioning and will create a tag/release for each release.
|
||||
|
||||
Here is how to contribute back some code or documentation:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Avoid lengthy LLVM rebuilds on each newly pushed branch. Pull requests will
|
||||
# be built anyway.
|
||||
trigger:
|
||||
- master
|
||||
- release
|
||||
- dev
|
||||
|
||||
jobs:
|
||||
|
|
|
@ -67,14 +67,14 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = D13 // SCK: SERCOM1/PAD[1]
|
||||
SPI0_MOSI_PIN Pin = D11 // MOSI: SERCOM1/PAD[0]
|
||||
SPI0_MISO_PIN Pin = D12 // MISO: SERCOM1/PAD[3]
|
||||
SPI0_SDO_PIN Pin = D11 // SDO: SERCOM1/PAD[0]
|
||||
SPI0_SDI_PIN Pin = D12 // SDI: SERCOM1/PAD[3]
|
||||
)
|
||||
|
||||
// NINA-W102 Pins
|
||||
const (
|
||||
NINA_MOSI Pin = PA12
|
||||
NINA_MISO Pin = PA13
|
||||
NINA_SDO Pin = PA12
|
||||
NINA_SDI Pin = PA13
|
||||
NINA_CS Pin = PA14
|
||||
NINA_SCK Pin = PA15
|
||||
NINA_GPIO0 Pin = PA27
|
||||
|
|
|
@ -75,8 +75,8 @@ func init() {
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA5
|
||||
SPI0_MOSI_PIN = PA7
|
||||
SPI0_MISO_PIN = PA6
|
||||
SPI0_SDO_PIN = PA7
|
||||
SPI0_SDI_PIN = PA6
|
||||
)
|
||||
|
||||
// I2C pins
|
||||
|
|
|
@ -73,8 +73,8 @@ const (
|
|||
// SPI pins (internal flash)
|
||||
const (
|
||||
SPI0_SCK_PIN = P0_19 // SCK
|
||||
SPI0_MOSI_PIN = P0_21 // MOSI
|
||||
SPI0_MISO_PIN = P0_23 // MISO
|
||||
SPI0_SDO_PIN = P0_21 // SDO
|
||||
SPI0_SDI_PIN = P0_23 // SDI
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -78,8 +78,8 @@ const (
|
|||
// SPI pins (internal flash)
|
||||
const (
|
||||
SPI0_SCK_PIN = PA21 // SCK: SERCOM3/PAD[3]
|
||||
SPI0_MOSI_PIN = PA20 // MOSI: SERCOM3/PAD[2]
|
||||
SPI0_MISO_PIN = PA16 // MISO: SERCOM3/PAD[0]
|
||||
SPI0_SDO_PIN = PA20 // SDO: SERCOM3/PAD[2]
|
||||
SPI0_SDI_PIN = PA16 // SDI: SERCOM3/PAD[0]
|
||||
)
|
||||
|
||||
// I2S pins
|
||||
|
|
|
@ -78,7 +78,7 @@ const (
|
|||
|
||||
// 240x240 ST7789 display is connected to these pins (use RowOffset = 80)
|
||||
TFT_SCK = D29
|
||||
TFT_MOSI = D30
|
||||
TFT_SDO = D30
|
||||
TFT_CS = D31
|
||||
TFT_DC = D32
|
||||
TFT_RESET = D33
|
||||
|
@ -117,8 +117,8 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = D13 // SCK
|
||||
SPI0_MOSI_PIN = D15 // MOSI
|
||||
SPI0_MISO_PIN = D14 // MISO
|
||||
SPI0_SDO_PIN = D15 // SDO
|
||||
SPI0_SDI_PIN = D14 // SDI
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -84,8 +84,8 @@ var (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PB11 // SCK: SERCOM4/PAD[3]
|
||||
SPI0_MOSI_PIN = PB10 // MOSI: SERCOM4/PAD[2]
|
||||
SPI0_MISO_PIN = PA12 // MISO: SERCOM4/PAD[0]
|
||||
SPI0_SDO_PIN = PB10 // SDO: SERCOM4/PAD[2]
|
||||
SPI0_SDI_PIN = PA12 // SDI: SERCOM4/PAD[0]
|
||||
)
|
||||
|
||||
// SPI on the Feather M0.
|
||||
|
|
|
@ -64,8 +64,8 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = D25 // SCK: SERCOM1/PAD[1]
|
||||
SPI0_MOSI_PIN = D24 // MOSI: SERCOM1/PAD[3]
|
||||
SPI0_MISO_PIN = D23 // MISO: SERCOM1/PAD[2]
|
||||
SPI0_SDO_PIN = D24 // SDO: SERCOM1/PAD[3]
|
||||
SPI0_SDI_PIN = D23 // SDI: SERCOM1/PAD[2]
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -89,8 +89,8 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = D26 // SCK
|
||||
SPI0_MOSI_PIN = D25 // MOSI
|
||||
SPI0_MISO_PIN = D24 // MISO
|
||||
SPI0_SDO_PIN = D25 // SDO
|
||||
SPI0_SDI_PIN = D24 // SDI
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -44,12 +44,12 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = NoPin
|
||||
SPI0_MOSI_PIN = NoPin
|
||||
SPI0_MISO_PIN = NoPin
|
||||
SPI0_SDO_PIN = NoPin
|
||||
SPI0_SDI_PIN = NoPin
|
||||
|
||||
SPI1_SCK_PIN = D13
|
||||
SPI1_MOSI_PIN = D11
|
||||
SPI1_MISO_PIN = D12
|
||||
SPI1_SDO_PIN = D11
|
||||
SPI1_SDI_PIN = D12
|
||||
)
|
||||
|
||||
// I2C pins
|
||||
|
|
|
@ -84,8 +84,8 @@ var (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PB11 // SCK: SERCOM4/PAD[3]
|
||||
SPI0_MOSI_PIN = PB10 // MOSI: SERCOM4/PAD[2]
|
||||
SPI0_MISO_PIN = PA12 // MISO: SERCOM4/PAD[0]
|
||||
SPI0_SDO_PIN = PB10 // SDO: SERCOM4/PAD[2]
|
||||
SPI0_SDI_PIN = PA12 // SDI: SERCOM4/PAD[0]
|
||||
)
|
||||
|
||||
// SPI on the ItsyBitsy M0.
|
||||
|
@ -100,8 +100,8 @@ var (
|
|||
const (
|
||||
SPI1_CS_PIN = PA27
|
||||
SPI1_SCK_PIN = PB23
|
||||
SPI1_MOSI_PIN = PB22
|
||||
SPI1_MISO_PIN = PB03
|
||||
SPI1_SDO_PIN = PB22
|
||||
SPI1_SDI_PIN = PB03
|
||||
)
|
||||
|
||||
// "Internal" SPI on Sercom 5
|
||||
|
|
|
@ -63,8 +63,8 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA01 // SCK: SERCOM1/PAD[1]
|
||||
SPI0_MOSI_PIN = PA00 // MOSI: SERCOM1/PAD[0]
|
||||
SPI0_MISO_PIN = PB23 // MISO: SERCOM1/PAD[3]
|
||||
SPI0_SDO_PIN = PA00 // SDO: SERCOM1/PAD[0]
|
||||
SPI0_SDI_PIN = PB23 // SDI: SERCOM1/PAD[3]
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -145,10 +145,10 @@ const (
|
|||
FUNC_SPI1_SS3 FPIOAFunction = 81 // SPI1 Chip Select 3
|
||||
FUNC_SPI1_ARB FPIOAFunction = 82 // SPI1 Arbitration
|
||||
FUNC_SPI1_SCLK FPIOAFunction = 83 // SPI1 Serial Clock
|
||||
FUNC_SPI_SLAVE_D0 FPIOAFunction = 84 // SPI Slave Data 0
|
||||
FUNC_SPI_SLAVE_SS FPIOAFunction = 85 // SPI Slave Select
|
||||
FUNC_SPI_SLAVE_SCLK FPIOAFunction = 86 // SPI Slave Serial Clock
|
||||
FUNC_I2S0_MCLK FPIOAFunction = 87 // I2S0 Master Clock
|
||||
FUNC_SPI_PERIPHERAL_D0 FPIOAFunction = 84 // SPI Peripheral Data 0
|
||||
FUNC_SPI_PERIPHERAL_SS FPIOAFunction = 85 // SPI Peripheral Select
|
||||
FUNC_SPI_PERIPHERAL_SCLK FPIOAFunction = 86 // SPI Peripheral Serial Clock
|
||||
FUNC_I2S0_MCLK FPIOAFunction = 87 // I2S0 Main Clock
|
||||
FUNC_I2S0_SCLK FPIOAFunction = 88 // I2S0 Serial Clock(BCLK)
|
||||
FUNC_I2S0_WS FPIOAFunction = 89 // I2S0 Word Select(LRCLK)
|
||||
FUNC_I2S0_IN_D0 FPIOAFunction = 90 // I2S0 Serial Data Input 0
|
||||
|
@ -159,7 +159,7 @@ const (
|
|||
FUNC_I2S0_OUT_D1 FPIOAFunction = 95 // I2S0 Serial Data Output 1
|
||||
FUNC_I2S0_OUT_D2 FPIOAFunction = 96 // I2S0 Serial Data Output 2
|
||||
FUNC_I2S0_OUT_D3 FPIOAFunction = 97 // I2S0 Serial Data Output 3
|
||||
FUNC_I2S1_MCLK FPIOAFunction = 98 // I2S1 Master Clock
|
||||
FUNC_I2S1_MCLK FPIOAFunction = 98 // I2S1 Main Clock
|
||||
FUNC_I2S1_SCLK FPIOAFunction = 99 // I2S1 Serial Clock(BCLK)
|
||||
FUNC_I2S1_WS FPIOAFunction = 100 // I2S1 Word Select(LRCLK)
|
||||
FUNC_I2S1_IN_D0 FPIOAFunction = 101 // I2S1 Serial Data Input 0
|
||||
|
@ -170,7 +170,7 @@ const (
|
|||
FUNC_I2S1_OUT_D1 FPIOAFunction = 106 // I2S1 Serial Data Output 1
|
||||
FUNC_I2S1_OUT_D2 FPIOAFunction = 107 // I2S1 Serial Data Output 2
|
||||
FUNC_I2S1_OUT_D3 FPIOAFunction = 108 // I2S1 Serial Data Output 3
|
||||
FUNC_I2S2_MCLK FPIOAFunction = 109 // I2S2 Master Clock
|
||||
FUNC_I2S2_MCLK FPIOAFunction = 109 // I2S2 Main Clock
|
||||
FUNC_I2S2_SCLK FPIOAFunction = 110 // I2S2 Serial Clock(BCLK)
|
||||
FUNC_I2S2_WS FPIOAFunction = 111 // I2S2 Word Select(LRCLK)
|
||||
FUNC_I2S2_IN_D0 FPIOAFunction = 112 // I2S2 Serial Data Input 0
|
||||
|
|
|
@ -30,9 +30,9 @@ const (
|
|||
D23 = P23 // GPIOHS7
|
||||
D24 = P24 // GPIOHS8
|
||||
D25 = P25 // GPIOHS9
|
||||
D26 = P26 // GPIOHS10 / SPI0_MISO
|
||||
D26 = P26 // GPIOHS10 / SPI0_SDI
|
||||
D27 = P27 // GPIOHS11 / SPI0_SCLK
|
||||
D28 = P28 // GPIOHS12 / SPI0_MOSI
|
||||
D28 = P28 // GPIOHS12 / SPI0_SDO
|
||||
D29 = P29 // GPIOHS13
|
||||
D30 = P30 // GPIOHS14
|
||||
D31 = P31 // GPIOHS15
|
||||
|
@ -61,8 +61,8 @@ const (
|
|||
// SPI pins.
|
||||
const (
|
||||
SPI0_SCK_PIN = D27
|
||||
SPI0_MOSI_PIN = D28
|
||||
SPI0_MISO_PIN = D26
|
||||
SPI0_SDO_PIN = D28
|
||||
SPI0_SDI_PIN = D26
|
||||
)
|
||||
|
||||
// I2C pins.
|
||||
|
|
|
@ -76,18 +76,18 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA13 // SCK: SERCOM2/PAD[1]
|
||||
SPI0_MOSI_PIN = PA12 // MOSI: SERCOM2/PAD[0]
|
||||
SPI0_MISO_PIN = PA14 // MISO: SERCOM2/PAD[2]
|
||||
SPI0_SDO_PIN = PA12 // SDO: SERCOM2/PAD[0]
|
||||
SPI0_SDI_PIN = PA14 // SDI: SERCOM2/PAD[2]
|
||||
|
||||
NINA_MOSI = SPI0_MOSI_PIN
|
||||
NINA_MISO = SPI0_MISO_PIN
|
||||
NINA_SDO = SPI0_SDO_PIN
|
||||
NINA_SDI = SPI0_SDI_PIN
|
||||
NINA_SCK = SPI0_SCK_PIN
|
||||
)
|
||||
|
||||
const (
|
||||
SPI1_SCK_PIN = D12 // MISO: SERCOM1/PAD[1]
|
||||
SPI1_MOSI_PIN = D11 // MOSI: SERCOM1/PAD[3]
|
||||
SPI1_MISO_PIN = D13 // SCK: SERCOM1/PAD[0]
|
||||
SPI1_SCK_PIN = D12 // SDI: SERCOM1/PAD[1]
|
||||
SPI1_SDO_PIN = D11 // SDO: SERCOM1/PAD[3]
|
||||
SPI1_SDI_PIN = D13 // SCK: SERCOM1/PAD[0]
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -34,8 +34,8 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 23 // P13 on the board
|
||||
SPI0_MOSI_PIN Pin = 21 // P15 on the board
|
||||
SPI0_MISO_PIN Pin = 22 // P14 on the board
|
||||
SPI0_SDO_PIN Pin = 21 // P15 on the board
|
||||
SPI0_SDI_PIN Pin = 22 // P14 on the board
|
||||
)
|
||||
|
||||
// GPIO/Analog pins
|
||||
|
|
|
@ -32,8 +32,8 @@ const (
|
|||
// SPI pins (unused)
|
||||
const (
|
||||
SPI0_SCK_PIN = NoPin
|
||||
SPI0_MOSI_PIN = NoPin
|
||||
SPI0_MISO_PIN = NoPin
|
||||
SPI0_SDO_PIN = NoPin
|
||||
SPI0_SDI_PIN = NoPin
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -114,8 +114,8 @@ func init() {
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA5
|
||||
SPI0_MISO_PIN = PA6
|
||||
SPI0_MOSI_PIN = PA7
|
||||
SPI0_SDI_PIN = PA6
|
||||
SPI0_SDO_PIN = PA7
|
||||
)
|
||||
|
||||
// I2C pins
|
||||
|
|
|
@ -34,8 +34,8 @@ const (
|
|||
D8 Pin = 35
|
||||
D9 Pin = 6 // Also TX
|
||||
D10 Pin = 8 // Also RX
|
||||
D11 Pin = 46 // Also MISO
|
||||
D12 Pin = 45 // Also MOSI
|
||||
D11 Pin = 46 // Also SDI
|
||||
D12 Pin = 45 // Also SDO
|
||||
D13 Pin = 47 // Also SCK
|
||||
)
|
||||
|
||||
|
@ -59,15 +59,15 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 47
|
||||
SPI0_MOSI_PIN Pin = 45
|
||||
SPI0_MISO_PIN Pin = 46
|
||||
SPI0_SDO_PIN Pin = 45
|
||||
SPI0_SDI_PIN Pin = 46
|
||||
)
|
||||
|
||||
// Internal 4MB SPI Flash
|
||||
const (
|
||||
SPI1_SCK_PIN Pin = 19
|
||||
SPI1_MOSI_PIN Pin = 20
|
||||
SPI1_MISO_PIN Pin = 21
|
||||
SPI1_SDO_PIN Pin = 20
|
||||
SPI1_SDI_PIN Pin = 21
|
||||
SPI1_CS_PIN Pin = 17
|
||||
SPI1_WP_PIN Pin = 22
|
||||
SPI1_HOLD_PIN Pin = 23
|
||||
|
|
|
@ -34,8 +34,8 @@ const (
|
|||
D8 Pin = 35
|
||||
D9 Pin = 6 // Also TX
|
||||
D10 Pin = 8 // Also RX
|
||||
D11 Pin = 46 // Also MISO
|
||||
D12 Pin = 45 // Also MOSI
|
||||
D11 Pin = 46 // Also SDI
|
||||
D12 Pin = 45 // Also SDO
|
||||
D13 Pin = 47 // Also SCK
|
||||
)
|
||||
|
||||
|
@ -64,15 +64,15 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 47
|
||||
SPI0_MOSI_PIN Pin = 45
|
||||
SPI0_MISO_PIN Pin = 46
|
||||
SPI0_SDO_PIN Pin = 45
|
||||
SPI0_SDI_PIN Pin = 46
|
||||
)
|
||||
|
||||
// Internal 4MB SPI Flash
|
||||
const (
|
||||
SPI1_SCK_PIN Pin = 19
|
||||
SPI1_MOSI_PIN Pin = 20
|
||||
SPI1_MISO_PIN Pin = 21
|
||||
SPI1_SDO_PIN Pin = 20
|
||||
SPI1_SDI_PIN Pin = 21
|
||||
SPI1_CS_PIN Pin = 17
|
||||
SPI1_WP_PIN Pin = 22
|
||||
SPI1_HOLD_PIN Pin = 23
|
||||
|
|
|
@ -34,8 +34,8 @@ const (
|
|||
D8 Pin = 35
|
||||
D9 Pin = 6 // Also TX
|
||||
D10 Pin = 8 // Also RX
|
||||
D11 Pin = 46 // Also MISO
|
||||
D12 Pin = 45 // Also MOSI
|
||||
D11 Pin = 46 // Also SDI
|
||||
D12 Pin = 45 // Also SDO
|
||||
D13 Pin = 47 // Also SCK
|
||||
)
|
||||
|
||||
|
@ -59,15 +59,15 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 47
|
||||
SPI0_MOSI_PIN Pin = 45
|
||||
SPI0_MISO_PIN Pin = 46
|
||||
SPI0_SDO_PIN Pin = 45
|
||||
SPI0_SDI_PIN Pin = 46
|
||||
)
|
||||
|
||||
// Internal 4MB SPI Flash
|
||||
const (
|
||||
SPI1_SCK_PIN Pin = 19
|
||||
SPI1_MOSI_PIN Pin = 20
|
||||
SPI1_MISO_PIN Pin = 21
|
||||
SPI1_SDO_PIN Pin = 20
|
||||
SPI1_SDI_PIN Pin = 21
|
||||
SPI1_CS_PIN Pin = 17
|
||||
SPI1_WP_PIN Pin = 22
|
||||
SPI1_HOLD_PIN Pin = 23
|
||||
|
|
|
@ -34,6 +34,6 @@ const (
|
|||
// SPI pins (unused)
|
||||
const (
|
||||
SPI0_SCK_PIN = NoPin
|
||||
SPI0_MOSI_PIN = NoPin
|
||||
SPI0_MISO_PIN = NoPin
|
||||
SPI0_SDO_PIN = NoPin
|
||||
SPI0_SDI_PIN = NoPin
|
||||
)
|
||||
|
|
|
@ -48,6 +48,6 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 25
|
||||
SPI0_MOSI_PIN Pin = 23
|
||||
SPI0_MISO_PIN Pin = 24
|
||||
SPI0_SDO_PIN Pin = 23
|
||||
SPI0_SDI_PIN Pin = 24
|
||||
)
|
||||
|
|
|
@ -47,8 +47,8 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 47 // P1.15
|
||||
SPI0_MOSI_PIN Pin = 45 // P1.13
|
||||
SPI0_MISO_PIN Pin = 46 // P1.14
|
||||
SPI0_SDO_PIN Pin = 45 // P1.13
|
||||
SPI0_SDI_PIN Pin = 46 // P1.14
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -28,8 +28,8 @@ const (
|
|||
// SPI pins for the PineTime.
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 2
|
||||
SPI0_MOSI_PIN Pin = 3
|
||||
SPI0_MISO_PIN Pin = 4
|
||||
SPI0_SDO_PIN Pin = 3
|
||||
SPI0_SDI_PIN Pin = 4
|
||||
)
|
||||
|
||||
// I2C pins for the PineTime.
|
||||
|
@ -51,7 +51,7 @@ const VIBRATOR_PIN Pin = 16
|
|||
// http://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf
|
||||
const (
|
||||
LCD_SCK = SPI0_SCK_PIN
|
||||
LCD_SDI = SPI0_MOSI_PIN
|
||||
LCD_SDI = SPI0_SDO_PIN
|
||||
LCD_RS Pin = 18
|
||||
LCD_CS Pin = 25
|
||||
LCD_RESET Pin = 26
|
||||
|
|
|
@ -92,15 +92,15 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA17 // SCK: SERCOM1/PAD[1]
|
||||
SPI0_MOSI_PIN = PB23 // MOSI: SERCOM1/PAD[3]
|
||||
SPI0_MISO_PIN = PB22 // MISO: SERCOM1/PAD[2]
|
||||
SPI0_SDO_PIN = PB23 // SDO: SERCOM1/PAD[3]
|
||||
SPI0_SDI_PIN = PB22 // SDI: SERCOM1/PAD[2]
|
||||
)
|
||||
|
||||
// TFT SPI pins
|
||||
const (
|
||||
SPI1_SCK_PIN = PB13 // SCK: SERCOM4/PAD[1]
|
||||
SPI1_MOSI_PIN = PB15 // MOSI: SERCOM4/PAD[3]
|
||||
SPI1_MISO_PIN = NoPin
|
||||
SPI1_SDO_PIN = PB15 // SDO: SERCOM4/PAD[3]
|
||||
SPI1_SDI_PIN = NoPin
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -108,8 +108,8 @@ var (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA17 // SCK: SERCOM1/PAD[1]
|
||||
SPI0_MOSI_PIN = PB23 // MOSI: SERCOM1/PAD[3]
|
||||
SPI0_MISO_PIN = PB22 // MISO: SERCOM1/PAD[2]
|
||||
SPI0_SDO_PIN = PB23 // SDO: SERCOM1/PAD[3]
|
||||
SPI0_SDI_PIN = PB22 // SDI: SERCOM1/PAD[2]
|
||||
)
|
||||
|
||||
// SPI on the PyGamer.
|
||||
|
@ -123,8 +123,8 @@ var (
|
|||
// TFT SPI pins
|
||||
const (
|
||||
SPI1_SCK_PIN = PB13 // SCK: SERCOM4/PAD[1]
|
||||
SPI1_MOSI_PIN = PB15 // MOSI: SERCOM4/PAD[3]
|
||||
SPI1_MISO_PIN = NoPin
|
||||
SPI1_SDO_PIN = PB15 // SDO: SERCOM4/PAD[3]
|
||||
SPI1_SDI_PIN = NoPin
|
||||
)
|
||||
|
||||
// TFT SPI on the PyGamer.
|
||||
|
|
|
@ -26,9 +26,9 @@ const (
|
|||
D26 = PB09 // TFT_WR
|
||||
D27 = PB02 // SDA
|
||||
D28 = PB03 // SCL
|
||||
D29 = PA12 // MOSI
|
||||
D29 = PA12 // SDO
|
||||
D30 = PA13 // SCK
|
||||
D31 = PA14 // MISO
|
||||
D31 = PA14 // SDI
|
||||
D32 = PB30 // SD_CS
|
||||
D33 = PA01 // SD_CARD_DETECT
|
||||
D34 = PA16 // LCD_DATA0
|
||||
|
@ -115,11 +115,11 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA13 // SCK: SERCOM1/PAD[1]
|
||||
SPI0_MOSI_PIN = PA12 // MOSI: SERCOM1/PAD[3]
|
||||
SPI0_MISO_PIN = PA14 // MISO: SERCOM1/PAD[2]
|
||||
SPI0_SDO_PIN = PA12 // SDO: SERCOM1/PAD[3]
|
||||
SPI0_SDI_PIN = PA14 // SDI: SERCOM1/PAD[2]
|
||||
|
||||
NINA_MOSI = SPI0_MOSI_PIN
|
||||
NINA_MISO = SPI0_MISO_PIN
|
||||
NINA_SDO = SPI0_SDO_PIN
|
||||
NINA_SDI = SPI0_SDI_PIN
|
||||
NINA_SCK = SPI0_SCK_PIN
|
||||
)
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ const (
|
|||
EPD_DC_PIN Pin = 16
|
||||
EPD_CS_PIN Pin = 17
|
||||
EPD_SCK_PIN Pin = 19
|
||||
EPD_MOSI_PIN Pin = 20
|
||||
EPD_SDO_PIN Pin = 20
|
||||
POWER_SUPPLY_PIN Pin = 32
|
||||
)
|
||||
|
||||
|
@ -44,8 +44,8 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN Pin = 47
|
||||
SPI0_MOSI_PIN Pin = 45
|
||||
SPI0_MISO_PIN Pin = 46
|
||||
SPI0_SDO_PIN Pin = 45
|
||||
SPI0_SDI_PIN Pin = 46
|
||||
)
|
||||
|
||||
// PowerSupplyActive enables the supply voltages for nRF52840 and peripherals (true) or only for nRF52840 (false)
|
||||
|
|
|
@ -133,11 +133,11 @@ func init() {
|
|||
// SPI pins
|
||||
const (
|
||||
SPI1_SCK_PIN = PA5
|
||||
SPI1_MISO_PIN = PA6
|
||||
SPI1_MOSI_PIN = PA7
|
||||
SPI1_SDI_PIN = PA6
|
||||
SPI1_SDO_PIN = PA7
|
||||
SPI0_SCK_PIN = SPI1_SCK_PIN
|
||||
SPI0_MISO_PIN = SPI1_MISO_PIN
|
||||
SPI0_MOSI_PIN = SPI1_MOSI_PIN
|
||||
SPI0_SDI_PIN = SPI1_SDI_PIN
|
||||
SPI0_SDO_PIN = SPI1_SDO_PIN
|
||||
)
|
||||
|
||||
// MEMs accelerometer
|
||||
|
|
|
@ -61,8 +61,8 @@ func init() {
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = D3
|
||||
SPI0_MOSI_PIN = D4
|
||||
SPI0_MISO_PIN = D2
|
||||
SPI0_SDO_PIN = D4
|
||||
SPI0_SDI_PIN = D2
|
||||
)
|
||||
|
||||
// SPI on the Trinket M0.
|
||||
|
|
|
@ -86,8 +86,8 @@ const (
|
|||
BCM6 = PB13 // GCLK
|
||||
BCM7 = PA05 // DAC1
|
||||
BCM8 = PB01 // SPI SS
|
||||
BCM9 = PB00 // SPI MISO
|
||||
BCM10 = PB02 // SPI MOSI
|
||||
BCM9 = PB00 // SPI SDI
|
||||
BCM10 = PB02 // SPI SDO
|
||||
BCM11 = PB03 // SPI SCK
|
||||
BCM12 = PB06
|
||||
BCM13 = PA07
|
||||
|
@ -216,58 +216,58 @@ const (
|
|||
WIO_LIS3DH_INT = PC21
|
||||
|
||||
// SPI
|
||||
PIN_SPI_MISO = PB00
|
||||
PIN_SPI_MOSI = PB02
|
||||
PIN_SPI_SDI = PB00
|
||||
PIN_SPI_SDO = PB02
|
||||
PIN_SPI_SCK = PB03
|
||||
PIN_SPI_SS = PB01
|
||||
|
||||
SS = PIN_SPI_SS
|
||||
MOSI = PIN_SPI_MOSI
|
||||
MISO = PIN_SPI_MISO
|
||||
SDO = PIN_SPI_SDO
|
||||
SDI = PIN_SPI_SDI
|
||||
SCK = PIN_SPI_SCK
|
||||
|
||||
// SPI1 RTL8720D_SPI
|
||||
PIN_SPI1_MISO = PC24
|
||||
PIN_SPI1_MOSI = PB24
|
||||
PIN_SPI1_SDI = PC24
|
||||
PIN_SPI1_SDO = PB24
|
||||
PIN_SPI1_SCK = PB25
|
||||
PIN_SPI1_SS = PC25
|
||||
|
||||
SS1 = PIN_SPI1_SS
|
||||
MOSI1 = PIN_SPI1_MOSI
|
||||
MISO1 = PIN_SPI1_MISO
|
||||
SDO1 = PIN_SPI1_SDO
|
||||
SDI1 = PIN_SPI1_SDI
|
||||
SCK1 = PIN_SPI1_SCK
|
||||
|
||||
// SPI2 SD_SPI
|
||||
PIN_SPI2_MISO = PC18
|
||||
PIN_SPI2_MOSI = PC16
|
||||
PIN_SPI2_SDI = PC18
|
||||
PIN_SPI2_SDO = PC16
|
||||
PIN_SPI2_SCK = PC17
|
||||
PIN_SPI2_SS = PC19
|
||||
|
||||
SS2 = PIN_SPI2_SS
|
||||
MOSI2 = PIN_SPI2_MOSI
|
||||
MISO2 = PIN_SPI2_MISO
|
||||
SDO2 = PIN_SPI2_SDO
|
||||
SDI2 = PIN_SPI2_SDI
|
||||
SCK2 = PIN_SPI2_SCK
|
||||
|
||||
// SPI3 LCD_SPI
|
||||
PIN_SPI3_MISO = PB18
|
||||
PIN_SPI3_MOSI = PB19
|
||||
PIN_SPI3_SDI = PB18
|
||||
PIN_SPI3_SDO = PB19
|
||||
PIN_SPI3_SCK = PB20
|
||||
PIN_SPI3_SS = PB21
|
||||
|
||||
SS3 = PIN_SPI3_SS
|
||||
MOSI3 = PIN_SPI3_MOSI
|
||||
MISO3 = PIN_SPI3_MISO
|
||||
SDO3 = PIN_SPI3_SDO
|
||||
SDI3 = PIN_SPI3_SDI
|
||||
SCK3 = PIN_SPI3_SCK
|
||||
|
||||
// Needed for SD library
|
||||
SDCARD_MISO_PIN = PIN_SPI2_MISO
|
||||
SDCARD_MOSI_PIN = PIN_SPI2_MOSI
|
||||
SDCARD_SDI_PIN = PIN_SPI2_SDI
|
||||
SDCARD_SDO_PIN = PIN_SPI2_SDO
|
||||
SDCARD_SCK_PIN = PIN_SPI2_SCK
|
||||
SDCARD_SS_PIN = PIN_SPI2_SS
|
||||
SDCARD_DET_PIN = PD21
|
||||
|
||||
LCD_MISO_PIN = PIN_SPI3_MISO
|
||||
LCD_MOSI_PIN = PIN_SPI3_MOSI
|
||||
LCD_SDI_PIN = PIN_SPI3_SDI
|
||||
LCD_SDO_PIN = PIN_SPI3_SDO
|
||||
LCD_SCK_PIN = PIN_SPI3_SCK
|
||||
LCD_SS_PIN = PIN_SPI3_SS
|
||||
LCD_DC = PC06
|
||||
|
@ -281,8 +281,8 @@ const (
|
|||
LCD_YD = PC13
|
||||
|
||||
// Needed for RTL8720D
|
||||
RTL8720D_MISO_PIN = PIN_SPI1_MISO
|
||||
RTL8720D_MOSI_PIN = PIN_SPI1_MOSI
|
||||
RTL8720D_SDI_PIN = PIN_SPI1_SDI
|
||||
RTL8720D_SDO_PIN = PIN_SPI1_SDO
|
||||
RTL8720D_SCK_PIN = PIN_SPI1_SCK
|
||||
RTL8720D_SS_PIN = PIN_SPI1_SS
|
||||
|
||||
|
@ -358,23 +358,23 @@ const (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = SCK // SCK: SERCOM5/PAD[1]
|
||||
SPI0_MOSI_PIN = MOSI // MOSI: SERCOM5/PAD[0]
|
||||
SPI0_MISO_PIN = MISO // MISO: SERCOM5/PAD[2]
|
||||
SPI0_SDO_PIN = SDO // SDO: SERCOM5/PAD[0]
|
||||
SPI0_SDI_PIN = SDI // SDI: SERCOM5/PAD[2]
|
||||
|
||||
// RTL8720D
|
||||
SPI1_SCK_PIN = SCK1 // SCK: SERCOM0/PAD[1]
|
||||
SPI1_MOSI_PIN = MOSI1 // MOSI: SERCOM0/PAD[0]
|
||||
SPI1_MISO_PIN = MISO1 // MISO: SERCOM0/PAD[2]
|
||||
SPI1_SDO_PIN = SDO1 // SDO: SERCOM0/PAD[0]
|
||||
SPI1_SDI_PIN = SDI1 // SDI: SERCOM0/PAD[2]
|
||||
|
||||
// SD
|
||||
SPI2_SCK_PIN = SCK2 // SCK: SERCOM6/PAD[1]
|
||||
SPI2_MOSI_PIN = MOSI2 // MOSI: SERCOM6/PAD[0]
|
||||
SPI2_MISO_PIN = MISO2 // MISO: SERCOM6/PAD[2]
|
||||
SPI2_SDO_PIN = SDO2 // SDO: SERCOM6/PAD[0]
|
||||
SPI2_SDI_PIN = SDI2 // SDI: SERCOM6/PAD[2]
|
||||
|
||||
// LCD
|
||||
SPI3_SCK_PIN = SCK3 // SCK: SERCOM7/PAD[1]
|
||||
SPI3_MOSI_PIN = MOSI3 // MOSI: SERCOM7/PAD[3]
|
||||
SPI3_MISO_PIN = MISO3 // MISO: SERCOM7/PAD[2]
|
||||
SPI3_SDO_PIN = SDO3 // SDO: SERCOM7/PAD[3]
|
||||
SPI3_SDI_PIN = SDI3 // SDI: SERCOM7/PAD[2]
|
||||
)
|
||||
|
||||
// USB CDC identifiers
|
||||
|
|
|
@ -10,8 +10,8 @@ const (
|
|||
SCL_PIN Pin = NoPin
|
||||
SDA_PIN Pin = NoPin
|
||||
SPI0_SCK_PIN Pin = 18
|
||||
SPI0_MISO_PIN Pin = 19
|
||||
SPI0_MOSI_PIN Pin = 20
|
||||
SPI0_SDI_PIN Pin = 19
|
||||
SPI0_SDO_PIN Pin = 20
|
||||
)
|
||||
|
||||
// LCD pins.
|
||||
|
@ -20,7 +20,7 @@ const (
|
|||
OLED_RES Pin = 14 // reset pin
|
||||
OLED_DC Pin = 13 // data/command
|
||||
OLED_SCK Pin = 12 // SPI clock
|
||||
OLED_MOSI Pin = 11 // SPI MOSI (master-out, slave-in)
|
||||
OLED_SDO Pin = 11 // SPI SDO (chip-out, peripheral-in)
|
||||
OLED_LED_POW Pin = 16
|
||||
OLED_IC_POW Pin = 17
|
||||
)
|
||||
|
|
|
@ -21,8 +21,8 @@ const (
|
|||
D6 = PB08 // can be used for PWM or UART1 TX
|
||||
D7 = PB09 // can be used for PWM or UART1 RX
|
||||
D8 = PA07 // can be used for PWM or SPI SCK
|
||||
D9 = PA05 // can be used for PWM or SPI MISO
|
||||
D10 = PA06 // can be used for PWM or SPI MOSI
|
||||
D9 = PA05 // can be used for PWM or SPI SDI
|
||||
D10 = PA06 // can be used for PWM or SPI SDO
|
||||
)
|
||||
|
||||
// Analog pins
|
||||
|
@ -90,8 +90,8 @@ var (
|
|||
// SPI pins
|
||||
const (
|
||||
SPI0_SCK_PIN = PA07 // SCK: SERCOM0/PAD[3]
|
||||
SPI0_MOSI_PIN = PA06 // MOSI: SERCOM0/PAD[2]
|
||||
SPI0_MISO_PIN = PA05 // MISO: SERCOM0/PAD[1]
|
||||
SPI0_SDO_PIN = PA06 // SDO: SERCOM0/PAD[2]
|
||||
SPI0_SDI_PIN = PA05 // SDI: SERCOM0/PAD[1]
|
||||
)
|
||||
|
||||
// SPI on the Xiao
|
||||
|
|
|
@ -15,8 +15,8 @@ type I2SClockSource uint8
|
|||
type I2SDataFormat uint8
|
||||
|
||||
const (
|
||||
I2SModeMaster I2SMode = iota
|
||||
I2SModeSlave
|
||||
I2SModeSource I2SMode = iota
|
||||
I2SModeReceiver
|
||||
I2SModePDM
|
||||
)
|
||||
|
||||
|
@ -49,6 +49,6 @@ type I2SConfig struct {
|
|||
ClockSource I2SClockSource
|
||||
DataFormat I2SDataFormat
|
||||
AudioFrequency uint32
|
||||
MasterClockOutput bool
|
||||
MainClockOutput bool
|
||||
Stereo bool
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ func (i2c I2C) Configure(config I2CConfig) {
|
|||
|
||||
// twi bit rate formula from atmega128 manual pg. 204:
|
||||
// SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR))
|
||||
// NOTE: TWBR should be 10 or higher for master mode.
|
||||
// NOTE: TWBR should be 10 or higher for controller mode.
|
||||
// It is 72 for a 16mhz board with 100kHz TWI
|
||||
avr.TWBR.Set(uint8(((CPUFrequency() / config.Frequency) - 16) / 2))
|
||||
|
||||
|
|
|
@ -648,7 +648,7 @@ func (i2c I2C) Configure(config I2CConfig) error {
|
|||
i2c.Bus.SYNCBUSY.HasBits(sam.SERCOM_I2CM_SYNCBUSY_SWRST) {
|
||||
}
|
||||
|
||||
// Set i2c master mode
|
||||
// Set i2c controller mode
|
||||
//SERCOM_I2CM_CTRLA_MODE( I2C_MASTER_OPERATION )
|
||||
i2c.Bus.CTRLA.Set(sam.SERCOM_I2CM_CTRLA_MODE_I2C_MASTER << sam.SERCOM_I2CM_CTRLA_MODE_Pos) // |
|
||||
|
||||
|
@ -722,7 +722,7 @@ func (i2c I2C) Tx(addr uint16, w, r []byte) error {
|
|||
|
||||
// wait transmission complete
|
||||
for !i2c.Bus.INTFLAG.HasBits(sam.SERCOM_I2CM_INTFLAG_SB) {
|
||||
// If the slave NACKS the address, the MB bit will be set.
|
||||
// If the peripheral NACKS the address, the MB bit will be set.
|
||||
// In that case, send a stop condition and return error.
|
||||
if i2c.Bus.INTFLAG.HasBits(sam.SERCOM_I2CM_INTFLAG_MB) {
|
||||
i2c.Bus.CTRLB.SetBits(wireCmdStop << sam.SERCOM_I2CM_CTRLB_CMD_Pos) // Stop condition
|
||||
|
@ -1074,8 +1074,8 @@ type SPI struct {
|
|||
type SPIConfig struct {
|
||||
Frequency uint32
|
||||
SCK Pin
|
||||
MOSI Pin
|
||||
MISO Pin
|
||||
SDO Pin
|
||||
SDI Pin
|
||||
LSBFirst bool
|
||||
Mode uint8
|
||||
}
|
||||
|
@ -1083,10 +1083,10 @@ type SPIConfig struct {
|
|||
// Configure is intended to setup the SPI interface.
|
||||
func (spi SPI) Configure(config SPIConfig) error {
|
||||
// Use default pins if not set.
|
||||
if config.SCK == 0 && config.MOSI == 0 && config.MISO == 0 {
|
||||
if config.SCK == 0 && config.SDO == 0 && config.SDI == 0 {
|
||||
config.SCK = SPI0_SCK_PIN
|
||||
config.MOSI = SPI0_MOSI_PIN
|
||||
config.MISO = SPI0_MISO_PIN
|
||||
config.SDO = SPI0_SDO_PIN
|
||||
config.SDI = SPI0_SDI_PIN
|
||||
}
|
||||
|
||||
// set default frequency
|
||||
|
@ -1094,27 +1094,27 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
config.Frequency = 4000000
|
||||
}
|
||||
|
||||
// Determine the input pinout (for MISO).
|
||||
misoPinMode, misoPad, ok := findPinPadMapping(spi.SERCOM, config.MISO)
|
||||
// Determine the input pinout (for SDI).
|
||||
SDIPinMode, SDIPad, ok := findPinPadMapping(spi.SERCOM, config.SDI)
|
||||
if !ok {
|
||||
return ErrInvalidInputPin
|
||||
}
|
||||
dataInPinout := misoPad // mapped directly
|
||||
dataInPinout := SDIPad // mapped directly
|
||||
|
||||
// Determine the output pinout (for MOSI/SCK).
|
||||
// Determine the output pinout (for SDO/SCK).
|
||||
// See table 26-7 on page 494 of the datasheet.
|
||||
var dataOutPinout uint32
|
||||
sckPinMode, sckPad, ok := findPinPadMapping(spi.SERCOM, config.SCK)
|
||||
if !ok {
|
||||
return ErrInvalidOutputPin
|
||||
}
|
||||
mosiPinMode, mosiPad, ok := findPinPadMapping(spi.SERCOM, config.MOSI)
|
||||
SDOPinMode, SDOPad, ok := findPinPadMapping(spi.SERCOM, config.SDO)
|
||||
if !ok {
|
||||
return ErrInvalidOutputPin
|
||||
}
|
||||
switch sckPad {
|
||||
case 1:
|
||||
switch mosiPad {
|
||||
switch SDOPad {
|
||||
case 0:
|
||||
dataOutPinout = 0x0
|
||||
case 3:
|
||||
|
@ -1123,7 +1123,7 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
return ErrInvalidOutputPin
|
||||
}
|
||||
case 3:
|
||||
switch mosiPad {
|
||||
switch SDOPad {
|
||||
case 2:
|
||||
dataOutPinout = 0x1
|
||||
case 0:
|
||||
|
@ -1142,8 +1142,8 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
|
||||
// enable pins
|
||||
config.SCK.Configure(PinConfig{Mode: sckPinMode})
|
||||
config.MOSI.Configure(PinConfig{Mode: mosiPinMode})
|
||||
config.MISO.Configure(PinConfig{Mode: misoPinMode})
|
||||
config.SDO.Configure(PinConfig{Mode: SDOPinMode})
|
||||
config.SDI.Configure(PinConfig{Mode: SDIPinMode})
|
||||
|
||||
// reset SERCOM
|
||||
spi.Bus.CTRLA.SetBits(sam.SERCOM_SPI_CTRLA_SWRST)
|
||||
|
@ -1157,7 +1157,7 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
dataOrder = 1
|
||||
}
|
||||
|
||||
// Set SPI master
|
||||
// Set SPI mode to controller
|
||||
spi.Bus.CTRLA.Set((sam.SERCOM_SPI_CTRLA_MODE_SPI_MASTER << sam.SERCOM_SPI_CTRLA_MODE_Pos) |
|
||||
(dataOutPinout << sam.SERCOM_SPI_CTRLA_DOPO_Pos) |
|
||||
(dataInPinout << sam.SERCOM_SPI_CTRLA_DIPO_Pos) |
|
||||
|
|
|
@ -1111,7 +1111,7 @@ func (i2c I2C) Configure(config I2CConfig) error {
|
|||
i2c.Bus.SYNCBUSY.HasBits(sam.SERCOM_I2CM_SYNCBUSY_SWRST) {
|
||||
}
|
||||
|
||||
// Set i2c master mode
|
||||
// Set i2c controller mode
|
||||
//SERCOM_I2CM_CTRLA_MODE( I2C_MASTER_OPERATION )
|
||||
// sam.SERCOM_I2CM_CTRLA_MODE_I2C_MASTER = 5?
|
||||
i2c.Bus.CTRLA.Set(5 << sam.SERCOM_I2CM_CTRLA_MODE_Pos) // |
|
||||
|
@ -1186,7 +1186,7 @@ func (i2c I2C) Tx(addr uint16, w, r []byte) error {
|
|||
|
||||
// wait transmission complete
|
||||
for !i2c.Bus.INTFLAG.HasBits(sam.SERCOM_I2CM_INTFLAG_SB) {
|
||||
// If the slave NACKS the address, the MB bit will be set.
|
||||
// If the peripheral NACKS the address, the MB bit will be set.
|
||||
// In that case, send a stop condition and return error.
|
||||
if i2c.Bus.INTFLAG.HasBits(sam.SERCOM_I2CM_INTFLAG_MB) {
|
||||
i2c.Bus.CTRLB.SetBits(wireCmdStop << sam.SERCOM_I2CM_CTRLB_CMD_Pos) // Stop condition
|
||||
|
@ -1309,8 +1309,8 @@ type SPI struct {
|
|||
type SPIConfig struct {
|
||||
Frequency uint32
|
||||
SCK Pin
|
||||
MOSI Pin
|
||||
MISO Pin
|
||||
SDO Pin
|
||||
SDI Pin
|
||||
LSBFirst bool
|
||||
Mode uint8
|
||||
}
|
||||
|
@ -1318,10 +1318,10 @@ type SPIConfig struct {
|
|||
// Configure is intended to setup the SPI interface.
|
||||
func (spi SPI) Configure(config SPIConfig) error {
|
||||
// Use default pins if not set.
|
||||
if config.SCK == 0 && config.MOSI == 0 && config.MISO == 0 {
|
||||
if config.SCK == 0 && config.SDO == 0 && config.SDI == 0 {
|
||||
config.SCK = SPI0_SCK_PIN
|
||||
config.MOSI = SPI0_MOSI_PIN
|
||||
config.MISO = SPI0_MISO_PIN
|
||||
config.SDO = SPI0_SDO_PIN
|
||||
config.SDI = SPI0_SDI_PIN
|
||||
}
|
||||
|
||||
// set default frequency
|
||||
|
@ -1329,17 +1329,17 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
config.Frequency = 4000000
|
||||
}
|
||||
|
||||
// Determine the input pinout (for MISO).
|
||||
// Determine the input pinout (for SDI).
|
||||
var dataInPinout uint32
|
||||
misoPinMode, misoPad, ok := findPinPadMapping(spi.SERCOM, config.MISO)
|
||||
if config.MISO != NoPin {
|
||||
SDIPinMode, SDIPad, ok := findPinPadMapping(spi.SERCOM, config.SDI)
|
||||
if config.SDI != NoPin {
|
||||
if !ok {
|
||||
return ErrInvalidInputPin
|
||||
}
|
||||
dataInPinout = misoPad // mapped directly
|
||||
dataInPinout = SDIPad // mapped directly
|
||||
}
|
||||
|
||||
// Determine the output pinout (for MOSI/SCK).
|
||||
// Determine the output pinout (for SDO/SCK).
|
||||
// See DOPO field in the CTRLA register on page 986 of the datasheet.
|
||||
var dataOutPinout uint32
|
||||
sckPinMode, sckPad, ok := findPinPadMapping(spi.SERCOM, config.SCK)
|
||||
|
@ -1347,11 +1347,11 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
// SCK pad must always be 1
|
||||
return ErrInvalidOutputPin
|
||||
}
|
||||
mosiPinMode, mosiPad, ok := findPinPadMapping(spi.SERCOM, config.MOSI)
|
||||
SDOPinMode, SDOPad, ok := findPinPadMapping(spi.SERCOM, config.SDO)
|
||||
if !ok {
|
||||
return ErrInvalidOutputPin
|
||||
}
|
||||
switch mosiPad {
|
||||
switch SDOPad {
|
||||
case 0:
|
||||
dataOutPinout = 0x0
|
||||
case 3:
|
||||
|
@ -1367,9 +1367,9 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
|
||||
// enable pins
|
||||
config.SCK.Configure(PinConfig{Mode: sckPinMode})
|
||||
config.MOSI.Configure(PinConfig{Mode: mosiPinMode})
|
||||
if config.MISO != NoPin {
|
||||
config.MISO.Configure(PinConfig{Mode: misoPinMode})
|
||||
config.SDO.Configure(PinConfig{Mode: SDOPinMode})
|
||||
if config.SDI != NoPin {
|
||||
config.SDI.Configure(PinConfig{Mode: SDIPinMode})
|
||||
}
|
||||
|
||||
// reset SERCOM
|
||||
|
@ -1384,7 +1384,7 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
dataOrder = 1
|
||||
}
|
||||
|
||||
// Set SPI master
|
||||
// Set SPI controller
|
||||
// SERCOM_SPIM_CTRLA_MODE_SPI_MASTER = 3
|
||||
spi.Bus.CTRLA.Set((3 << sam.SERCOM_SPIM_CTRLA_MODE_Pos) |
|
||||
(dataOutPinout << sam.SERCOM_SPIM_CTRLA_DOPO_Pos) |
|
||||
|
|
|
@ -101,8 +101,8 @@ type SPI struct {
|
|||
type SPIConfig struct {
|
||||
Frequency uint32
|
||||
SCK Pin
|
||||
MOSI Pin
|
||||
MISO Pin
|
||||
SDO Pin
|
||||
SDI Pin
|
||||
LSBFirst bool
|
||||
Mode uint8
|
||||
}
|
||||
|
@ -110,16 +110,16 @@ type SPIConfig struct {
|
|||
// Configure is intended to setup the SPI interface.
|
||||
func (spi SPI) Configure(config SPIConfig) error {
|
||||
// Use default pins if not set.
|
||||
if config.SCK == 0 && config.MOSI == 0 && config.MISO == 0 {
|
||||
if config.SCK == 0 && config.SDO == 0 && config.SDI == 0 {
|
||||
config.SCK = SPI0_SCK_PIN
|
||||
config.MOSI = SPI0_MOSI_PIN
|
||||
config.MISO = SPI0_MISO_PIN
|
||||
config.SDO = SPI0_SDO_PIN
|
||||
config.SDI = SPI0_SDI_PIN
|
||||
}
|
||||
|
||||
// enable pins for SPI
|
||||
config.SCK.Configure(PinConfig{Mode: PinSPI})
|
||||
config.MOSI.Configure(PinConfig{Mode: PinSPI})
|
||||
config.MISO.Configure(PinConfig{Mode: PinSPI})
|
||||
config.SDO.Configure(PinConfig{Mode: PinSPI})
|
||||
config.SDI.Configure(PinConfig{Mode: PinSPI})
|
||||
|
||||
// set default frequency
|
||||
if config.Frequency == 0 {
|
||||
|
|
|
@ -47,13 +47,13 @@ type SPI struct {
|
|||
type SPIConfig struct {
|
||||
Frequency uint32
|
||||
SCK Pin
|
||||
MOSI Pin
|
||||
MISO Pin
|
||||
SDO Pin
|
||||
SDI Pin
|
||||
Mode uint8
|
||||
}
|
||||
|
||||
func (spi SPI) Configure(config SPIConfig) {
|
||||
spiConfigure(spi.Bus, config.SCK, config.MOSI, config.MISO)
|
||||
spiConfigure(spi.Bus, config.SCK, config.SDO, config.SDI)
|
||||
}
|
||||
|
||||
// Transfer writes/reads a single byte using the SPI interface.
|
||||
|
@ -62,7 +62,7 @@ func (spi SPI) Transfer(w byte) (byte, error) {
|
|||
}
|
||||
|
||||
//export __tinygo_spi_configure
|
||||
func spiConfigure(bus uint8, sck Pin, mosi Pin, miso Pin)
|
||||
func spiConfigure(bus uint8, sck Pin, SDO Pin, SDI Pin)
|
||||
|
||||
//export __tinygo_spi_transfer
|
||||
func spiTransfer(bus uint8, w uint8) uint8
|
||||
|
|
|
@ -397,21 +397,21 @@ type SPI struct {
|
|||
type SPIConfig struct {
|
||||
Frequency uint32
|
||||
SCK Pin
|
||||
MOSI Pin
|
||||
MISO Pin
|
||||
SDO Pin
|
||||
SDI Pin
|
||||
LSBFirst bool
|
||||
Mode uint8
|
||||
}
|
||||
|
||||
// Configure is intended to setup the SPI interface.
|
||||
// Only SPI controller 0 and 1 can be used because SPI2 is a special
|
||||
// slave-mode controller and SPI3 is used for flashing.
|
||||
// peripheral-mode controller and SPI3 is used for flashing.
|
||||
func (spi SPI) Configure(config SPIConfig) error {
|
||||
// Use default pins if not set.
|
||||
if config.SCK == 0 && config.MOSI == 0 && config.MISO == 0 {
|
||||
if config.SCK == 0 && config.SDO == 0 && config.SDI == 0 {
|
||||
config.SCK = SPI0_SCK_PIN
|
||||
config.MOSI = SPI0_MOSI_PIN
|
||||
config.MISO = SPI0_MISO_PIN
|
||||
config.SDO = SPI0_SDO_PIN
|
||||
config.SDI = SPI0_SDI_PIN
|
||||
}
|
||||
|
||||
// Enable APB2 clock.
|
||||
|
@ -425,8 +425,8 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
|
||||
// Initialize pins.
|
||||
config.SCK.SetFPIOAFunction(FUNC_SPI0_SCLK)
|
||||
config.MOSI.SetFPIOAFunction(FUNC_SPI0_D0)
|
||||
config.MISO.SetFPIOAFunction(FUNC_SPI0_D1)
|
||||
config.SDO.SetFPIOAFunction(FUNC_SPI0_D0)
|
||||
config.SDI.SetFPIOAFunction(FUNC_SPI0_D1)
|
||||
case kendryte.SPI1:
|
||||
// Initialize SPI clock.
|
||||
kendryte.SYSCTL.CLK_EN_PERI.SetBits(kendryte.SYSCTL_CLK_EN_PERI_SPI1_CLK_EN)
|
||||
|
@ -434,8 +434,8 @@ func (spi SPI) Configure(config SPIConfig) error {
|
|||
|
||||
// Initialize pins.
|
||||
config.SCK.SetFPIOAFunction(FUNC_SPI1_SCLK)
|
||||
config.MOSI.SetFPIOAFunction(FUNC_SPI1_D0)
|
||||
config.MISO.SetFPIOAFunction(FUNC_SPI1_D1)
|
||||
config.SDO.SetFPIOAFunction(FUNC_SPI1_D0)
|
||||
config.SDI.SetFPIOAFunction(FUNC_SPI1_D1)
|
||||
default:
|
||||
return errUnsupportedSPIController
|
||||
}
|
||||
|
@ -567,7 +567,7 @@ func (i2c I2C) Configure(config I2CConfig) error {
|
|||
// It clocks out the given address, writes the bytes in w, reads back len(r)
|
||||
// bytes and stores them in r, and generates a stop condition on the bus.
|
||||
func (i2c I2C) Tx(addr uint16, w, r []byte) error {
|
||||
// Set slave address.
|
||||
// Set peripheral address.
|
||||
i2c.Bus.TAR.Set(uint32(addr))
|
||||
// Enable controller.
|
||||
i2c.Bus.ENABLE.Set(1)
|
||||
|
|
|
@ -325,8 +325,8 @@ var (
|
|||
type SPIConfig struct {
|
||||
Frequency uint32
|
||||
SCK Pin
|
||||
MOSI Pin
|
||||
MISO Pin
|
||||
SDO Pin
|
||||
SDI Pin
|
||||
LSBFirst bool
|
||||
Mode uint8
|
||||
}
|
||||
|
@ -387,7 +387,7 @@ func (spi SPI) Configure(config SPIConfig) {
|
|||
spi.Bus.CONFIG.Set(conf)
|
||||
|
||||
// set pins
|
||||
spi.setPins(config.SCK, config.MOSI, config.MISO)
|
||||
spi.setPins(config.SCK, config.SDO, config.SDI)
|
||||
|
||||
// Re-enable bus now that it is configured.
|
||||
spi.Bus.ENABLE.Set(nrf.SPI_ENABLE_ENABLE_Enabled)
|
||||
|
|
|
@ -30,17 +30,17 @@ func (i2c I2C) setPins(scl, sda Pin) {
|
|||
}
|
||||
|
||||
// SPI
|
||||
func (spi SPI) setPins(sck, mosi, miso Pin) {
|
||||
func (spi SPI) setPins(sck, sdo, sdi Pin) {
|
||||
if sck == 0 {
|
||||
sck = SPI0_SCK_PIN
|
||||
}
|
||||
if mosi == 0 {
|
||||
mosi = SPI0_MOSI_PIN
|
||||
if sdo == 0 {
|
||||
sdo = SPI0_SDO_PIN
|
||||
}
|
||||
if miso == 0 {
|
||||
miso = SPI0_MISO_PIN
|
||||
if sdi == 0 {
|
||||
sdi = SPI0_SDI_PIN
|
||||
}
|
||||
spi.Bus.PSELSCK.Set(uint32(sck))
|
||||
spi.Bus.PSELMOSI.Set(uint32(mosi))
|
||||
spi.Bus.PSELMISO.Set(uint32(miso))
|
||||
spi.Bus.PSELMOSI.Set(uint32(sdo))
|
||||
spi.Bus.PSELMISO.Set(uint32(sdi))
|
||||
}
|
||||
|
|
|
@ -31,19 +31,19 @@ func (i2c I2C) setPins(scl, sda Pin) {
|
|||
}
|
||||
|
||||
// SPI
|
||||
func (spi SPI) setPins(sck, mosi, miso Pin) {
|
||||
func (spi SPI) setPins(sck, sdo, sdi Pin) {
|
||||
if sck == 0 {
|
||||
sck = SPI0_SCK_PIN
|
||||
}
|
||||
if mosi == 0 {
|
||||
mosi = SPI0_MOSI_PIN
|
||||
if sdo == 0 {
|
||||
sdo = SPI0_SDO_PIN
|
||||
}
|
||||
if miso == 0 {
|
||||
miso = SPI0_MISO_PIN
|
||||
if sdi == 0 {
|
||||
sdi = SPI0_SDI_PIN
|
||||
}
|
||||
spi.Bus.PSEL.SCK.Set(uint32(sck))
|
||||
spi.Bus.PSEL.MOSI.Set(uint32(mosi))
|
||||
spi.Bus.PSEL.MISO.Set(uint32(miso))
|
||||
spi.Bus.PSEL.MOSI.Set(uint32(sdo))
|
||||
spi.Bus.PSEL.MISO.Set(uint32(sdi))
|
||||
}
|
||||
|
||||
// InitADC initializes the registers needed for ADC.
|
||||
|
|
|
@ -83,19 +83,19 @@ func (i2c I2C) setPins(scl, sda Pin) {
|
|||
}
|
||||
|
||||
// SPI
|
||||
func (spi SPI) setPins(sck, mosi, miso Pin) {
|
||||
func (spi SPI) setPins(sck, sdo, sdi Pin) {
|
||||
if sck == 0 {
|
||||
sck = SPI0_SCK_PIN
|
||||
}
|
||||
if mosi == 0 {
|
||||
mosi = SPI0_MOSI_PIN
|
||||
if sdo == 0 {
|
||||
sdo = SPI0_SDO_PIN
|
||||
}
|
||||
if miso == 0 {
|
||||
miso = SPI0_MISO_PIN
|
||||
if sdi == 0 {
|
||||
sdi = SPI0_SDI_PIN
|
||||
}
|
||||
spi.Bus.PSEL.SCK.Set(uint32(sck))
|
||||
spi.Bus.PSEL.MOSI.Set(uint32(mosi))
|
||||
spi.Bus.PSEL.MISO.Set(uint32(miso))
|
||||
spi.Bus.PSEL.MOSI.Set(uint32(sdo))
|
||||
spi.Bus.PSEL.MISO.Set(uint32(sdi))
|
||||
}
|
||||
|
||||
// InitADC initializes the registers needed for ADC.
|
||||
|
|
|
@ -28,8 +28,8 @@ const (
|
|||
|
||||
// for SPI
|
||||
PinModeSPICLK PinMode = 8
|
||||
PinModeSPIMOSI PinMode = 9
|
||||
PinModeSPIMISO PinMode = 10
|
||||
PinModeSPISDO PinMode = 9
|
||||
PinModeSPISDI PinMode = 10
|
||||
|
||||
// for analog/ADC
|
||||
PinInputAnalog PinMode = 11
|
||||
|
@ -102,12 +102,12 @@ func (p Pin) ConfigureAltFunc(config PinConfig, altFunc stm32.AltFunc) {
|
|||
port.OSPEEDR.ReplaceBits(stm32.GPIOSpeedLow, 0x3, pos)
|
||||
port.PUPDR.ReplaceBits(stm32.GPIOPUPDRFloating, 0x3, pos)
|
||||
p.SetAltFunc(altFunc)
|
||||
case PinModeSPIMOSI:
|
||||
case PinModeSPISDO:
|
||||
port.MODER.ReplaceBits(stm32.GPIOModeOutputAltFunc, 0x3, pos)
|
||||
port.OSPEEDR.ReplaceBits(stm32.GPIOSpeedLow, 0x3, pos)
|
||||
port.PUPDR.ReplaceBits(stm32.GPIOPUPDRFloating, 0x3, pos)
|
||||
p.SetAltFunc(altFunc)
|
||||
case PinModeSPIMISO:
|
||||
case PinModeSPISDI:
|
||||
port.MODER.ReplaceBits(stm32.GPIOModeOutputAltFunc, 0x3, pos)
|
||||
port.OSPEEDR.ReplaceBits(stm32.GPIOSpeedLow, 0x3, pos)
|
||||
port.PUPDR.ReplaceBits(stm32.GPIOPUPDRFloating, 0x3, pos)
|
||||
|
|
|
@ -13,8 +13,8 @@ import (
|
|||
type SPIConfig struct {
|
||||
Frequency uint32
|
||||
SCK Pin
|
||||
MOSI Pin
|
||||
MISO Pin
|
||||
SDO Pin
|
||||
SDI Pin
|
||||
LSBFirst bool
|
||||
Mode uint8
|
||||
}
|
||||
|
@ -56,20 +56,20 @@ func (spi SPI) Configure(config SPIConfig) {
|
|||
conf &^= (1 << stm32.SPI_CR1_CPHA_Pos)
|
||||
}
|
||||
|
||||
// set to SPI master
|
||||
// set to SPI controller
|
||||
conf |= stm32.SPI_CR1_MSTR
|
||||
|
||||
// disable MCU acting as SPI slave
|
||||
// disable MCU acting as SPI peripheral
|
||||
conf |= stm32.SPI_CR1_SSM | stm32.SPI_CR1_SSI
|
||||
|
||||
// now set the configuration
|
||||
spi.Bus.CR1.Set(conf)
|
||||
|
||||
// init pins
|
||||
if config.SCK == 0 && config.MOSI == 0 && config.MISO == 0 {
|
||||
if config.SCK == 0 && config.SDO == 0 && config.SDI == 0 {
|
||||
config.SCK = SPI0_SCK_PIN
|
||||
config.MOSI = SPI0_MOSI_PIN
|
||||
config.MISO = SPI0_MISO_PIN
|
||||
config.SDO = SPI0_SDO_PIN
|
||||
config.SDI = SPI0_SDI_PIN
|
||||
}
|
||||
spi.configurePins(config)
|
||||
|
||||
|
|
|
@ -191,8 +191,8 @@ func (spi SPI) getBaudRate(config SPIConfig) uint32 {
|
|||
// Configure SPI pins for input output and clock
|
||||
func (spi SPI) configurePins(config SPIConfig) {
|
||||
config.SCK.Configure(PinConfig{Mode: PinOutput50MHz + PinOutputModeAltPushPull})
|
||||
config.MOSI.Configure(PinConfig{Mode: PinOutput50MHz + PinOutputModeAltPushPull})
|
||||
config.MISO.Configure(PinConfig{Mode: PinInputModeFloating})
|
||||
config.SDO.Configure(PinConfig{Mode: PinOutput50MHz + PinOutputModeAltPushPull})
|
||||
config.SDI.Configure(PinConfig{Mode: PinInputModeFloating})
|
||||
}
|
||||
|
||||
//---------- I2C related types and code
|
||||
|
|
|
@ -164,6 +164,6 @@ func (spi SPI) getBaudRate(config SPIConfig) uint32 {
|
|||
// Configure SPI pins for input output and clock
|
||||
func (spi SPI) configurePins(config SPIConfig) {
|
||||
config.SCK.ConfigureAltFunc(PinConfig{Mode: PinModeSPICLK}, spi.AltFuncSelector)
|
||||
config.MOSI.ConfigureAltFunc(PinConfig{Mode: PinModeSPIMOSI}, spi.AltFuncSelector)
|
||||
config.MISO.ConfigureAltFunc(PinConfig{Mode: PinModeSPIMISO}, spi.AltFuncSelector)
|
||||
config.SDO.ConfigureAltFunc(PinConfig{Mode: PinModeSPISDO}, spi.AltFuncSelector)
|
||||
config.SDI.ConfigureAltFunc(PinConfig{Mode: PinModeSPISDI}, spi.AltFuncSelector)
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import (
|
|||
var (
|
||||
regInterruptEnable = (*volatile.Register16)(unsafe.Pointer(uintptr(0x4000200)))
|
||||
regInterruptRequestFlags = (*volatile.Register16)(unsafe.Pointer(uintptr(0x4000202)))
|
||||
regInterruptMasterEnable = (*volatile.Register16)(unsafe.Pointer(uintptr(0x4000208)))
|
||||
regGlobalInterruptEnable = (*volatile.Register16)(unsafe.Pointer(uintptr(0x4000208)))
|
||||
)
|
||||
|
||||
// Enable enables this interrupt. Right after calling this function, the
|
||||
|
@ -49,9 +49,9 @@ type State uint8
|
|||
// as you called Disable (this happens naturally with the pattern above).
|
||||
func Disable() (state State) {
|
||||
// Save the previous interrupt state.
|
||||
state = State(regInterruptMasterEnable.Get())
|
||||
state = State(regGlobalInterruptEnable.Get())
|
||||
// Disable all interrupts.
|
||||
regInterruptMasterEnable.Set(0)
|
||||
regGlobalInterruptEnable.Set(0)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -61,5 +61,5 @@ func Disable() (state State) {
|
|||
// cricital sections.
|
||||
func Restore(state State) {
|
||||
// Restore interrupts to the previous state.
|
||||
regInterruptMasterEnable.Set(uint16(state))
|
||||
regGlobalInterruptEnable.Set(uint16(state))
|
||||
}
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче