knielsen / pov3d

Code for STM32F4 to drive the 3D POV
3 stars 2 forks source link

Simple TLC5955 controler #1

Open srdjanarsic opened 9 years ago

srdjanarsic commented 9 years ago

Hello,

I found pov3d using TLC5955. I need to control PWM over TLC5955 with a simple function e.g. setPWM(pin, dutyCycle); Do you have project like this?

Maybe it's off topic, but I cannot find way to control TLC5955 . I am using 32F429IDISCOVERY board.

Thank you!

knielsen commented 9 years ago

srdjanarsic notifications@github.com writes:

I found pov3d using TLC5955. I need to control PWM over TLC5955 with a simple function e.g. setPWM(pin, dutyCycle); Do you have project like this?

Unfortunately, I do not have a simple setPWM(pin, dutyCycle) library.

In my pov3d/LED-Torus project, I need to control the TLC5955 with the highest possible speed. So the only code I have is optimised to build the data to send to the TLC5955's directly and start DMA transfer.

The code that constructs the data to send is in make_scan_planes() in tlc.c.

The data transfer is then started using DMA in the function start_dma_scanplanes() in spi.c. Once the transfer completes, the new data is latched by function latch_scanplanes().

The necessary initial configuration of the TLC5955s happens in function setup_tlc5955() in spi.c.

Maybe it's off topic, but I cannot find way to control TLC5955 . I am using 32F429IDISCOVERY board.

I suppose you are looking for something polished like the TLC5940 library for the Arduino. I do not know of any such code currently. The TLC5955 is a very nice chip, but rather new; maybe someone will make something eventually.

I basically read the TLC5955 datasheet in detail and wrote the code accordingly.

srdjanarsic commented 9 years ago

It will be very hard, as I am new to STM32. But I will try. Thank you very much.

zackphillips commented 8 years ago

Hi, I've written a TLC5955 library for the Arduino as part of a research project - you might find it useful: https://github.com/zfphil/TLC5955

Let me know if you find any issues!

-Zack

knielsen commented 8 years ago

Nice, Zack, I am sure people will find this useful.

According to TLC5955 datasheet, the control register must be written twice with the same values to take effect, but I only see this done once in your code (updateControl())? I am wondering if the datasheet is wrong? Alternatively, you should see that the LEDs only turn on at the second run of the example following TLC5955 powerup? Well, just a thought...

zackphillips commented 8 years ago

Ah I must have missed that detail in the datasheet - Thanks for pointing it out! Setting the current levels and function control bits seems to work well for me so far, but it could be a precaution which prevents weird behavior, so probably good to have two writes to do just in case. I won't have time to test the changes on my device until Wednesday at best, but I'll test this out and push the change as soon as I can.