Es gibt eine ganze Reihe sehr interessanter Geräte - dreifarbige LEDs mit integrierter Steuerschaltung (ws2811, ws2812, ws2812b, ws2813 ...). Ihr charakteristisches Merkmal ist der Preis, der kaum als lächerlich bezeichnet werden kann, was ihre außerordentliche Beliebtheit bei Amateuren bestimmt. Aus irgendeinem Grund werden sie oft als adressierbare LEDs bezeichnet, was meiner Meinung nach nicht ganz zutrifft, da diese Geräte keine eigene eindeutige Adresse haben und durch eine Position in der Verbindungskette adressiert werden. Lassen wir jedoch die Feinheiten der Terminologie außerhalb der Klammern.
Randnotiz (PNP): Diese Familie wird ganz natürlich außerhalb unseres riesigen Mutterlandes produziert. Als Spezialist, der in direktem Zusammenhang mit diesem Thema steht, kann ich nur meine Verwirrung über das Fehlen solcher Produkte in der Palette der von einheimischen Herstellern hergestellten elektronischen Geräte zum Ausdruck bringen. Ich verstehe, dass die Herstellung von Mikroschaltungen nach Standards von 90 oder weniger in der Russischen Föderation trotz wiederholter Aussagen über die Entwicklung dieser Verfahren durch Angstrem unmöglich ist, aber Komponenten wie die in diesem Beitrag beschriebenen können einfach nicht den Einsatz derart fortschrittlicher Technologien erfordern Die Antwort auf die Frage liegt also wahrscheinlich wirtschaftlicher als technologisch. Trotzdem stellen unsere südlichen Nachbarn solche Geräte her und sind sicher nicht ratlos für sich.
Alle Geräte dieser Familie bieten dem Benutzer die einfachste Hardwareschnittstelle - einadrig (in der Tat natürlich dreiadrig, da eine gemeinsame Masse angenommen wird und es ohne Stromversorgung nicht einfach sein wird) und weniger Leiter sind kaum möglich. Aber für alles auf dieser Welt müssen Sie bezahlen, in diesem Fall ist die Zahlung das Nachrichtenprotokoll, ein serielles Protokoll mit der Codierung von Informationen mit der Dauer des Impulses. Die Lösung ist bekannt, wenn bestimmte Anforderungen erfüllt sind, ist sie zuverlässig, aber der Teufel versteckt sich wie immer im Detail.
In diesem Fall liegen die Details in der Dauer der Codierungsimpulse - um hohe Übertragungsraten zu erzielen, werden sie sehr, sehr klein genommen (natürlich, je nachdem, womit verglichen werden soll) - in der Größenordnung von Hunderten von Nanosekunden siehe bestimmte Werte später. In Kombination mit einem nicht standardmäßigen Übertragungsformat ("Lord, England, was hat ihm dann nicht gefallen") stellt die Implementierung eines solchen Protokolls auf Standard-MCUs ein bestimmtes Problem dar, und wir werden über mögliche Lösungen für dieses Problem sprechen.
- - () , () . 8 /*3 = 24 ( , 32). n ( N) . , . , ", ".
. , , 150*2=600, , : - 150 , - 150 , - 600 . , , , , " ".
: 400 () 800 () , - 800 . , , ": 2 , (reset time) ", , , . : , / " " - , , .
( /?) , . , , , .
() |
WS2811 |
WS2812 |
WS2813 |
|
T0H |
0.22-0.38 |
0.2-0.5 |
0.3-0.45 |
0.375 |
T1H |
0.58-1.0 |
0.75-1,05 |
0.75-1.0 |
0.875 |
T0L |
0.58-1.0 |
0.75-1,05 |
0.3-100 |
0.875 |
T1L |
0.58-1.0 |
0.2-0,5 |
0.3-100 |
0.375 |
TH+TL |
|
1.1-1.4 |
0.95-1.55 |
1.25 |
Res |
>280 |
>50 |
>300 |
>300 |
: , , 4 1 2 , 1 ). , , , .
, ( , ), , .
, (, ), . 300-380 , 800-900 , 640-760 500-600 . /: (800+380)/380:(900+300)/300 = 3.1:4 10/3:4/1, (640+600)/600:(760+500)/500=2.06:2.5 10/6:10/4. , .
, 1/80 ( ) = 12.5 . , , , . , 8 3 = 375 7 = 875 (" ? - "), - 6 4 . : , , , . , , .
, - .
:
- , ,
, ( , , ).
:
,
,
(, ),
100% , ,
. , , 2813 . : , - . 64 , 64 * 32/ *1.25/ = 2.56.
( , ) - . , . , . ( 8 ), 3 . , , , , , . , - , 2-3 . : 2-3 80, 12.5 *3=37.5 .
, . :
( ),
- . - .
. ( AVR, ARM , , ) 4-6 , 4-5 , 6-7 , 4-5 , 4-5 , 4, - 5-6. 38 , , 375 , 1/=1/(37510**-9/38)=38/37510**9~100. , .
, , , , .
( " ") . , , , 51 48 . (PWM), , , . 3 7 ( 10 , 3 , ) ( ), , , . , , , .
, - , , . ( ) , , , (, , ).
- "" , ( , , ) . , - , .
:
.
:
, ( ),
, . - - 375 , - 1250 , 38/(1250*10**9) = 31 .
- (STM XMEGA), . - . ( 32 , ), . , , , (ping pong round robin) " ". , 32*(5-10)/=160-320 32*1250/, 320/32*125*10*-9 = 10*10/1250=8 , , . , 2*32 , , .
- . , , , , , , 8/*32*50/( 20 )=12.5 ( 40). , , , , . , , , .
. - , , " ". - , ( , , ).
. , , , . , , , ( ). , - , ( ) - ( , ), , ( ) . , , "" . : , , , , .
, , ... . . 32*n( N) , , . , , , =64 32/*64*1/ = 2, , ( - 15 , , ). : , ( 16), , , ( ). , , , 32/*64 *(1/8)/=256 . , ( ).
, . , I2C/TWI ( , ), SPI ( , ) UART ( ).
I2C ( , ) - , , (, , ) ( 8 ) .
SPI, . - ( 1-2 ) , 10- . , 8- (- 10 ), . : ", , " - , 2 , 8 .
UART - , ( ) . ", , ", , , , 1 0 , . , 0b00000011 b00011111, 0 1 8 (, , ). : , UART . - , , . , , .
- . UART, 10 (3/10 6/10), 5 (2/5 3/5), . UART 4 ( ), , .
, 8 32 , (, ) .
, , . , ( ) .
P.S. , - .