Files
drivers/si5351/registers.go
T

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
)