github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/src/machine/machine_nrf52.go (about)

     1  //go:build nrf52
     2  
     3  package machine
     4  
     5  import (
     6  	"device/nrf"
     7  )
     8  
     9  // Hardware pins
    10  const (
    11  	P0_00 Pin = 0
    12  	P0_01 Pin = 1
    13  	P0_02 Pin = 2
    14  	P0_03 Pin = 3
    15  	P0_04 Pin = 4
    16  	P0_05 Pin = 5
    17  	P0_06 Pin = 6
    18  	P0_07 Pin = 7
    19  	P0_08 Pin = 8
    20  	P0_09 Pin = 9
    21  	P0_10 Pin = 10
    22  	P0_11 Pin = 11
    23  	P0_12 Pin = 12
    24  	P0_13 Pin = 13
    25  	P0_14 Pin = 14
    26  	P0_15 Pin = 15
    27  	P0_16 Pin = 16
    28  	P0_17 Pin = 17
    29  	P0_18 Pin = 18
    30  	P0_19 Pin = 19
    31  	P0_20 Pin = 20
    32  	P0_21 Pin = 21
    33  	P0_22 Pin = 22
    34  	P0_23 Pin = 23
    35  	P0_24 Pin = 24
    36  	P0_25 Pin = 25
    37  	P0_26 Pin = 26
    38  	P0_27 Pin = 27
    39  	P0_28 Pin = 28
    40  	P0_29 Pin = 29
    41  	P0_30 Pin = 30
    42  	P0_31 Pin = 31
    43  )
    44  
    45  // Get peripheral and pin number for this GPIO pin.
    46  func (p Pin) getPortPin() (*nrf.GPIO_Type, uint32) {
    47  	return nrf.P0, uint32(p)
    48  }
    49  
    50  func (uart *UART) setPins(tx, rx Pin) {
    51  	nrf.UART0.PSELTXD.Set(uint32(tx))
    52  	nrf.UART0.PSELRXD.Set(uint32(rx))
    53  }
    54  
    55  func (i2c *I2C) setPins(scl, sda Pin) {
    56  	i2c.Bus.PSELSCL.Set(uint32(scl))
    57  	i2c.Bus.PSELSDA.Set(uint32(sda))
    58  }
    59  
    60  // PWM
    61  var (
    62  	PWM0 = &PWM{PWM: nrf.PWM0}
    63  	PWM1 = &PWM{PWM: nrf.PWM1}
    64  	PWM2 = &PWM{PWM: nrf.PWM2}
    65  )
    66  
    67  const eraseBlockSizeValue = 4096
    68  
    69  func eraseBlockSize() int64 {
    70  	return eraseBlockSizeValue
    71  }