si5340: implement paged register writes #65
|
@ -35,6 +35,15 @@ STATUS_LOSREF = 0x04
|
||||||
STATUS_LOL = 0x08
|
STATUS_LOL = 0x08
|
||||||
|
|
||||||
|
|
||||||
|
def write_register(bus, address, value):
|
||||||
|
page = address >> 8
|
||||||
|
register = address & 0xFF
|
||||||
|
bus.write_byte_data(IC_ADDR, 0x01, page)
|
||||||
|
try:
|
||||||
|
bus.write_byte_data(IC_ADDR, register, value)
|
||||||
|
except Exception as e:
|
||||||
|
raise Exception(f"Write failed 0x{value:02X} at 0x{address:04X}: {e}")
|
||||||
|
|
||||||
def write_preamble(bus):
|
def write_preamble(bus):
|
||||||
preamble = [
|
preamble = [
|
||||||
(0x0B24, 0xC0),
|
(0x0B24, 0xC0),
|
||||||
|
@ -45,7 +54,7 @@ def write_preamble(bus):
|
||||||
(0x0B4E, 0x1A),
|
(0x0B4E, 0x1A),
|
||||||
]
|
]
|
||||||
for address, value in preamble:
|
for address, value in preamble:
|
||||||
bus.write_byte_data(IC_ADDR, address, value)
|
write_register(bus, address, value)
|
||||||
|
|
||||||
def write_postamble(bus):
|
def write_postamble(bus):
|
||||||
postamble = [
|
postamble = [
|
||||||
|
@ -54,7 +63,7 @@ def write_postamble(bus):
|
||||||
(0x0B25, 0x02),
|
(0x0B25, 0x02),
|
||||||
]
|
]
|
||||||
for address, value in postamble:
|
for address, value in postamble:
|
||||||
bus.write_byte_data(IC_ADDR, address, value)
|
write_register(bus, address, value)
|
||||||
|
|
||||||
def wait_device_ready(bus):
|
def wait_device_ready(bus):
|
||||||
for _ in range(15):
|
for _ in range(15):
|
||||||
|
@ -244,7 +253,7 @@ def configure_si5340():
|
||||||
|
|
||||||
print("Writing main configuration...")
|
print("Writing main configuration...")
|
||||||
for address, value in main_config:
|
for address, value in main_config:
|
||||||
bus.write_byte_data(IC_ADDR, address, value)
|
write_register(bus, address, value)
|
||||||
print("Main configuration written")
|
print("Main configuration written")
|
||||||
|
|
||||||
write_postamble(bus)
|
write_postamble(bus)
|
||||||
|
|
Loading…
Reference in New Issue