- Added devicetree overlay for VND7050AJ with GPIO and ADC configuration - Created custom devicetree binding for VND7050AJ valve controller - Implemented valve_get_supply_voltage() function with proper pin control: - RST=HIGH to enable VND7050AJ - S0=1, S1=1 for supply voltage sensing mode - SEN=1 to enable MULTISENSE output - ADC reading on PA0 (ADC1_IN1) with 12-bit resolution - Fixed supply voltage calculation (VCC/8 per datasheet) - Added comprehensive debug logging for all steps - Tested and verified ADC functionality - Current reading: 5.1V (may be limited by hardware power supply) Files modified: - software/lib/valve/valve.c: Main implementation - software/apps/slave_node/boards/weact_stm32g431_core.overlay: DT config - software/apps/slave_node/dts/bindings/vnd7050aj-valve-controller.yaml: DT binding - software/apps/slave_node/src/main.c: Test code - software/apps/slave_node/prj.conf: ADC driver enablement
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
#!/usr/bin/env python3
|
|
import serial
|
|
import time
|
|
import sys
|
|
|
|
def monitor_serial():
|
|
try:
|
|
# Open serial connection
|
|
ser = serial.Serial('/dev/ttyACM3', 115200, timeout=1)
|
|
print("Connected to /dev/ttyACM3")
|
|
|
|
# Send reset command
|
|
ser.write(b'reset\n')
|
|
print("Sent reset command")
|
|
|
|
# Wait a bit and then read output
|
|
time.sleep(0.5)
|
|
|
|
# Read output for 10 seconds
|
|
start_time = time.time()
|
|
while time.time() - start_time < 10:
|
|
if ser.in_waiting > 0:
|
|
data = ser.read(ser.in_waiting)
|
|
try:
|
|
text = data.decode('utf-8', errors='ignore')
|
|
print(text, end='')
|
|
except:
|
|
print(f"Raw bytes: {data}")
|
|
time.sleep(0.1)
|
|
|
|
ser.close()
|
|
print("\nSerial monitor closed")
|
|
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
sys.exit(1)
|
|
|
|
if __name__ == "__main__":
|
|
monitor_serial()
|