From 88b1866fcc1c6be5ca6b342e97fe0b8957da248f Mon Sep 17 00:00:00 2001 From: Hector Martin Date: Sun, 16 Apr 2023 20:52:06 +0900 Subject: [PATCH] experiments/spi.py: Cleanup/updates Signed-off-by: Hector Martin --- proxyclient/experiments/spi.py | 139 +++++++++------------------------ 1 file changed, 37 insertions(+), 102 deletions(-) diff --git a/proxyclient/experiments/spi.py b/proxyclient/experiments/spi.py index 82d9528bb..6ce607183 100644 --- a/proxyclient/experiments/spi.py +++ b/proxyclient/experiments/spi.py @@ -9,126 +9,72 @@ p.smp_start_secondaries() -p.set32(0x28e580208, 1<<31) -p.clear32(0x28e580208, 1<<31) - -spi = u.adt["arm-io/spi3"].get_reg(0)[0] +spi = u.adt["arm-io/spi2"].get_reg(0)[0] + 0x8000 regs = SPIRegs(u, spi) -mon.add(spi, 0x10) -mon.add(spi + 0x30, 0x10) -mon.add(spi + 0x40, 0x400) - aic = u.adt["arm-io/aic"].get_reg(0)[0] -mon.add(aic + 0x6800 + (1109 // 32) * 4, 4) gpio = u.adt["arm-io/gpio0"].get_reg(0)[0] +count = u.adt["arm-io/gpio0"].getprop("#gpio-pins") -mon.add(gpio, 0x1c8) -mon.add(gpio+0x1e0, 0x300) - -mon.poll() +pins={} +for i in range(150, 150+32): + pins[f"pin{i}"] = i m = GPIOLogicAnalyzer(u, "arm-io/gpio0", - pins={"miso": 0x34, "mosi": 0x35, "clk": 0x36, "cs": 0x37}, - #pins={"miso": 0xa, "mosi": 0xb, "clk": 0x20, "cs": 0x21}, - #pins={"clk": 46, "mosi": 47, "miso": 48, "cs": 49}, - div=1, on_pin_change=False) - -#p.write32(spi + 0x100, 0xffffffff) + pins=pins, + regs={"a": gpio}, + div=1, + cpu=1, + on_pin_change=True, + on_reg_change=False) regs.CTRL.val = 0xc regs.PIN.val = 0x2 -regs.CONFIG.val = 0x20 | (1<<15) | 6 -regs.CONFIG.val = 0x20 | (1<<15) | 4 -regs.CONFIG.val = 0x20 | (1<<15) | 2 -regs.CONFIG.val = 0x20 | (3<<15) | 0 - -def try_all_bits(): - for i in range(0, 0x200, 4): - v = p.read32(spi + i) - for j in range(32): - p.write32(spi + i, v ^ (1< 0x100: break time.sleep(0.001) - print(f"{regs.RXCNT.val:#x} {regs.FIFO_STAT.reg} {regs.STATUS.val:#x} {regs.ISTATUS2.val:#x}") + print(f"{regs.RXCNT.val:#x} {regs.FIFOSTAT.reg} {regs.STATUS.val:#x} {regs.IF_FIFO.val:#x}") regs.STATUS.val = 0xffffffff - regs.ISTATUS1.val = 0xffffffff - regs.ISTATUS2.val = 0xffffffff + regs.IF_XFER.val = 0xffffffff + regs.IF_FIFO.val = 0xffffffff mon.poll() - while regs.FIFO_STAT.reg.LEVEL_RX: + while regs.FIFOSTAT.reg.LEVEL_RX: print("RX", hex(regs.RXDATA.val)) regs.CTRL.val = 0 @@ -166,17 +112,6 @@ def try_all_bits(): m.complete() m.show() -def poll(count=1000): - lval = None - for i in range(count): - pins = 0x35, 0x36, 0x37 - vals = [p.read32(gpio + 4 * pin) & 1 for pin in pins] - if vals != lval: - print(f"{i:6d}: {vals}") - lval = vals - -mon.poll() - #run_shell(globals(), msg="Have fun!")