diff --git a/mdio.py b/mdio.py index d3d022d20dd5136796641da413dadc44fb475ce1..553fee93fecfb9d303dd0be0658003bdd5e20ee3 100644 --- a/mdio.py +++ b/mdio.py @@ -1,77 +1,89 @@ # MDIO Interface to the ethernet Switch import RPi.GPIO as GPIO +import time as time -ClockPin =23 +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