import spidev from util import * from receive import receive_packet debug = True GDO0_PIN=17 GDO2_PIN=27 def menu(): print("\nMenu") print("1: Read Reg by name") print("2: Write reg hex value by name") print("3: Dump registers") print("4: Poll for packets") print("5: Run Read+Write test") print("6: Print GDO state") print("0: Quit") if __name__ == "__main__": init_gpio(GDO0_PIN, GDO2_PIN) spi = spidev.SpiDev() spi.open(0, 0) # Bus 0, CE0 (Pin 24) # spi.max_speed_hz = 8_000_000 # Safe start speed spi.max_speed_hz = 100_000 # Safe start speed spi.mode = 0b00 # SPI mode 0 stop = False print_gdo_state(GDO0_PIN, GDO2_PIN) # print("Sending SRES (reset)...") spi.xfer2([SRES]) sleep(0.5) # print("Sending SNOP (no-op)...") status = spi.xfer2([SNOP])[0] print(f"Status byte: 0x{status:02X}") # print("Reading MARCSTATE...") marc = spi.xfer2([MARCSTATE| 0x80, 0x00])[0] print(f"Marcstate byte: 0x{marc:02X}") print("Reading VERSION register...") version = read_register(spi, VERSION) print(f"CC2500 VERSION register: 0x{version:02X}") reg_name = "" reg_hex_val = "" try: # if version != 0x0F: # raise Exception("Expected Version was 0x0F!! Quitting") test_read_write_reg(spi) init_regs(spi) while not stop: menu() cmd = int(input("$: ")) if cmd == 0: stop=True elif cmd == 1: reg_name = input("Register name: ") addr = get_addr(reg_name) value = read_register(spi,addr) print("Address: " + hex(addr)+ ", Value: " + hex(value) +" == " + str(value)) elif cmd == 2: reg_name = input("Register name: ") addr = get_addr(reg_name) value = int(input("New Register value (hex): "),16) write_reg(spi, addr, value) sleep(0.1) value_check = read_register(spi,addr) print("Updated Value: " + hex(value) +" == " + str(value)) elif cmd == 3: dump_regs(spi, True) elif cmd == 4: receive_packet(spi) elif cmd == 5: res = test_read_write_reg(spi, True) print("Test result : "+str(res)) elif cmd == 6: print_gdo_state(GDO0_PIN, GDO2_PIN) else: print("Invalid command") finally: print("Closing SPI...") sleep(0.1) spi.close() sleep(0.1)