Has anyone worked with the SJ1211 strips?

And datasheet

https://drive.google.com/open?id=1KuAz2Elx5vkBwgIx9s2X54cjbs7YVhsn

Looks like each color is 12bits with some reset code

With any luck, you’re smarter than I am and can figure out how to send data to these things.

Thanks for the datasheets, gonna forward to friend ( @Rick_van_Hattem ) maybe he can make sense of it as he has worked on fastled before.
At first glance it looks like it always requires an “unlock” command which explains why we couldn’t get any results like flicker or random colors before.

Any feedback yet? I’m dying to try these out with some working code. The SJ1211s work great, but alas they aren’t being produced any more. I even asked for old stock. You have to think that the factory has a few reels of them laying around.

Got a sketch for testing that should have worked according to their specs but no luck so far:

Hopefully can do some more testing this weekend but it might just be that their specs are incorrect or that we need to expand some library with that reset bit (to turn off full white).

Looking at your code… I want to get this thing sending data for just 1 LED to look at on my scope.
#define PIXELS 96*11 appears to be 96LEDs per meter * 11 meters?
#define PIXELS 1 would just send out data for a single pixel. Right?

It seems as though the code omits the leading 12-bit packet of zeros. I’ll play around with this. Also, the CM value leaves the lowest 4-bits (CC drive bits) at 0000. This should be some value > 0. So the byte sent should be (Color*CM)+8. This would set the CC drive to ~1/2 power. Since CM is constant 16. (Color<<2)+8 would be a simple left shift multiply.

Yeah that’s the total pixels count so 1 is correct, let me know how it goes :slight_smile:

running on my Adruino Pro mini, your code no changes except the LED Pin on PORTB. The data bit period is ~1.75us (571kHz) Scope shows 530kHz.

The “On” times look good. But the Off time is too long. Even shortening up the T1L & T0L defines isn’t enough to get it into time. Looks like the Loop that calls snedBit is adding too much time. The ASM should be a continuous block that’s sent a byte and it sends the first 12 bits.

I see your note regarding loop overhead. If I change the ASM for sending a 0 bit to…
asm volatile (
“sbi %[port], %[bit] \n\t” // Set the output bit
“.rept %[onCycles] \n\t” // Execute NOPs to delay exactly the specified number of cycles
“nop \n\t”
“.endr \n\t”
“cbi %[port], %[bit] \n\t” // Clear the output bit
// “.rept %[offCycles] \n\t” // Execute NOPs to delay exactly the specified number of cycles
// “nop \n\t”
“.endr \n\t”
::
[port] “I” (_SFR_IO_ADDR(PIXEL_PORT)),
[bit] “I” (PIXEL_BIT),
[onCycles] “I” (NS_TO_CYCLES(T1H) - 2) // 1-bit width less overhead for the actual bit setting, note that this delay could be longer and everything would still work
// [offCycles] “I” (NS_TO_CYCLES(T1L) - 2) // Minimum interbit delay. Note that we probably don’t need this at all since the loop overhead will be enough, but here for correctness
// [offCycles] “I” (1)
);
And send all 0 colors out. I can get almost exactly 800kHz

I’ve got a block of code that generates data at 813kHz. The H & L times are damn close to 350us and 700us.
When I shorten the code to 8 bits and send 3 packets of 0s, 0s, & 1s. It lights up a single WS2812 blue. So the timing is correct.

I’m sending 4 12-bit packets as follows
000000000000 < start byte
001000001000 < should be lit partially with 1/2 current
000000000000
000000000000. Nothing. Also tried the 6 packet series in the protocol document.
Here’s a link if you want to see.

https://drive.google.com/open?id=1XopTGyh-9n57uJhf6-QOt5lIrhYOUdOw

I just bought one of those K-1000C LED controllers. I’m going to get it generating data and running the SJ1221 strip (UCS5603B IC) and look at the data on my scope. There has to be a way to implement this protocol in a library. That K-1000C just has a microcontroller in it. It would be nice the get it into FastLED once I’ve worked out the bits & bytes. I love this strip. I WILL get it working.

If anyone is interested. Shiji has discontinued the 1211 AND the 1221 now. They say they have been “upgraded” to the GS8208. However, that LED only has the 1 die per color. Dammit. These were the only LEDs with 3 dies per color.
Total garbage if you ask me.

I should have bought 10m of the 1211s when I had the chance.

Same here, do hope another company can get it right and actually document the protocol properly as with these something was bugged from day one.

Shiji doesn’t make the GS8208. I think they just build them into strips. The idea of the 1211/1221 was great. But the 1221s, I think you’re right, we’re either bugged or the protocol they sent was way off. I sent a single LED all sorts of data at 800kHz. Nothing.