Search the Community
Showing results for tags 'TCA6507'.
Found 2 results
Hello! i made this boosterpack some weeks ago! this is the upgrade of LCD BOOSTERPACK V1 ( http://forum.stellarisiti.com/topic/626-ssd1289-32-320x240-tft-16bit-parallel-interface-touch-libraries/ ). Old version only has parallel control, this new version has improved all things: Serial or parallel, i2c drivers for touch and backlight, better layout... Unlike LCDBPV1, LCDBPV2 is compatible with any MCU in the market. You only have to migrate some basic code about specific i/o of your MCU and is done!! (you have to do if I have not yet done... but if you ask me for this and i have mcu to develop i can do this). You can buy on my web (paypal) or on the tindie store Check out LCDBPV2 tag on my web: http://danirebollo.es/index.php/bundles/lcd-bp-v2 You cand find some videos and other articles. For example, this is latest review i made between some MCUs on the market (better view on my web): MCU MODE FRAMES TIME FPS LOW LEVEL FUNCTION Chipkit MAX32 EHA 300 1.172 255 LATDSET(1<<y) ; LATDCLR(1<<y) Stellaris Launchpad EHA 200 1.553 128.78 HWREG(SCS_BASE + ((SCS_PIN) << 2)) = SCS_PIN ; HWREG(SCS_BASE + ((SCS_PIN) << 2)) = 0; Arduino UNO EHA 200 4.903 40.8 PORTD|=(1<<y) ; PORTD&=(~(1<<y)) PIC16F877A EHA 200 7.863 25.44 bit_set(PORTLCD,bCS) ; bit_clear(PORTLCD,bCS) MSP430 EHA 200 11.64 17.18 P2OUT |=y ; P2OUT &= ~(y) Chipkit MAX32 Serial 50 15.12 3.31 Stellaris Launchpad Serial 1 0.54 1.83 Arduino UNO Serial 1 1.264 1.264 MSP430 Serial 5 14.05 0.35 PIC16F877A Serial 1 6.681 0.15
Got a sample of TI's tca6507, a fairly easy to use i2c led driver with some special features. It is a "funlight" driver. Some funlights have preset patterns or breathing pattern, or audio synced lights or whatever, this one has programmable fading. It's not a bad chip, but could have been better. It has 2 programmable banks. A third one might have been helpful. Each bank has two equally timed fade on/on/fade off periods, and two individual off periods. Would have been better as a single, or with both fade periods being individually set. Has 7 (open drain) (common anode) output pins. I really don't understand why it wasn't made to support 8 leds (it has two unused pins) Has no interrupt pins. Which would be useful for the one-shot timer. (again, 2 unused pins) Only one i2c address. You cannot have multiples on the same i2c bus. It does have an enable pin, but driving this low will reset the device and registers and disables the outputs. This means you can have more than one on the bus, but none can be active at the same time. Each timed period (fade on/on/fade off/off 1/off 2) has 4 bits of exponential timing. Fading Led's are better observed by a logarithmic curve instead (still better than linear) The max intensity can be set to 4 bits, leading to each step being 6.25%. These are not constant-current drives, so you need external resistors (you can use 1, but it can cause observable dimming if you are using both pwm banks with different timings/intensities) Has 5 different intensities modes that can be set (Fully off/Fully on/Bank0/Bank1/Master) but only 4 are available from the one-shot mode, and you can't set arbitrary start/stop intensities. It works pretty well in it's blink modes, and you can make a pretty convincing breathing led mode due to the exponential timings (fade on/on/fade off/off 3s/0.2s/3s/0.2s) Also, the device immediately commits changes to registers, without waiting for a i2c stop or restart. There is no buffer. With auto increment off, this would allow you to continually change a single register in the same i2c session (makeshift software direct pwm for example). Three bugs though. Well, 1 datasheet error, 1 bad implementation, and 1 actual bug. 1) Datasheet has an error in the command byte/register table. Register 10 is listed as hex 0x10. Should be hex 0x0a. 0x10 is register 0x00, with auto incrementing register mode enabled. 2) The problem lies in the lack of a register buffer. A slow enough i2c clock (in my case, 25khz) can lead to unintentional flashing of the leds. In my case, with a 25khz i2c bus, trying to take the leds from one mode to another, requires writing 3 bytes/registers. If i'm going from all off (0x00 0x00 0x00) to bank1 blink mode (0x7f 0x7f 0x7f), I would write [address, auto-increment command byte, register 0, register 1, register 2] [0x8a 0x10 0x7f 0x7f 0x7f] Changing register 0 from 0x00 to 0x7f is fine, this is another all off mode. No buffer, commits once the byte is acknowledged. (0x7f 0x00 0x00) Changing register 1 from 0x00 to 0x7f causes the leds to go into bank1 max intensity mode (0x7f 0x7f 0x00) once the byte is acknowledged. The leds will flash on to the intensity you set for bank1. Changing register 2 from 0x00 to 0x7f causes the leds to finally go into bank1 blink mode (0x7f 0x7f 0x7f) once the byte is acknowledged. There is no way around this if you are going from a off mode to a blink mode, or if you are going from a mode with a different maximum intensity to another. The flash in mine is noticeable, and I'm attributing this to my slow i2c bus (I can't change it at the moment). I'm assuming if it's going 100khz or 400khz as the i2c and fast i2c standards expect, it won't be as noticeable. 3) The true bug, in one shot mode. This mode isn't too clearly described in the datasheet, but I'm certain this is a bug. One-shot mode is supposed to allow you to set the leds to a single region of the pwm banks, and then stops at that point. Essentially, it allows you to fade on or fade off, or leave on/off for a specific duration. This allows you to offload pwm fading from your processor, and not have to code or deal with timers. But depending on what your region registers (fade on/on/fade off/off 1/off 2) this ends with the leds not working as expected! If I have it set to (8s,0s,0s,0s,0s), and set the one-shot mode to start at the fade on region, it will fade from off to on in 8s as expected. At this point, it SHOULD set the led to on at the stated intensity, but it turns it off! For the fade on, if on or fade off is set to 0, it will end up setting the led to off at the end of the one-shot. For fade off, if the fade on, on, or off1 (or off2 depending on which fade off region you use) it will end up turning the led back ON! It doesn't make sense, it's like if the pwm timing of the changes is too fast for the chip to disengage the ports from the timer. This means the datasheet is really really badly written for the one-shot mode, or this is a bug in the design. This can be useful though. You can trick it into giving you full on one-shots (on for x seconds) then turn off. Set it to 0s,4s,0s,64ms,0s, and in one-shot it will turn the led full on for 4s, then turns back off. If fade off is set to anything, it will leave the led on. Very buggy. Honestly, once you get your head wrapped around it, it seems to work just fine for limited use. What would be great would be a chip that lets you go from an arbitrary brightness to another arbitrary brightness in x seconds. (Fading from 25% on to 75% on over 4 seconds). The TCA6507 only gives fading for 2 banks from 0% to a max brightness (or vis-versa), while another chip like the tlc59116 gives you individual brightness for each of it's 16 leds. Maybe I'm asking for too much? Anyway, I'll be coding this up now that I got it all figured out sort of.