Replies: 6 comments 18 replies
-
Interesting chip. Supports variable bit depth for greyscale. Is also a two wire (data and clock) chip. Problematic issues I spot: Basically, this means it must be done with bitbang and thus a synchronous call, wasting CPU time to send the data. While this is normal for AVR platform to only support synchronous data transfer, more modern platforms like ESP and nRF52840 (Nano 33 BLE) support asynchronous calls using DMA and thus allow the CPU to prepare the next frame while the active frame is being sent. This may also mean a slower output speed based on the uC clock and instructions timing. |
Beta Was this translation helpful? Give feedback.
-
I already have the settings object for the TLC59711 ready, but I am working on how to generalize the concept that settings are sent per chip where a chip could be four RGB, three RGBW, or two RGBWWW. The general design has been that the "chip" size defined by the feature, so it was one of a RGB, RGBW, RGBWW, or RGBWWW; with various bit depths. So a little more complex but still doable. Did you create an issue for the TCP59711? |
Beta Was this translation helpful? Give feedback.
-
Not merged into master yet as I haven't received my chips. But, you can pick up the branch Tlc59711 to give it a try. NOTES: Like all SPI two wire LEDs, for most platforms you can use the following model of constructor and begin calls.
On the ESP32 platform, the pin settings must be done on the Begin() like...
|
Beta Was this translation helpful? Give feedback.
-
I created #781 to track the issue. |
Beta Was this translation helpful? Give feedback.
-
@lolimpol After working with the TLC59711, it has quirks. It currently requires data be sent in reverse in two ways.
Note that the LED element (think R of RGB) is sent in reverse order BUT the 16 bit element itself is sent normal MSB; this isn't unusual or a concern. So BGR would have been feature. The data buffer as accessed through the strip.Pixels() is unfortunately assumed by WLED that pixel order is pixel 0 to pixel n. This never should have been assumed but every LED up to this chip followed that. So as to stay compatible, the buffer order is left alone and reversed when sent. |
Beta Was this translation helpful? Give feedback.
-
After more testing, the branch was merged in. There are some big caveats with this chip. This chip relies on strict timing in the data stream between chips to latch data from the stream on a per chip bases. This timing is relative to the clock used for the data transfer. This is problematic, as the uC will vary what it can achieve while the data sending would be the same. The results are, it confuses which data is for which chip and you will see flashing on output from a previous chips data; even though the static state after the send is usually correct. But if you are doing fast updates one after another, the flashing leds is unusable. This is a horrible design to rely on timing AND a clock-based data signal which is all about not relying on strict timing. SO, limit your speeds to 2Mhz (now the default) as an even the fast ESP32 can NOT maintain the timing requirements for multi-chip installation even on a branch that was double buffered (but not DMA). For a single chip installation, full 10Mhz speed will work fine. |
Beta Was this translation helpful? Give feedback.
-
Feature request for the MY9221 chip. 16bit with 12 channels and thus the possibility to control 3 RGBW leds, 4 RGB's or 2 RGBWWW. That conveniently contains the reason for this feature request over the FW1906: the possibility to use RGBWWW led's at 16 bit. Additionally, logic high input is 0.7V allowing for 3.3V use without a logic level shifter. This potentially also makes implementing the MY9291 easier, a 16 bit 2000hz refresh rate single channel RGBW chip.
Information page: https://www.advateklighting.com/pixel-protocols/my9221
Datasheet: MY9221_DS_1.0.pdf
Alternative: https://files.seeedstudio.com/wiki/Rainbowduino_v3.0/res/MY9221_DS_1.0.pdf
Beta Was this translation helpful? Give feedback.
All reactions