https://code.google.com/p/fastspi/issues/detail?id=35 - support for the TLS3001 chipset - some random notes from the original ticket
Data communication protocol
Gave SDI input signal pin must follow the following definitions:
a. valid input data must be Manchester encoded signal from high to low transition indicates "1", from low to high
Jump indicates "0"
b. During chip power after a synchronization frame must be sent to the chip detection of communication baud rate. Sync frame
Format is: 15'b111111111111111 +4' b0001 +11' b00000000000, sending synchronization
Frame must be delayed for some time and then send the data frame, so that each chip can be done in order to accurately detect
To the communication baud rate, delay time (us) greater than: Connection chip count ÷ communication baud rate (MHz) × 30
c. several frames in the transmission data, re-send a reset frame, wait 1ms later, send it again with the
Step frames for the chip to eliminate the accumulated error, reset frame format:
15'b111111111111111 +4' b0100
d. data frame format is: 15'b111111111111111 +4' b0010 (header) + first chip
39bit second chip 39bit data + data + ...... + n-th chip 39bit data
e. first chip is first received data chips, chip data format is: 1 'b0 (identification bits) + 12'
bxxxxxxxxxxxx (output port 1 data) + 1'b0 (flag) + 12'bxxxxxxxxxxxx (input
The port 2 data) + 1'b0 (flag) + 12'bxxxxxxxxxxxx (output port 3 data),
x is 1 or the 0
f. data is first sent MSB (most significant bit)
g. SDI input pin in the idle state, must remain low
h. the same frame data transmission process, must be sent contiguously, in the middle, without interruption, transmission frequency can not be Changed.
Jun 27, 2013 Delete comment Project Member #3 danielgarcia
So I can make sure to clean it out - where do you see it referenced? I have no file named changes.txt in my distributions, there's preview_changes.txt which was a log of preview release changes for FastSPI_LED2 - but there's no mention of the tls3001 in there.
The only reference to the tls3001 that I have in my arduino folders is a reference file for information for when I got to implementing the tls3001 support, but it's hardly a release note, it does look like it slipped out with a build of the original version of the library.
Unfortunately the tls3001 encoding is completely different from anything used by any of the existing chipsets, and I don't have a line on a good fast implementation of it yet. On top of that, the tls3001 is a 12-bit per color chipset, which is something that we won't have support for in the library across the board until later this summer (there are a handful of chipsets coming down the line that are 12-bit instead of 8-bit).
The odd bit-sizes will make working with any kind of hardware support a bit of a pain, though that will be a little bit easier with the teensy 3 and arduino due, as they allow 'odd' bit sizes for writing out.
I am very very behind on a large led installation that i'm working on for the fourth of july, so I'm mostly putting off doing any non-bugfix related work for the library until after then.
The basic protocol is a fairly simple mapping. When you want to write a 1 bit, you set the data high then to low. When you want to write a 0 bit, you set the data low, then high. So, for example, simplistically:
Write 1 bit: FastPin<12>::hi(); FastPin<12>::lo();
Write 0 bit: FastPin<12>::lo(); FastPin<12>::hi();
Or to write a whole byte b
for(int i = 0; i < 8; i++) {
if(b & 0x80) { FastPin<12>::hi(); FastPin<12>::lo(); }
else { FastPin<12>::lo(); FastPin<12>::hi(); }
b <<= 1;
}
The concern that I have with the TLS3001 is this line "transmission frequency can not be Changed" - I'm curious what the tolerances are on that - because the amount of work that would be required to translate data to something that could be written out would mean that the timing between bits could slide around a bit.
Anyway - let me know what file is referencing the tls3001 and i'll make sure to clean it up so as to not throw people off in the future, and I have a set of TLS3001 upstairs so I can tackle an efficient implementation later this summer.