si5340: implement paged register writes #65

Merged
sb10q merged 1 commits from fsagbuya/nix-servo:fix_i2cwrite into master 2024-07-31 17:32:09 +08:00
1 changed files with 12 additions and 3 deletions
Showing only changes of commit ed816517cf - Show all commits

View File

@ -35,6 +35,15 @@ STATUS_LOSREF = 0x04
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):
preamble = [
(0x0B24, 0xC0),
@ -45,7 +54,7 @@ def write_preamble(bus):
(0x0B4E, 0x1A),
]
for address, value in preamble:
bus.write_byte_data(IC_ADDR, address, value)
write_register(bus, address, value)
def write_postamble(bus):
postamble = [
@ -54,7 +63,7 @@ def write_postamble(bus):
(0x0B25, 0x02),
]
for address, value in postamble:
bus.write_byte_data(IC_ADDR, address, value)
write_register(bus, address, value)
def wait_device_ready(bus):
for _ in range(15):
@ -244,7 +253,7 @@ def configure_si5340():
print("Writing main configuration...")
for address, value in main_config:
bus.write_byte_data(IC_ADDR, address, value)
write_register(bus, address, value)
print("Main configuration written")
write_postamble(bus)