Files
xblink/docs/STATUS.md
michael db492050e3 Add hall sensor circuit design, NTAG5 config check tool, I2C bus docs
- Hall sensor + LP5562 EN wired-AND circuit design (DRV5032FB/FE,
  1M pull-up, open-drain topology) with three interaction modes:
  boot-time recovery, tap-to-swap, hold-to-confirm recovery
- NTAG5 config check tool (tools/ntag5_config_check.py) using
  uFCoder library for ISO15693 transparent mode via uFR Zero reader.
  Supports inventory + addressed mode for multi-tag fields.
- Updated DEVELOPMENT_PLAN with I2C bus management notes for
  LP5562 (0x30) + NTAG5Link (0x54) shared bus
- Updated README with wired-AND hardware diagram, hall sensor
  interaction section, and updated wiring table
- Updated CLAUDE.md with LP5562 EN wired-AND topology docs
- Updated STATUS.md with hall sensor decisions and hardware inventory

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 14:06:11 -08:00

5.0 KiB

xblink Project Status

Current Milestone: M1 — LED Smoke Test (code ready, needs USB cable to flash) Last Updated: 2026-03-03


Phase 0 — Project Setup (COMPLETE)

  • Initialize git repository and Rust project
  • Configure build target (thumbv6m-none-eabi)
  • Create project documentation (README, CLAUDE.md, STATUS, DEVELOPMENT_PLAN)
  • Verify cargo build --release compiles
  • Initial git commit

Group A — LP5562 Only

Hardware needed: XIAO M0 + LP5562EVM + mini-USB cable

M1: LED Smoke Test

  • Copy LP5562 driver from ../ntag5-samd21-lp562/src/lp5562.rs
  • Create src/led/mod.rs with re-exports
  • Update main.rs with I2C init + GPIO EN + LP5562 direct PWM test
  • Verify cargo build --release compiles
  • Flash and verify RGBW LED channels on LP5562EVM

M2: Engine Patterns

  • Build breathing pattern (1 engine, ramp up/down, branch loop)
  • Build heartbeat pattern (1 engine, fast ramp, slow decay)
  • Build RGB color cycle (3 engines, trigger sync)
  • Verify LP5562 runs patterns autonomously (MCU idle loop)
  • Verify MCU can stop and switch patterns

M3: Hardcoded Pattern Library

  • Define 4-5 const patterns in firmware
  • Implement pattern selector (compile-time or boot-cycle)
  • Reduce LED current to 2-5mA/ch (EH-realistic budget)
  • Document actual engine program structures (informs M5 format design)

Hardware needed: + NTAG5Link Click board + I2C jumper

M4: NTAG5 EEPROM Read/Write

  • Write Ntag5Link<I2C> driver (src/ntag5/mod.rs)
  • Implement register map (src/ntag5/registers.rs)
  • Implement EEPROM block read/write
  • Implement session register access
  • Test round-trip: PCSC writes EEPROM, MCU reads back, displays on LEDs

M5: Boot-from-EEPROM

  • Design binary pattern format (informed by M2-M3 experience)
  • Implement pattern deserializer (src/pattern/mod.rs)
  • Implement engine program builder (src/pattern/engine.rs)
  • Update main.rs: boot → read EEPROM → parse → program LP5562 → idle
  • Write Python serializer tool for PCSC pattern uploads

M6: SRAM Mailbox

  • Implement SRAM read/write (src/ntag5/sram.rs)
  • Design command/response protocol
  • Implement MCU-side protocol handler
  • Test pattern update via NFC without power-cycling

Group C — Power + Recovery

Hardware needed: + Hall sensor + multimeter

M7: Sleep/Wake

  • Configure SAMD21 EIC for FD pin wake
  • Implement STANDBY sleep after LP5562 programming
  • Verify LP5562 keeps running during MCU sleep
  • Measure current: active vs standby vs total system

M8: Recovery Mode

  • Wire hall sensor to EIC-capable GPIO
  • Implement boot-time hall sensor check
  • Recovery: load default pattern, skip EEPROM, stay awake
  • Test with magnet

M9: Power Characterization

  • Measure current at various LED current settings
  • Test NTAG5Link EH output with phone NFC
  • Find optimal brightness vs EH budget balance
  • Document real power numbers

Group D — Abstraction + Polish

M10: LedController Trait

  • Define trait based on proven usage patterns from Groups A-C
  • Implement for LP5562 wrapper
  • Refactor main.rs to trait-based API

M11: SimplePwm Driver

  • Implement only if single-color LED hardware is available

Group E — Future

Custom PCB (SAMD21E)

  • Port to atsamd-hal with samd21e feature
  • Custom memory.x linker script
  • PCB design and fabrication

Companion App (React Native)

  • NFC communication + pattern editor + upload

Firmware Update (NFC OTA)

  • Custom bootloader if needed post-implant

Open Questions

Question Status Notes
Energy harvesting power budget TBD Multimeter measurements in M9
Optimal LED current per channel TBD Probably 2-5mA/ch, verify in M9
Firmware update strategy Deferred UF2 for dev, NFC OTA evaluated later
NTAG5Link I2C slave address Assumed 0x54 Verify in M4 with Click board
Pattern binary format Deferred to M5 Design after M2-M3 engine experience
Hall sensor + EN circuit Designed Wired-AND: hall + MCU open-drain on EN with 1M pull-up. See docs/plans/2026-03-03-hall-en-design.md
Hall sensor part selection Decided DRV5032FB (SOT-23, 8.4mT, prototype) → DRV5032FE (X2SON 1x1mm, final PCB)
EN pull-up value Decided 1M — zero steady-state draw, 3µA when EN low, ~10µs rise time

Hardware Inventory

Item Status Notes
Seeed XIAO M0 Available Dev board MCU (SAMD21G18A)
LP5562EVM Available TI eval module, RGBW LEDs, I2C addr 0x30
Mini-USB cable Not on hand Needed to flash XIAO M0
NTAG5 Link Click Available, partially wired Missing I2C jumper to XIAO
Hall effect sensor Not available Need to source — TI DRV5032FB (SOT-23) for prototype
ACR1552 PCSC reader Available For ntag5sensor Python tooling
Multimeter Available For power budget measurements