Closer Look At Everyone’s Favorite Blinky

Admit it, you love looking at silicon die shots, especially when you have help walking through the functionality of all the different sections. This one’s really easy for a couple of reasons. [electronupdate] pointed his microscope at the die on a WS2812.

The WS2812 is an addressible RGB LED that is often called a Neopixel (a brand name assigned to it by Adafruit). The part is packaged in a 5×5 mm housing with a clear window on the front. This lets you easily see the diodes as they are illuminated, but also makes it easy to get a look at the die for the logic circuit controlling the part.

This die is responsible for reading data as it is shifted in, shifting it out to the next LED in the chain, and setting each of the three diodes accordingly. The funcitonality is simple which makes it a lot easier to figure out what each part of the die contributes to the effort. The diode drivers are a dead giveaway because a bonding wire connected to part of their footprint. It’s quite interesting to hear that the fourth footprint was likely used in testing — sound off in the comments if you can speculate on what those tests included.

We had no trouble spotting logic circuitry. This exploration doesn’t drill down to the gate level like a lot of [Ken Shirriff’s] silicon reverse engineering but the process that [electronupdate] uses is equally fun. He grabs a tiny solar cell and scopes it while the diodes are running to pick up on the PWM pattern used to fade each LED. That’s a neat little trick to keep in your back pocket for use in confirming your theories about clock rate and implementation when reverse engineering someone else’s work.

[via Dangerous Prototypes]

18 thoughts on “Closer Look At Everyone’s Favorite Blinky

  1. The IC-Version of the Controller does have an extra Pin with which you can select a fast or slow clocking speed. Maybe the pad on the die is bonded out to that pin if the silicon is used in chip-form and not integrated in the LED.

      1. Pure guesswork ahead, taken with a pinch of salt could it be confirmed or denied?

        On the silicon controller IC it looks like that black square above the 3 red squares is the output transistor, MFG disabled maybe?

        The bottom red is the brightest (a side question before I finish writing sentences: heat?, IR?, camera angle and reflections?, Voodoo??) with the top two about the same.
        This makes sense, if I remember correctly, because the blue would be pulling the most power relative to the green and red, this leaves the black square that to me becomes immediately obviously a transistor (I believe).
        Though the red and green transistors seem the same colour, I thought green required a slightly higher voltage thus higher wattage at the nominal 20mA of most LEDs I have used as far?

        This is the most I could garner from the heading picture.

        1. Took a read on the [electronupdate] blog linked above, the black transistor I was on about doesn’t have a coating like the rest and thus appears completely disabled.

    1. One slightly better choice would be APA102 LEDs. Those use SPI for communication, so they are a bit handier. And can be driven by a raspberry pi without an additional µC.

      1. They are pricier and harder to get in nice, premade boards but yeah anything with a looser timing requirement would be better
        i have even in the past been forced to use dual core MCUs just to control a set of neopixels

      1. it depends on your definition of “address”…

        address-ABLE as in address-ED meaning dont need a huge matrix of output wires, just send serial data down ONE wire, then yes, its address-ED

        but address as in THIS led will be told by the CPU that it will be #28 today then no, the order of each LED in the string is determined by the wiring, the first LED connected is #1 and the second in line is LED#2 no matter what bits are sent down the data line(s)

        WS2812 (WS2811) protocol does not have real addressing like (the) (phillips?) G35 protocol, where the pixels need to be given an address at power-up. the advantage of the G35 protocol is that an animation can be hard-coded to use certain LED addresses and then at power-up you can change the order without having to edit the subroutine. also code that calculates an address can add extra code-space andor computation time.

        the downside of G35 is, well, all the glitches and limitations, like proper combinations of multi-brightness levels and refresh-rate, at least with my knock-off sets i got for cheap. doesnt even work with stock G35 code.

Leave a Reply to NewCommentor1283Cancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.