Update README
This commit is contained in:
parent
9b47026aa8
commit
80c25217c3
50
README.md
50
README.md
|
|
@ -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.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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
357
docs/main_block_diagram.svg
Normal 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 |
Loading…
Reference in New Issue
Block a user