Tool/software: Code Composer Studio
Hi,
Could you please share TLC5926-Q1 control source code, can't find in TI web.
Thank you.
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.
Tool/software: Code Composer Studio
Hi,
Could you please share TLC5926-Q1 control source code, can't find in TI web.
Thank you.
How do you need to control the TLC5926-Q1? What is the application?
#include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_sysctl.h" #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_nvic.h" #include "inc/hw_gpio.h" #include "driverlib/gpio.h" #include "driverlib/sysctl.h" #include "driverlib/interrupt.h" #include "driverlib/sysctl.h" #include "driverlib/systick.h" //define delay time #define DELAY_TIME 100 //SDI define SDI #define SDI_HEIGHT GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_0, ~0); #define SDI_LOW GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_0, 0); //CLK define CLK #define CLK_HEIGHT GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_2, ~0); #define CLK_LOW GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_2, 0); //LE define LE #define LE_HEIGHT GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_3, ~0); #define LE_LOW GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_3, 0); //OE define OE #define OE_HEIGHT GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_4, ~0); #define OE_LOW GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_4, 0); //define read SDO #define SDO_READ (GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_1) >> 1) #define OUT_ENABLE OE_LOW // mode #define NORMAL_MODE 0 #define SPECIAL_MODE 1 //CLK plus function void clkPlus(); // send data with IO and simulate SPI behavior void SendData(unsigned char uData); //set mode void SetMode(unsigned char uMode); //send command in special mode to adjust the DC void SendCmd(unsigned char uCmd); //read error code unsigned int ReadErrCode(); int main() { HWREG(SYSCTL_MWRALLOW) = 0xA5A5A5A5; unsigned int err; unsigned int utData = 0x01; unsigned long deData1 = 1000; unsigned long deData2 = 1000; unsigned long deData3 = 10; SysCtlClockConfigSet(SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2 | SYSCTL_USE_PLL | (SYSCTL_SPLLIMULT_M & 0x0F)); // set the GPIO pin function SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ); // send SDI pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_0); // send CLK pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_2); // set LE pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_3); // set OE pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_4); // set SDO pin as input GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_5); LE_HEIGHT; OE_HEIGHT; CLK_LOW; while(1) { //rolling effect SendData(utData); //set data, rolling effect utData = utData << 1; //max LED value is 8. if(utData == 256) utData = 0x01; //enter special mode SetMode(SPECIAL_MODE); //special mode err = ReadErrCode(); //read error code // error bit is 0 //send LED brightness is 50% SendCmd(0xef); //return to normal mode SetMode(NORMAL_MODE); // set to normal mode OE_LOW; while(deData1) //rolling effect { deData1 --; while(deData2) { deData2 --; while(deData3) deData3 --; } } deData1 = 1000; deData2 = 1000; deData3 = 10; //enter special mode SetMode(SPECIAL_MODE); //set 100% brightened SendCmd(0xff); //enter normalmode SetMode(NORMAL_MODE); } return 0; } //send data void SendData(unsigned char sData) { unsigned long deData = DELAY_TIME; unsigned char times = 8; LE_LOW; CLK_LOW; while(times) { if(sData & 0x80) { SDI_HEIGHT; } else { SDI_LOW; } clkPlus(); sData = sData << 1; times --; } LE_HEIGHT; while(deData) deData --; LE_LOW; } //set mode void SetMode(unsigned char uMode) { unsigned long deData = DELAY_TIME; LE_LOW; CLK_LOW; while(deData) deData --; deData = DELAY_TIME; OE_HEIGHT; clkPlus(); OE_LOW; clkPlus(); OE_HEIGHT; clkPlus(); if(uMode == SPECIAL_MODE) { LE_HEIGHT; } else { LE_LOW; } clkPlus(); LE_LOW; clkPlus(); } //send command void SendCmd(unsigned char uCmd) { unsigned long deData = DELAY_TIME; unsigned char time = 8; CLK_LOW; OE_HEIGHT; LE_LOW; while(deData) deData --; deData = DELAY_TIME; //send data command while(time) { if(uCmd & 0x80) { SDI_HEIGHT; } else { SDI_LOW; } if(time == 1) { LE_HEIGHT; } clkPlus(); uCmd = uCmd << 1; time --; } LE_LOW; clkPlus(); } //read error code unsigned int ReadErrCode() { unsigned long deData = 500; unsigned long temp; unsigned int index = 8; unsigned int errCode = 0x00; CLK_LOW; LE_LOW; OE_HEIGHT; clkPlus(); OE_LOW; while(deData) { clkPlus(); deData --; } CLK_HEIGHT; deData = DELAY_TIME; while(deData) deData --; deData = DELAY_TIME; OE_HEIGHT; while(index) { index --; CLK_LOW; temp = GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_5); while(deData) deData --; deData = DELAY_TIME; if(temp != 0) { errCode = errCode | (0x01 << index); } CLK_HEIGHT; while(deData) deData --; deData = DELAY_TIME; } return errCode; } //simulate CLK void clkPlus() { unsigned long deData = DELAY_TIME; CLK_HEIGHT; while(deData) deData --; deData = DELAY_TIME; CLK_LOW; while(deData) deData --; deData = DELAY_TIME; } //the 100% brightness main int main() { HWREG(SYSCTL_MWRALLOW) = 0xA5A5A5A5; unsigned int err; unsigned int utData = 0x01; unsigned long deData1 = 1000; unsigned long deData2 = 1000; unsigned long deData3 = 10; SysCtlClockConfigSet(SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2 | SYSCTL_USE_PLL | (SYSCTL_SPLLIMULT_M & 0x0F)); // set the GPIO pin function SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ); // send SDI pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_0); // send CLK pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_2); // set LE pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_3); // set OE pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_4); // set SDO pin as input GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_5); LE_HEIGHT; OE_HEIGHT; CLK_LOW; while(1) { SendData(0xff); //enter specialmode SetMode(SPECIAL_MODE); //send LED 100% brightness SendCmd(0xff); //进入normal模式 SetMode(NORMAL_MODE); } return 0; } //set the 50% brightness main function int main() { HWREG(SYSCTL_MWRALLOW) = 0xA5A5A5A5; unsigned int err; unsigned int utData = 0x01; unsigned long deData1 = 1000; unsigned long deData2 = 1000; unsigned long deData3 = 10; SysCtlClockConfigSet(SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2 | SYSCTL_USE_PLL | (SYSCTL_SPLLIMULT_M & 0x0F)); // set the GPIO pin function SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ); // send SDI pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_0); // send CLK pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_2); // set LE pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_3); // set OE pin as output GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_4); // set SDO pin as input GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_5); LE_HEIGHT; OE_HEIGHT; CLK_LOW; while(1) { SendData(0xff); //enter special mode SetMode(SPECIAL_MODE); //set LED 50% brightness SendCmd(0xef); // ENTER normal mode SetMode(NORMAL_MODE); } return 0; }