Update README

This commit is contained in:
Folkert Kevelam 2024-11-24 21:20:26 +01:00
parent 9b47026aa8
commit 80c25217c3
2 changed files with 403 additions and 4 deletions

View File

@ -1,8 +1,50 @@
# Ethy # Ethy
A project to learn how ethernet and the TCP/IP Stack works. A project to learn how ethernet and the TCP/IP Stack works.
## Components (Possible) ## Design
- RP2040 Ethy is designed to learn how ethernet and the entire OSI stack functions and
- ENC424J600 how it can be used on low-memory devices.
- Lots of WS28?? LEDS
This project started in November, so the project is made in a christmassy
theme by making an LED display driver for a christmas tree over ethernet.
![block diagram of Ethy](../docs/main_block_diagram.svg "Main Block Diagram")
The block diagram above shows the main components of the system. First of
all we have the Ethernet chain, which is just a RJ45 connector together with
the magnetics and a chip to convert data from the microcontroller to the
differential signals. Another project that attempts something similar uses
the W5100 but is still a bit of an overkill for what I want to use. The
less of the process the chip automates the better.
The second chain is the USB and power. Although the main way to connect
to the device will be via ethernet, I still wanted some other way to talk to
it. Given that the RP2040 has an onboard USB PHY, this seemed the easiest
way. At the same time the USB PD standard (PD 2.0 and PD 3.0 have
a selection of easily attainable chips) allows for 100W of power.
How much of that will or can be used is still being figured out, but it makes
for an easy way to power multiple LEDS.
Lastly, from the USB PD and the RP2040 together power the LED strips. The
device should both support WS2812B and WS2815B LED strips. Since the user
may plug in either a WS2812B or WS2815B LED strip, the voltage needed for the
should be automatically detected. The easiest way of doing that would be to
use a voltage divider in the same way that the base power profile of the PD
standard uses it.
### USB Power Delivery
#### Possible PD chips
- STUSB4500
- STUSB4500L
- Some Texas Instruments chips
#### Possible DC/DC chips for controllers
- TPS56320x (except it only goes to 17V)
### Ehternet PHY
### LED Strip

357
docs/main_block_diagram.svg Normal file
View File

