From 5be2058caace27841cd545c61560ff1be2ddbb72 Mon Sep 17 00:00:00 2001
From: GijsSchoonderbeek <schoonderbeek@astron.nl>
Date: Mon, 17 May 2021 14:37:52 +0200
Subject: [PATCH] First script for testing the MDIO interface to access the
 Switch registers.

---
 mdio.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 mdio.py

diff --git a/mdio.py b/mdio.py
new file mode 100644
index 0000000..d3d022d
--- /dev/null
+++ b/mdio.py
@@ -0,0 +1,77 @@
+# MDIO Interface to the ethernet Switch
+
+import RPi.GPIO as GPIO
+
+ClockPin =23
+DataPin = 22
+
+GPIO.setmode(GPIO.BCM)
+GPIO.setup = (ClockPin, GPIO.OUT)
+GPIO.setup = (DataPin, GPIO.OUT)
+
+# Preamble
+GPIO.output(DataPin, GPIO.LOW)
+GPIO.output(ClockPin, GPIO.LOW)
+for preamble_cnt in range(32):
+    GPIO.output(ClockPin, GPIO.HIGH)
+    GPIO.output(ClockPin, GPIO.LOW)
+
+# Start of Frame
+GPIO.output(DataPin, GPIO.LOW)
+GPIO.output(ClockPin, GPIO.HIGH)
+GPIO.output(ClockPin, GPIO.LOW)
+GPIO.output(DataPin, GPIO.LOW)
+GPIO.output(ClockPin, GPIO.HIGH)
+GPIO.output(ClockPin, GPIO.HIGH)
+
+# Operant Write
+GPIO.output(DataPin, GPIO.LOW)
+GPIO.output(ClockPin, GPIO.HIGH)
+GPIO.output(ClockPin, GPIO.LOW)
+GPIO.output(DataPin, GPIO.LOW)
+GPIO.output(ClockPin, GPIO.HIGH)
+GPIO.output(ClockPin, GPIO.HIGH)
+
+# Phy address
+phy_addr = 0x1E
+phy_addr_bits = "{:0>5b}".format(phy_addr)
+for bit in phy_addr_bits:
+    if bit:
+        GPIO.output(DataPin, GPIO.HIGH)
+    else:
+        GPIO.output(DataPin, GPIO.LOW)
+    GPIO.output(ClockPin, GPIO.HIGH)
+    GPIO.output(ClockPin, GPIO.LOW)
+
+# phy reg
+phy_reg = 0x16
+phy_reg_bits = "{:0>5b}".format(phy_reg)
+for bit in phy_reg_bits:
+    if bit:
+        GPIO.output(DataPin, GPIO.HIGH)
+    else:
+        GPIO.output(DataPin, GPIO.LOW)
+    GPIO.output(ClockPin, GPIO.HIGH)
+    GPIO.output(ClockPin, GPIO.LOW)
+
+# TA
+GPIO.output(ClockPin, GPIO.HIGH)
+GPIO.output(ClockPin, GPIO.LOW)
+GPIO.output(ClockPin, GPIO.HIGH)
+GPIO.output(ClockPin, GPIO.LOW)
+
+#data
+phy_data = 0x16
+phy_data_bits = "{:0>16b}".format(phy_reg)
+for bit in phy_data_bits:
+    if bit:
+        GPIO.output(DataPin, GPIO.HIGH)
+    else:
+        GPIO.output(DataPin, GPIO.LOW)
+    GPIO.output(ClockPin, GPIO.HIGH)
+    GPIO.output(ClockPin, GPIO.LOW)
+
+
+
+
+GPIO.cleanup()
\ No newline at end of file
-- 
GitLab