forked from ShunFang-cart/ESP
67 lines
1.4 KiB
Python
67 lines
1.4 KiB
Python
from machine import UART, Pin
|
|
import time
|
|
|
|
CANDIDATES = [4, 12, 13, 14, 16, 17, 21, 22, 23, 25, 26, 27, 32, 33]
|
|
|
|
BAUDRATES = [921600]
|
|
|
|
HEADER = 0x55 # IMU WIT frame header
|
|
|
|
def test_uart(rx, tx, baud):
|
|
try:
|
|
uart = UART(
|
|
2,
|
|
baudrate=baud,
|
|
rx=Pin(rx),
|
|
tx=Pin(tx),
|
|
timeout=100,
|
|
rxbuf=1024
|
|
)
|
|
|
|
time.sleep(0.1)
|
|
|
|
start = time.ticks_ms()
|
|
samples = []
|
|
|
|
while time.ticks_diff(time.ticks_ms(), start) < 1000:
|
|
if uart.any():
|
|
data = uart.read()
|
|
if data:
|
|
samples.append(data)
|
|
|
|
uart.deinit()
|
|
|
|
# 合并所有数据
|
|
if samples:
|
|
merged = b''.join(samples)
|
|
|
|
print(f"\nRX={rx}, TX={tx}, BAUD={baud}")
|
|
print("RAW HEX:", merged[:80]) # 前80字节
|
|
print("HEX:", merged[:80].hex())
|
|
|
|
return merged
|
|
else:
|
|
return b""
|
|
|
|
except Exception as e:
|
|
return b""
|
|
|
|
print("=== UART PIN SCAN START ===")
|
|
|
|
best = (0, None, None, None)
|
|
|
|
for rx in CANDIDATES:
|
|
for tx in CANDIDATES:
|
|
if rx == tx:
|
|
continue
|
|
|
|
for baud in BAUDRATES:
|
|
c, t = test_uart(rx, tx, baud)
|
|
|
|
print(f"RX={rx}, TX={tx}, BAUD={baud} -> 0x55={c}, bytes={t}")
|
|
|
|
if c > best[0]:
|
|
best = (c, rx, tx, baud)
|
|
|
|
print("\n=== BEST MATCH ===")
|
|
print(best) |