|
def init_w5500(ip, subnet, gateway, dns):
##SPI0
SPI0_SCK = board.GP18
SPI0_TX = board.GP19
SPI0_RX = board.GP16
SPI0_CSn = board.GP17
##reset
W5x00_RSTn = board.GP20
print("Wiznet5k Ping Test (no DHCP)")
ethernetRst = digitalio.DigitalInOut(W5x00_RSTn)
ethernetRst.direction = digitalio.Direction.OUTPUT
# For Adafruit Ethernet FeatherWing
cs = digitalio.DigitalInOut(SPI0_CSn)
# For Particle Ethernet FeatherWing
# cs = digitalio.DigitalInOut(board.D5)
spi_bus = busio.SPI(SPI0_SCK, MOSI=SPI0_TX, MISO=SPI0_RX)
# Reset W5500 first
ethernetRst.value = False
time.sleep(1)
ethernetRst.value = True
# Initialize ethernet interface without DHCP
eth = WIZNET5K(spi_bus, cs, is_dhcp=False)
# Set network configuration
eth.ifconfig = (ip, subnet, gateway, dns)
print("Chip Version:", eth.chip)
print("My IP address is:", eth.pretty_ip(eth.ip_address))
return eth
def disp_w5500():
clear_disp()
display.fill(1)
cst = "chip version:" + eth.chip
display.text(cst, 0, 0, 0)
cst = "ip:" + eth.pretty_ip(eth.ip_address)
display.text(cst, 0, 10, 0)
cst = "mac:" + eth.pretty_mac(eth.mac_address)
display.text(cst, 0, 20, 0)
display.show()
# 测试基础任务一
import time
import board
import busio
import digitalio
import array
import struct
import adafruit_sharpmemorydisplay
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket
IP_ADDRESS = (192, 168, 1, 100)
SUBNET_MASK = (255, 255, 255, 0)
GATEWAY_ADDRESS = (192, 168, 1, 1)
DNS_SERVER = (218, 203, 59, 116)
def init():
led = digitalio.DigitalInOut(board.GP25)
led.direction = digitalio.Direction.OUTPUT
# Initialize SPI bus and control pins
spi = busio.SPI(board.GP14, MOSI=board.GP15)
scs = digitalio.DigitalInOut(board.GP13) # inverted chip select
# pass in the display size, width and height, as well
# display = adafruit_sharpmemorydisplay.SharpMemoryDisplay(spi, scs, 96, 96)
display = adafruit_sharpmemorydisplay.SharpMemoryDisplay(spi, scs, 144, 168)
return led,display
def led_flush():
led.value = not led.value
time.sleep(0.5)
def clear_disp():
# Clear the display. Always call show after changing pixels to make the display
# update visible!
display.fill(1)
display.show()
def disp_helloworld():
print("hello world")
display.fill(1)
display.text(" hello world!", 30, 50, 0)
display.show()
def init_w5500(ip, subnet, gateway, dns):
##SPI0
SPI0_SCK = board.GP18
SPI0_TX = board.GP19
SPI0_RX = board.GP16
SPI0_CSn = board.GP17
##reset
W5x00_RSTn = board.GP20
print("Wiznet5k Ping Test (no DHCP)")
ethernetRst = digitalio.DigitalInOut(W5x00_RSTn)
ethernetRst.direction = digitalio.Direction.OUTPUT
# For Adafruit Ethernet FeatherWing
cs = digitalio.DigitalInOut(SPI0_CSn)
# For Particle Ethernet FeatherWing
# cs = digitalio.DigitalInOut(board.D5)
spi_bus = busio.SPI(SPI0_SCK, MOSI=SPI0_TX, MISO=SPI0_RX)
# Reset W5500 first
ethernetRst.value = False
time.sleep(1)
ethernetRst.value = True
# Initialize ethernet interface without DHCP
eth = WIZNET5K(spi_bus, cs, is_dhcp=False)
# Set network configuration
eth.ifconfig = (ip, subnet, gateway, dns)
print("Chip Version:", eth.chip)
print("My IP address is:", eth.pretty_ip(eth.ip_address))
return eth
def disp_w5500():
clear_disp()
display.fill(1)
cst = "chip version:" + eth.chip
display.text(cst, 0, 0, 0)
cst = "ip:" + eth.pretty_ip(eth.ip_address)
display.text(cst, 0, 10, 0)
cst = "mac:" + eth.pretty_mac(eth.mac_address)
display.text(cst, 0, 20, 0)
display.show()
def inCksum(packet):
if len(packet) & 1:
packet = packet + '\0'
words = array.array('h', packet)
sum = 0
for word in words:
sum += (word & 0xffff)
sum = (sum>>16) + (sum & 0xffff)
sum = sum + (sum >> 16)
return (~sum) & 0xffff
if __name__ == '__main__':
# 初始化led和显示模块
led,display = init()
#静态初始化w5500
eth = init_w5500(IP_ADDRESS, SUBNET_MASK, GATEWAY_ADDRESS, DNS_SERVER)
disp_w5500()
while True:
led_flush()
No. Time Source Destination Protocol Length Info
345 51.870236897 192.168.1.4 192.168.1.100 ICMP 98 Echo (ping) request id=0x0001, seq=1/256, ttl=64 (reply in 346)
Frame 345: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface enp2s0, id 0
Interface id: 0 (enp2s0)
Interface name: enp2s0
Encapsulation type: Ethernet (1)
Arrival Time: Feb 5, 2024 07:43:16.074747971 CST
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1707090196.074747971 seconds
[Time delta from previous captured frame: 0.000007373 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 51.870236897 seconds]
Frame Number: 345
Frame Length: 98 bytes (784 bits)
Capture Length: 98 bytes (784 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:icmp:data]
[Coloring Rule Name: ICMP]
[Coloring Rule String: icmp || icmpv6]
Ethernet II, Src: WistronI_45:7c:1d (54:ee:75:45:7c:1d), Dst: de:ad:be:ef:fe:ed (de:ad:be:ef:fe:ed)
Destination: de:ad:be:ef:fe:ed (de:ad:be:ef:fe:ed)
Source: WistronI_45:7c:1d (54:ee:75:45:7c:1d)
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.1.4, Dst: 192.168.1.100
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 84
Identification: 0x5554 (21844)
Flags: 0x40, Don't fragment
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 64
Protocol: ICMP (1)
Header Checksum: 0x619c [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.1.4
Destination Address: 192.168.1.100
Internet Control Message Protocol
Type: 8 (Echo (ping) request)
Code: 0
Checksum: 0xc380 [correct]
[Checksum Status: Good]
Identifier (BE): 1 (0x0001)
Identifier (LE): 256 (0x0100)
Sequence Number (BE): 1 (0x0001)
Sequence Number (LE): 256 (0x0100)
[Response frame: 346]
Timestamp from icmp data: Feb 5, 2024 07:43:16.000000000 CST
[Timestamp from icmp data (relative): 0.074747971 seconds]
Data (48 bytes)
0000 a0 23 01 00 00 00 00 00 10 11 12 13 14 15 16 17 .#..............
0010 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 ........ !"#$%&'
0020 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 ()*+,-./01234567
Data: a023010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b…
[Length: 48]
Ping Reply数据解析
No. Time Source Destination Protocol Length Info
346 51.870317686 192.168.1.100 192.168.1.4 ICMP 98 Echo (ping) reply id=0x0001, seq=1/256, ttl=128 (request in 345)
Frame 346: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface enp2s0, id 0
Interface id: 0 (enp2s0)
Interface name: enp2s0
Encapsulation type: Ethernet (1)
Arrival Time: Feb 5, 2024 07:43:16.074828760 CST
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1707090196.074828760 seconds
[Time delta from previous captured frame: 0.000080789 seconds]
[Time delta from previous displayed frame: 0.000080789 seconds]
[Time since reference or first frame: 51.870317686 seconds]
Frame Number: 346
Frame Length: 98 bytes (784 bits)
Capture Length: 98 bytes (784 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:icmp:data]
[Coloring Rule Name: ICMP]
[Coloring Rule String: icmp || icmpv6]
Ethernet II, Src: de:ad:be:ef:fe:ed (de:ad:be:ef:fe:ed), Dst: WistronI_45:7c:1d (54:ee:75:45:7c:1d)
Destination: WistronI_45:7c:1d (54:ee:75:45:7c:1d)
Source: de:ad:be:ef:fe:ed (de:ad:be:ef:fe:ed)
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 192.168.1.4
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 84
Identification: 0x0001 (1)
Flags: 0x40, Don't fragment
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 128
Protocol: ICMP (1)
Header Checksum: 0x76ef [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.1.100
Destination Address: 192.168.1.4
Internet Control Message Protocol
Type: 0 (Echo (ping) reply)
Code: 0
Checksum: 0xcb80 [correct]
[Checksum Status: Good]
Identifier (BE): 1 (0x0001)
Identifier (LE): 256 (0x0100)
Sequence Number (BE): 1 (0x0001)
Sequence Number (LE): 256 (0x0100)
[Request frame: 345]
[Response time: 0.081 ms]
Timestamp from icmp data: Feb 5, 2024 07:43:16.000000000 CST
[Timestamp from icmp data (relative): 0.074828760 seconds]
Data (48 bytes)
0000 a0 23 01 00 00 00 00 00 10 11 12 13 14 15 16 17 .#..............
0010 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 ........ !"#$%&'
0020 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 ()*+,-./01234567
Data: a023010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b…
[Length: 48]