Skip to content
Snippets Groups Projects
Commit 110f86a6 authored by Gijs Schoonderbeek's avatar Gijs Schoonderbeek
Browse files

Added MDIO read function.

parent 6bf954bc
No related branches found
No related tags found
1 merge request!2Modified the scripts to run on Raspberry Pi.
......@@ -6,6 +6,8 @@ import time as time
ClockPin = 23
DataPin = 22
def write_mdio(wr_data=0x16):
print("write data")
phy_reg = 0x16
......@@ -18,7 +20,7 @@ phy_addr_bits = "{:0>5b}".format(phy_addr)
stri = "Phy addr bits is {}".format(phy_addr_bits)
print(stri)
phy_data = 0x16
phy_data = wr_data
phy_data_bits = "{:0>16b}".format(phy_reg)
stri = "Phy data bits is {}".format(phy_data_bits)
print(stri)
......@@ -43,15 +45,15 @@ GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(DataPin, True)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# Operant Write
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(DataPin, True)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# Phy address
for bit in phy_addr_bits:
......@@ -85,5 +87,86 @@ for bit in phy_data_bits:
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.cleanup()
def read_mdio():
print("write data")
phy_reg = 0x16
phy_reg_bits = "{:0>5b}".format(phy_reg)
stri = "Phy reg bits is {}".format(phy_reg_bits)
print(stri)
phy_addr = 0x1E
phy_addr_bits = "{:0>5b}".format(phy_addr)
stri = "Phy addr bits is {}".format(phy_addr_bits)
print(stri)
# Set IO pins to right mode
GPIO.setmode(GPIO.BCM)
GPIO.setup(ClockPin, GPIO.OUT)
GPIO.setup(DataPin, GPIO.OUT)
# Preamble
GPIO.output(DataPin, False)
GPIO.output(ClockPin, False)
for preamble_cnt in range(32):
GPIO.output(ClockPin, True)
# time.sleep(0.1)
GPIO.output(ClockPin, False)
# time.sleep(0.1)
# Start of Frame
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(DataPin, True)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# Operant Read
GPIO.output(DataPin, True)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# Phy address
for bit in phy_addr_bits:
if bit == '1':
GPIO.output(DataPin, True)
else:
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# phy reg
for bit in phy_reg_bits:
if bit == '1':
GPIO.output(DataPin, True)
else:
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.setup(DataPin, GPIO.IN)
# TA
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# data
data=[]
for bit in phy_data_bits:
GPIO.output(ClockPin, True)
data.append(GPIO.input(DataPin))
GPIO.output(ClockPin, False)
print(data)
GPIO.cleanup()
write_mdio(0x16)
read_mdio()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment