Skip to content
Snippets Groups Projects

Modified the scripts to run on Raspberry Pi.

1 file
+ 153
70
Compare changes
  • Side-by-side
  • Inline
+ 153
70
@@ -6,84 +6,167 @@ 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)
# Preamble
GPIO.output(DataPin, False)
GPIO.output(ClockPin, False)
for preamble_cnt in range(32):
def write_mdio(wr_data=0x16):
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 = wr_data
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)
# 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)
# 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, True)
# Operant Write
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
for bit in phy_addr_bits:
if bit == '1':
GPIO.output(DataPin, True)
else:
GPIO.output(DataPin, False)
GPIO.output(DataPin, True)
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)
# Operant Write
GPIO.output(DataPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(DataPin, True)
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)
# TA
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
#data
for bit in phy_data_bits:
if bit == '1':
GPIO.output(DataPin, True)
else:
GPIO.output(DataPin, 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)
# TA
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.output(ClockPin, True)
GPIO.output(ClockPin, False)
GPIO.cleanup()
\ No newline at end of file
#data
for bit in phy_data_bits:
if bit == '1':
GPIO.output(DataPin, True)
else:
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()
Loading