Last active
July 30, 2025 05:19
-
-
Save anecdata/8fe5aa2a11147fa117f71bd84a0f1712 to your computer and use it in GitHub Desktop.
CircuitPython SPITarget pin finder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPITarget pin finder | |
# e.g., SPITarget(sck=board.D12, mosi=board.D13, miso=board.D11, ss=board.D10) | |
# modified from an old SPI pin finder, probably _somewhere_ in the Adafruit docs | |
import board | |
import busio | |
from microcontroller import Pin | |
from spitarget import SPITarget | |
def is_hardware_spit(clk, mosi, miso, ss): | |
try: | |
p = SPITarget(sck=clk, mosi=mosi, miso=miso, ss=ss) | |
p.deinit() | |
return True | |
except ValueError: | |
return False | |
def get_unique_pins(): | |
exclude = ['NEOPIXEL', 'APA102_MOSI', 'APA102_SCK'] | |
pins = [pin for pin in [ | |
getattr(board, p) for p in dir(board) if p not in exclude] | |
if isinstance(pin, Pin)] | |
unique = [] | |
for p in pins: | |
if p not in unique: | |
unique.append(p) | |
return unique | |
pins = get_unique_pins() | |
for clk_pin in pins: | |
for mosi_pin in pins: | |
for miso_pin in pins: | |
for ss_pin in pins: | |
pin_set = {clk_pin, mosi_pin, miso_pin, ss_pin} # set() | |
if len(pin_set) < 4: | |
continue | |
if is_hardware_spit(clk_pin, mosi_pin, miso_pin, ss_pin): | |
print(f"sck={clk_pin}, mosi={mosi_pin}, miso={miso_pin}, ss={ss_pin}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment