Há toda uma linha de dispositivos muito interessantes - LEDs de três cores com circuito de controle embutido (ws2811, ws2812, ws2812b, ws2813 ...). Sua característica é o preço, que dificilmente pode ser chamado de outra coisa senão ridículo, o que determina sua extraordinária popularidade entre os amadores. Por algum motivo, muitas vezes são chamados de LEDs endereçáveis, o que, na minha opinião, não é totalmente verdade, uma vez que esses dispositivos não têm seu próprio endereço exclusivo e são endereçados por uma posição na cadeia de conexão, mas vamos deixar as sutilezas da terminologia fora dos colchetes.
Nota marginal (PNP): Esta família é produzida, o que é bastante natural, fora da nossa vasta Pátria. Como especialista diretamente relacionado com este tema, não posso deixar de manifestar o meu espanto pela ausência de tais produtos na gama de dispositivos eletrónicos produzidos pelos fabricantes nacionais. Eu entendo que a fabricação de microcircuitos de acordo com padrões de 90 ou menos na Federação Russa é impossível, apesar das repetidas declarações sobre o desenvolvimento desses processos por Angstrem, mas componentes como os descritos neste post simplesmente não podem exigir o uso de tais tecnologias avançadas , então a resposta à pergunta reside, provavelmente mais economicamente do que tecnologicamente. Mas, mesmo assim, nossos vizinhos do sul fazem tais dispositivos e, com certeza, não perdem nada para eles próprios.
Todos os dispositivos desta família fornecem ao usuário a interface de hardware mais simples - um fio (na verdade, é claro, três fios, uma vez que um aterramento comum é assumido, e não será fácil fazer sem fonte de alimentação) e menos condutores dificilmente são possíveis. Mas por tudo nesse mundo você tem que pagar, neste caso o pagamento é o protocolo de mensagem, que é um protocolo serial com a codificação de informações com a duração do pulso. A solução é bem conhecida, atendidos certos requisitos, é confiável, mas o diabo, como sempre, está se escondendo nos detalhes.
Neste caso, os detalhes estão nas durações dos pulsos de codificação - para atingir altas taxas de transmissão, eles são considerados muito, muito pequenos (claro, dependendo do que comparar) - na ordem de centenas de nanossegundos, nós iremos veja os valores específicos mais tarde. Em combinação com um formato de transmissão não padrão ("Senhor, Inglaterra, então o que não lhe agradou"), a implementação de tal protocolo em MCUs padrão apresenta um certo problema, e falaremos sobre possíveis soluções para este problema.
- - () , () . 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. , - .