This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TLC5946 only accepts 10 LEDs

Hi!

When I send static PWM data to the IC, all leds light up in the respective brightness. But when I regularly change the data (animations, fading etc), only every 2nd led lights up and the lighting LEDs are pretty dim. When I only send 10 pwm data words (120bit total), these leds work properly (and the rest is off). I'm operating the device in the "normal" mode (not the double mode). The PWM clock is about 22MHz.

This is the method I use to transmit data (stm32f4; C):

void TIM2_IRQHandler()
{
	TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

	GPIO_ResetBits(MODE_Port, MODE_Pin);	//Go to GS mode

	for(int i = 0; i < 16; i+=2){
		SPI_SendData(SPI1, (uint8_t)(brightnessValues[i] >> 4));
		while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY));
		SPI_SendData(SPI1, (uint8_t)(brightnessValues[i] << 4 | brightnessValues[i + 1] >> 8));
		while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY));
		SPI_SendData(SPI1, (uint8_t)(brightnessValues[i + 1]));
		while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY));
	}

	GPIO_SetBits(BLANK_Port, BLANK_Pin);
	GPIO_SetBits(XLAT_Port, XLAT_Pin);
	GPIO_ResetBits(XLAT_Port, XLAT_Pin);
	GPIO_ResetBits(BLANK_Port, BLANK_Pin);
}

The pwm data is changed in the main method in a while(1) loop regularly, but in proper intervalls, not just spamming.