targets: simulate Circuit Playground Express in play.tinygo.org
This requires a number of changes to atsamd21 code. It's not a very clean separation, but I couldn't come up with a better one.
Этот коммит содержится в:
родитель
fa8a93b4e7
коммит
39d21e21f1
5 изменённых файлов: 122 добавлений и 114 удалений
2
Makefile
2
Makefile
|
@ -188,6 +188,8 @@ smoketest:
|
||||||
@$(MD5SUM) test.wasm
|
@$(MD5SUM) test.wasm
|
||||||
$(TINYGO) build -o test.wasm -tags=pca10056 examples/blinky2
|
$(TINYGO) build -o test.wasm -tags=pca10056 examples/blinky2
|
||||||
@$(MD5SUM) test.wasm
|
@$(MD5SUM) test.wasm
|
||||||
|
$(TINYGO) build -o test.wasm -tags=circuitplay_express examples/blinky1
|
||||||
|
@$(MD5SUM) test.wasm
|
||||||
# test all targets/boards
|
# test all targets/boards
|
||||||
$(TINYGO) build -size short -o test.hex -target=pca10040-s132v6 examples/blinky1
|
$(TINYGO) build -size short -o test.hex -target=pca10040-s132v6 examples/blinky1
|
||||||
@$(MD5SUM) test.hex
|
@$(MD5SUM) test.hex
|
||||||
|
|
73
src/machine/board_atsamd21.go
Обычный файл
73
src/machine/board_atsamd21.go
Обычный файл
|
@ -0,0 +1,73 @@
|
||||||
|
// +build sam,atsamd21 circuitplay_express
|
||||||
|
|
||||||
|
package machine
|
||||||
|
|
||||||
|
const CPU_FREQUENCY = 48000000
|
||||||
|
|
||||||
|
// Hardware pins
|
||||||
|
const (
|
||||||
|
PA00 Pin = 0
|
||||||
|
PA01 Pin = 1
|
||||||
|
PA02 Pin = 2
|
||||||
|
PA03 Pin = 3
|
||||||
|
PA04 Pin = 4
|
||||||
|
PA05 Pin = 5
|
||||||
|
PA06 Pin = 6
|
||||||
|
PA07 Pin = 7
|
||||||
|
PA08 Pin = 8
|
||||||
|
PA09 Pin = 9
|
||||||
|
PA10 Pin = 10
|
||||||
|
PA11 Pin = 11
|
||||||
|
PA12 Pin = 12
|
||||||
|
PA13 Pin = 13
|
||||||
|
PA14 Pin = 14
|
||||||
|
PA15 Pin = 15
|
||||||
|
PA16 Pin = 16
|
||||||
|
PA17 Pin = 17
|
||||||
|
PA18 Pin = 18
|
||||||
|
PA19 Pin = 19
|
||||||
|
PA20 Pin = 20
|
||||||
|
PA21 Pin = 21
|
||||||
|
PA22 Pin = 22
|
||||||
|
PA23 Pin = 23
|
||||||
|
PA24 Pin = 24
|
||||||
|
PA25 Pin = 25
|
||||||
|
PA26 Pin = 26
|
||||||
|
PA27 Pin = 27
|
||||||
|
PA28 Pin = 28
|
||||||
|
PA29 Pin = 29
|
||||||
|
PA30 Pin = 30
|
||||||
|
PA31 Pin = 31
|
||||||
|
PB00 Pin = 32
|
||||||
|
PB01 Pin = 33
|
||||||
|
PB02 Pin = 34
|
||||||
|
PB03 Pin = 35
|
||||||
|
PB04 Pin = 36
|
||||||
|
PB05 Pin = 37
|
||||||
|
PB06 Pin = 38
|
||||||
|
PB07 Pin = 39
|
||||||
|
PB08 Pin = 40
|
||||||
|
PB09 Pin = 41
|
||||||
|
PB10 Pin = 42
|
||||||
|
PB11 Pin = 43
|
||||||
|
PB12 Pin = 44
|
||||||
|
PB13 Pin = 45
|
||||||
|
PB14 Pin = 46
|
||||||
|
PB15 Pin = 47
|
||||||
|
PB16 Pin = 48
|
||||||
|
PB17 Pin = 49
|
||||||
|
PB18 Pin = 50
|
||||||
|
PB19 Pin = 51
|
||||||
|
PB20 Pin = 52
|
||||||
|
PB21 Pin = 53
|
||||||
|
PB22 Pin = 54
|
||||||
|
PB23 Pin = 55
|
||||||
|
PB24 Pin = 56
|
||||||
|
PB25 Pin = 57
|
||||||
|
PB26 Pin = 58
|
||||||
|
PB27 Pin = 59
|
||||||
|
PB28 Pin = 60
|
||||||
|
PB29 Pin = 61
|
||||||
|
PB30 Pin = 62
|
||||||
|
PB31 Pin = 63
|
||||||
|
)
|
|
@ -1,9 +1,7 @@
|
||||||
// +build sam,atsamd21,circuitplay_express
|
// +build circuitplay_express
|
||||||
|
|
||||||
package machine
|
package machine
|
||||||
|
|
||||||
import "device/sam"
|
|
||||||
|
|
||||||
// used to reset into bootloader
|
// used to reset into bootloader
|
||||||
const RESET_MAGIC_VALUE = 0xf01669ef
|
const RESET_MAGIC_VALUE = 0xf01669ef
|
||||||
|
|
||||||
|
@ -68,20 +66,6 @@ const (
|
||||||
UART_RX_PIN = PB09 // PORTB
|
UART_RX_PIN = PB09 // PORTB
|
||||||
)
|
)
|
||||||
|
|
||||||
// UART1 on the Circuit Playground Express.
|
|
||||||
var (
|
|
||||||
UART1 = UART{
|
|
||||||
Buffer: NewRingBuffer(),
|
|
||||||
Bus: sam.SERCOM4_USART,
|
|
||||||
SERCOM: 4,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
//go:export SERCOM1_IRQHandler
|
|
||||||
func handleUART1() {
|
|
||||||
defaultUART1Handler()
|
|
||||||
}
|
|
||||||
|
|
||||||
// I2C pins
|
// I2C pins
|
||||||
const (
|
const (
|
||||||
SDA_PIN = PB02 // I2C0 external
|
SDA_PIN = PB02 // I2C0 external
|
||||||
|
@ -91,20 +75,6 @@ const (
|
||||||
SCL1_PIN = PA01 // I2C1 internal
|
SCL1_PIN = PA01 // I2C1 internal
|
||||||
)
|
)
|
||||||
|
|
||||||
// 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 pins (internal flash)
|
// SPI pins (internal flash)
|
||||||
const (
|
const (
|
||||||
SPI0_SCK_PIN = PA21 // SCK: SERCOM3/PAD[3]
|
SPI0_SCK_PIN = PA21 // SCK: SERCOM3/PAD[3]
|
||||||
|
@ -112,22 +82,9 @@ const (
|
||||||
SPI0_MISO_PIN = PA16 // MISO: SERCOM3/PAD[0]
|
SPI0_MISO_PIN = PA16 // MISO: SERCOM3/PAD[0]
|
||||||
)
|
)
|
||||||
|
|
||||||
// SPI on the Circuit Playground Express.
|
|
||||||
var (
|
|
||||||
SPI0 = SPI{
|
|
||||||
Bus: sam.SERCOM3_SPI,
|
|
||||||
SERCOM: 3,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// I2S pins
|
// I2S pins
|
||||||
const (
|
const (
|
||||||
I2S_SCK_PIN = PA10
|
I2S_SCK_PIN = PA10
|
||||||
I2S_SD_PIN = PA08
|
I2S_SD_PIN = PA08
|
||||||
I2S_WS_PIN = NoPin // no WS, instead uses SCK to sync
|
I2S_WS_PIN = NoPin // no WS, instead uses SCK to sync
|
||||||
)
|
)
|
||||||
|
|
||||||
// I2S on the Circuit Playground Express.
|
|
||||||
var (
|
|
||||||
I2S0 = I2S{Bus: sam.I2S}
|
|
||||||
)
|
|
||||||
|
|
46
src/machine/board_circuitplay_express_baremetal.go
Обычный файл
46
src/machine/board_circuitplay_express_baremetal.go
Обычный файл
|
@ -0,0 +1,46 @@
|
||||||
|
// +build sam,atsamd21,circuitplay_express
|
||||||
|
|
||||||
|
package machine
|
||||||
|
|
||||||
|
import "device/sam"
|
||||||
|
|
||||||
|
// UART1 on the Circuit Playground Express.
|
||||||
|
var (
|
||||||
|
UART1 = UART{
|
||||||
|
Buffer: NewRingBuffer(),
|
||||||
|
Bus: sam.SERCOM4_USART,
|
||||||
|
SERCOM: 4,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:export SERCOM1_IRQHandler
|
||||||
|
func handleUART1() {
|
||||||
|
defaultUART1Handler()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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{
|
||||||
|
Bus: sam.SERCOM3_SPI,
|
||||||
|
SERCOM: 3,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// I2S on the Circuit Playground Express.
|
||||||
|
var (
|
||||||
|
I2S0 = I2S{Bus: sam.I2S}
|
||||||
|
)
|
|
@ -14,8 +14,6 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
const CPU_FREQUENCY = 48000000
|
|
||||||
|
|
||||||
type PinMode uint8
|
type PinMode uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -35,74 +33,6 @@ const (
|
||||||
PinInputPulldown PinMode = 12
|
PinInputPulldown PinMode = 12
|
||||||
)
|
)
|
||||||
|
|
||||||
// Hardware pins
|
|
||||||
const (
|
|
||||||
PA00 Pin = 0
|
|
||||||
PA01 Pin = 1
|
|
||||||
PA02 Pin = 2
|
|
||||||
PA03 Pin = 3
|
|
||||||
PA04 Pin = 4
|
|
||||||
PA05 Pin = 5
|
|
||||||
PA06 Pin = 6
|
|
||||||
PA07 Pin = 7
|
|
||||||
PA08 Pin = 8
|
|
||||||
PA09 Pin = 9
|
|
||||||
PA10 Pin = 10
|
|
||||||
PA11 Pin = 11
|
|
||||||
PA12 Pin = 12
|
|
||||||
PA13 Pin = 13
|
|
||||||
PA14 Pin = 14
|
|
||||||
PA15 Pin = 15
|
|
||||||
PA16 Pin = 16
|
|
||||||
PA17 Pin = 17
|
|
||||||
PA18 Pin = 18
|
|
||||||
PA19 Pin = 19
|
|
||||||
PA20 Pin = 20
|
|
||||||
PA21 Pin = 21
|
|
||||||
PA22 Pin = 22
|
|
||||||
PA23 Pin = 23
|
|
||||||
PA24 Pin = 24
|
|
||||||
PA25 Pin = 25
|
|
||||||
PA26 Pin = 26
|
|
||||||
PA27 Pin = 27
|
|
||||||
PA28 Pin = 28
|
|
||||||
PA29 Pin = 29
|
|
||||||
PA30 Pin = 30
|
|
||||||
PA31 Pin = 31
|
|
||||||
PB00 Pin = 32
|
|
||||||
PB01 Pin = 33
|
|
||||||
PB02 Pin = 34
|
|
||||||
PB03 Pin = 35
|
|
||||||
PB04 Pin = 36
|
|
||||||
PB05 Pin = 37
|
|
||||||
PB06 Pin = 38
|
|
||||||
PB07 Pin = 39
|
|
||||||
PB08 Pin = 40
|
|
||||||
PB09 Pin = 41
|
|
||||||
PB10 Pin = 42
|
|
||||||
PB11 Pin = 43
|
|
||||||
PB12 Pin = 44
|
|
||||||
PB13 Pin = 45
|
|
||||||
PB14 Pin = 46
|
|
||||||
PB15 Pin = 47
|
|
||||||
PB16 Pin = 48
|
|
||||||
PB17 Pin = 49
|
|
||||||
PB18 Pin = 50
|
|
||||||
PB19 Pin = 51
|
|
||||||
PB20 Pin = 52
|
|
||||||
PB21 Pin = 53
|
|
||||||
PB22 Pin = 54
|
|
||||||
PB23 Pin = 55
|
|
||||||
PB24 Pin = 56
|
|
||||||
PB25 Pin = 57
|
|
||||||
PB26 Pin = 58
|
|
||||||
PB27 Pin = 59
|
|
||||||
PB28 Pin = 60
|
|
||||||
PB29 Pin = 61
|
|
||||||
PB30 Pin = 62
|
|
||||||
PB31 Pin = 63
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
pinPadMapSERCOM0Pad0 byte = (0x10 << 1) | 0x00
|
pinPadMapSERCOM0Pad0 byte = (0x10 << 1) | 0x00
|
||||||
pinPadMapSERCOM1Pad0 byte = (0x20 << 1) | 0x00
|
pinPadMapSERCOM1Pad0 byte = (0x20 << 1) | 0x00
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче