all: changeover to eliminate all direct use of master/slave terminology

Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
deadprogram 2020-07-07 18:52:27 +02:00 коммит произвёл Ayke
родитель 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))
}