@ -0,0 +1,357 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="1920"
height="1080"
viewBox="0 0 508 285.74999"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1">
<marker
style="overflow:visible"
id="marker19"
refX="0"
refY="0"
orient="auto-start-reverse"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path19" />
</marker>
<marker
style="overflow:visible"
id="marker18"
refX="0"
refY="0"
orient="auto-start-reverse"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path18" />
</marker>
<marker
style="overflow:visible"
id="marker17"
refX="0"
refY="0"
orient="auto-start-reverse"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path17" />
</marker>
<marker
style="overflow:visible"
id="marker16"
refX="0"
refY="0"
orient="auto-start-reverse"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path16" />
</marker>
<marker
style="overflow:visible"
id="marker12"
refX="0"
refY="0"
orient="270.00"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path12" />
</marker>
<marker
style="overflow:visible"
id="ArrowWideRounded"
refX="0"
refY="0"
orient="90.00"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path2" />
</marker>
<marker
style="overflow:visible"
id="marker5"
refX="0"
refY="0"
orient="auto-start-reverse"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path5" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide"
refX="0"
refY="0"
orient="auto-start-reverse"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path1" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-6"
refX="0"
refY="0"
orient="auto-start-reverse"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
id="path1-1" />
</marker>
</defs>
<g
id="layer1">
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.983909;stroke-dasharray:none;stroke-opacity:1"
id="rect1"
width="41.232269"
height="42.319473"
x="73.97023"
y="167.65059" />
<text
xml:space="preserve"
style="font-size:13.2645px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.472964;stroke-dasharray:none;stroke-opacity:1"
x="81.823311"
y="188.80301"
id="text2"
transform="scale(0.98645333,1.0137327)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.472964;stroke-dasharray:none"
x="81.823311"
y="188.80301"
id="tspan3">RJ45</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.0708;stroke-dasharray:none;stroke-opacity:1"
id="rect1-5"
width="48.936974"
height="42.232582"
x="122.69289"
y="167.75371" />
<text
xml:space="preserve"
style="font-size:8.89746px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.317275;stroke-dasharray:none;stroke-opacity:1"
x="130.79256"
y="182.91077"
id="text2-3"
transform="scale(0.95943132,1.0422841)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.317275;stroke-dasharray:none"
x="130.79256"
y="182.91077"
id="tspan3-5">Magnetics</tspan><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.317275;stroke-dasharray:none"
x="130.79256"
y="194.03259"
id="tspan4" /></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.983909;stroke-dasharray:none;stroke-opacity:1"
id="rect1-1"
width="41.232269"
height="42.319473"
x="179.7113"
y="167.42711" />
<text
xml:space="preserve"
style="font-size:11.5492px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.411801;stroke-dasharray:none;stroke-opacity:1"
x="199.63525"
y="181.97002"
id="text2-2"
transform="scale(0.94424766,1.0590442)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.411801;stroke-dasharray:none"
x="199.63525"
y="181.97002"
id="tspan3-7">PHY</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.983909;stroke-dasharray:none;stroke-opacity:1"
id="rect1-6"
width="41.232269"
height="42.319473"
x="227.31291"
y="113.89376" />
<text
xml:space="preserve"
style="font-size:8.96561px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.319681;stroke-dasharray:none;stroke-opacity:1"
x="247.38835"
y="130.41698"
id="text2-0"
transform="scale(0.94353278,1.0598466)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.319681;stroke-dasharray:none"
x="247.38835"
y="130.41698"
id="tspan3-6">RP2040</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.983909;stroke-dasharray:none;stroke-opacity:1"
id="rect1-8"
width="41.232269"
height="42.319473"
x="115.85557"
y="50.315205" />
<text
xml:space="preserve"
style="font-size:13.2645px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.472964;stroke-dasharray:none;stroke-opacity:1"
x="124.28386"
y="74.487099"
id="text2-7"
transform="scale(0.98645333,1.0137327)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.472964;stroke-dasharray:none"
x="124.28386"
y="74.487099"
id="tspan3-9">USB</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.06969;stroke-dasharray:none;stroke-opacity:1"
id="rect1-3"
width="48.834152"
height="42.233692"
x="167.69272"
y="50.246601" />
<text
xml:space="preserve"
style="font-size:10.0557px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35855;stroke-dasharray:none;stroke-opacity:1"
x="178.89377"
y="72.918137"
id="text2-75"
transform="scale(0.97844057,1.0220345)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35855;stroke-dasharray:none"
x="178.89377"
y="72.918137"
id="tspan3-92">USB PD</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.983909;stroke-dasharray:none;stroke-opacity:1"
id="rect1-7"
width="41.232269"
height="42.319473"
x="226.64146"
y="50.350582" />
<text
xml:space="preserve"
style="font-size:13.2645px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.472964;stroke-dasharray:none;stroke-opacity:1"
x="238.27968"
y="74.901161"
id="text2-36"
transform="scale(0.98645333,1.0137327)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.472964;stroke-dasharray:none"
x="238.27968"
y="74.901161"
id="tspan3-1">3V3</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.983909;stroke-dasharray:none;stroke-opacity:1"
id="rect1-19"
width="41.232269"
height="42.319473"
x="293.63266"
y="113.88438" />
<text
xml:space="preserve"
style="font-size:8.73059px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.311301;stroke-dasharray:none;stroke-opacity:1"
x="316.57883"
y="124.81121"
id="text2-4"
transform="scale(0.94385532,1.0594844)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.311301;stroke-dasharray:none"
x="316.57883"
y="124.81121"
id="tspan3-78">WS2812</tspan></text>
<text
xml:space="preserve"
style="font-size:8.73059px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.311301;stroke-dasharray:none;stroke-opacity:1"
x="316.43643"
y="133.68849"
id="text2-4-6"
transform="scale(0.94385533,1.0594844)"><tspan
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.311301;stroke-dasharray:none"
x="316.43643"
y="133.68849"
id="tspan3-78-9">WS2815</tspan></text>
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.673;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide);marker-start:"
d="m 157.34081,70.726487 h 10.6346"
id="path4" />
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.631972;stroke-dasharray:none;stroke-opacity:1;marker-start:;marker-end:url(#ArrowWide-6)"
d="m 216.95879,71.210046 h 9.37748"
id="path4-6" />
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.664783;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWideRounded)"
d="m 246.90125,92.780621 0.12902,20.359909"
id="path6" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.694407;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker19);marker-end:url(#marker19)"
d="m 135.76413,92.948525 -0.18102,42.483585 h 91.05085"
id="path7" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.631424;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker18);marker-end:url(#marker19)"
d="m 115.70962,188.26672 c 6.85866,0 6.85866,0 6.85866,0"
id="path8" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.658705;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker16);marker-end:url(#marker17)"
d="m 172.47726,188.08552 h 7.11693"
id="path9" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.670281;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker5);marker-end:url(#marker12)"
d="m 221.44653,188.65377 25.7027,-0.17995 -0.181,-31.48814 v 0"
id="path10" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.673;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker5);marker-end:url(#marker5)"
d="m 268.71948,135.17514 24.64319,-0.1812 v 0"
id="path14" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.664975;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWideRounded)"
d="M 191.53332,49.742316 V 35.323473 l 123.99307,-0.365034 v 78.664831 0"
id="path15" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB