mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-12 02:43:42 +00:00
e472cf88c8
Signed-off-by: deadprogram <ron@hybridgroup.com>
123 lines
2.1 KiB
Go
123 lines
2.1 KiB
Go
package si5351
|
|
|
|
// The I2C address which this device listens to.
|
|
const AddressDefault = 0x60 // Assumes ADDR pin is low
|
|
const AddressAlternative = 0x61 // Assumes ADDR pin is high
|
|
|
|
const (
|
|
OUTPUT_ENABLE_CONTROL = 3
|
|
|
|
CLK0_CONTROL = 16
|
|
CLK1_CONTROL = 17
|
|
CLK2_CONTROL = 18
|
|
CLK3_CONTROL = 19
|
|
CLK4_CONTROL = 20
|
|
CLK5_CONTROL = 21
|
|
CLK6_CONTROL = 22
|
|
CLK7_CONTROL = 23
|
|
|
|
MULTISYNTH0_PARAMETERS_1 = 42
|
|
MULTISYNTH0_PARAMETERS_3 = 44
|
|
MULTISYNTH1_PARAMETERS_1 = 50
|
|
MULTISYNTH1_PARAMETERS_3 = 52
|
|
MULTISYNTH2_PARAMETERS_1 = 58
|
|
MULTISYNTH2_PARAMETERS_3 = 60
|
|
|
|
SPREAD_SPECTRUM_PARAMETERS = 149
|
|
|
|
PLL_RESET = 177
|
|
|
|
CRYSTAL_INTERNAL_LOAD_CAPACITANCE = 183
|
|
|
|
FANOUT_ENABLE = 187
|
|
)
|
|
|
|
const (
|
|
CRYSTAL_LOAD_6PF = (1 << 6)
|
|
CRYSTAL_LOAD_8PF = (2 << 6)
|
|
CRYSTAL_LOAD_10PF = (3 << 6)
|
|
)
|
|
|
|
const (
|
|
CRYSTAL_FREQ_25MHZ = 25000000
|
|
CRYSTAL_FREQ_27MHZ = 27000000
|
|
)
|
|
|
|
const (
|
|
PLL_A = iota
|
|
PLL_B
|
|
)
|
|
|
|
const (
|
|
R_DIV_1 = iota
|
|
R_DIV_2
|
|
R_DIV_4
|
|
R_DIV_8
|
|
R_DIV_16
|
|
R_DIV_32
|
|
R_DIV_64
|
|
R_DIV_128
|
|
)
|
|
|
|
const (
|
|
MULTISYNTH_DIV_4 = 4
|
|
MULTISYNTH_DIV_6 = 6
|
|
MULTISYNTH_DIV_8 = 8
|
|
)
|
|
|
|
// Frequency constants (in Hz)
|
|
const (
|
|
CLKOUT_MIN_FREQ = 8000 // 8 kHz
|
|
CLKOUT_MAX_FREQ = 150000000 // 150 MHz
|
|
MULTISYNTH_MAX_FREQ = 150000000 // 150 MHz
|
|
MULTISYNTH_SHARE_MAX = 100000000 // 100 MHz
|
|
MULTISYNTH_DIVBY4_FREQ = 150000000 // 150 MHz
|
|
PLL_VCO_MIN = 600000000 // 600 MHz
|
|
PLL_VCO_MAX = 900000000 // 900 MHz
|
|
)
|
|
|
|
const (
|
|
SI5351_PLL_C_MAX = 1048575
|
|
)
|
|
|
|
// Bit masks for FANOUT_ENABLE register
|
|
const (
|
|
CLKIN_ENABLE = (1 << 7)
|
|
XTAL_ENABLE = (1 << 6)
|
|
MULTISYNTH_ENABLE = (1 << 4)
|
|
)
|
|
|
|
const (
|
|
FANOUT_CLKIN = iota
|
|
FANOUT_XO
|
|
FANOUT_MS
|
|
)
|
|
|
|
// Clock source selection masks for CLKx_CONTROL registers
|
|
const (
|
|
CLK_INPUT_MASK = 0x3 // Bits 0 and 1
|
|
CLK_INPUT_XTAL = 0x0
|
|
CLK_INPUT_CLKIN = 0x1
|
|
CLK_INPUT_MULTISYNTH_0_4 = 0x2
|
|
CLK_INPUT_MULTISYNTH_N = 0x3
|
|
)
|
|
|
|
// Clock source selection
|
|
const (
|
|
CLK_SRC_XTAL = iota
|
|
CLK_SRC_CLKIN
|
|
CLK_SRC_MS0
|
|
CLK_SRC_MS
|
|
)
|
|
|
|
const (
|
|
CLK_INVERT = 1 << 4
|
|
)
|
|
|
|
const (
|
|
CLK_DRIVE_STRENGTH_2MA = 0
|
|
CLK_DRIVE_STRENGTH_4MA = 1
|
|
CLK_DRIVE_STRENGTH_6MA = 2
|
|
CLK_DRIVE_STRENGTH_8MA = 3
|
|
)
|