Si bien su pregunta indica que el WS2801 sospecho que se refiere al WS2812, esa es la parte más comúnmente utilizada en una tira de LED direccionable.
El WS2801 es un controlador LED que requiere LED externos, el WS2812 es un LED y un controlador en uno. De cualquier manera, las dos partes son muy similares, pero utilizan una conexión eléctrica diferente para el enlace de datos.
La hoja de datos del WS2812 se puede encontrar en aquí (los datos en El WS2801 también se encuentra en ese sitio en la sección IC del controlador LED).
Estas partes tienen una interfaz muy simple de 1 cable que permite que se encadenen entre sí:
No es un quire como un registro de desplazamiento, lo que implicaría que los primeros datos del procesador fueron para el LED más alejado de la cadena. Es exactamente lo contrario, los primeros datos son para el LED más cercano.
El primer LED lee los primeros 24 bits de datos (8 bits de Verde luego Rojo luego Azul) en la línea Din mientras mantiene inactiva su línea Dout y utiliza esos datos para configurar los controladores PWM para sus 3 LED internos. Una vez que se han recibido 24 bits de datos, el dispositivo pasa al modo de transferencia, cualquier información adicional se envía al pin Dout sin tener ningún efecto interno.
Si la línea de datos permanece inactiva durante un período de tiempo fijo, el dispositivo sale del modo de transferencia y leerá el siguiente conjunto de datos que reciba y actualizará las tasas de PWM internas de manera adecuada.
Este sistema significa que se puede encadenar un número teóricamente ilimitado de LED siempre que el conductor pueda seguir escupiendo los datos sin una pausa demasiado larga (y usted tenga una fuente de alimentación lo suficientemente grande). Sin embargo, la velocidad de actualización máxima posible disminuye a medida que la cadena se alarga.
El sistema funciona muy bien si desea actualizar todos los LED a la vez. Sin embargo, no le permite cambiar un solo LED sin cambiar ningún otro (excepto el primero). p.ej. Si solo desea actualizar LED3 en una cadena, como mínimo debe enviar los datos para LED1, LED2 y LED3.