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

Write MDIO to Switch checked on the scope.

parent 5be2058c
No related branches found
No related tags found
1 merge request!2Modified the scripts to run on Raspberry Pi.
# MDIO Interface to the ethernet Switch
import RPi.GPIO as GPIO
import time as time
ClockPin = 23
DataPin = 22
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)
phy_data = 0x16
phy_data_bits = "{:0>16b}".format(phy_reg)
stri = "Phy data bits is {}".format(phy_data_bits)
print(stri)
# Set IO pins to right mode
GPIO.setmode(GPIO.BCM)
GPIO.setup = (ClockPin, GPIO.OUT)
GPIO.setup = (DataPin, GPIO.OUT)
GPIO.setup(ClockPin, GPIO.OUT)
GPIO.setup(DataPin, GPIO.OUT)
# Preamble
GPIO.output(DataPin, GPIO.LOW)
GPIO.output(ClockPin, GPIO.LOW)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, False)
for preamble_cnt in range(32):
GPIO.output(ClockPin, GPIO.HIGH)
GPIO.output(ClockPin, GPIO.LOW)
GPIO.output(ClockPin, True)
# time.sleep(0.1)
GPIO.output(ClockPin, False)
# time.sleep(0.1)
# 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)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(DataPin, True)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, True)
# 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)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, True)
# 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)
if bit == '1':
GPIO.output(DataPin, True)
else:
GPIO.output(DataPin, GPIO.LOW)
GPIO.output(ClockPin, GPIO.HIGH)
GPIO.output(ClockPin, GPIO.LOW)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# 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)
if bit == '1':
GPIO.output(DataPin, True)
else:
GPIO.output(DataPin, GPIO.LOW)
GPIO.output(ClockPin, GPIO.HIGH)
GPIO.output(ClockPin, GPIO.LOW)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
# TA
GPIO.output(ClockPin, GPIO.HIGH)
GPIO.output(ClockPin, GPIO.LOW)
GPIO.output(ClockPin, GPIO.HIGH)
GPIO.output(ClockPin, GPIO.LOW)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
#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)
if bit == '1':
GPIO.output(DataPin, True)
else:
GPIO.output(DataPin, GPIO.LOW)
GPIO.output(ClockPin, GPIO.HIGH)
GPIO.output(ClockPin, GPIO.LOW)
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.cleanup()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment