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.

[参考译文] TLC5957:多路复用应用中的3个菊花链 TLC

Guru**** 2589280 points
Other Parts Discussed in Thread: TLC5957

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/755769/tlc5957-3-daisy-chained-tlc-in-a-multiplex-application

器件型号:TLC5957

大家好、我必须在40x25 RGB 矩阵中驱动3个简单的链式 TLC5957。 我根据我的需求调整了"TIDA-01615参考代码"的代码。

第一个 TLC 正常工作、因此16x25 maxtrix 正常工作。 现在、我需要在  所有3个器件之间移动 GS 数据锁存的位模式。

与示例中一样、我使用9位扑克模式来减少数据。 现在、我将讨论如何在器件中移动9位图形。

您能就此向我提供任何建议吗?

下面是我 用于编写 GS 数据的经改编的代码:

void WriteGSData_Poker3 (int * temp1、int * temp2、int * temp3){

int *DataArray[]={temp1、temp2、temp3};
LAT (0);
//循环3次时间,以便在
(int device = 0;device < 3;+device){

for (i = 8;i >=0;i--){
for (j = 47;j >= 0; j--){
//如果
((DataArray[器件][j]&(1 << I))=(1 << I)
) SIN (1);
否则
SIN (0);
SCLK (0);
SCLK (1);
如果(器件= 2 & j = 3 & I =
1);LATLAT (0)/命令= 1)、则获得具有正确偏移的数据

否则、如果(device == 2 && j ==1)//WRTGS Command
LAT (1);

}
如果(device ==2 && I ==0){
//before to outpus are enabled with the new LED pattern、请关闭前一行
mcp23s17_disable_lines();
}
LAT (0);
}}
}
} 

另一个问题是、与示例中一样、通过每个 专用 GPIO 引脚的位拆裂来实现通信。

 是否可以将其与 MCU 中的实际硬件 SPI 模块结合使用? 您能否为 TLC59XX 提供示例 SPI 项目

感谢 Stefan、致以最诚挚的问候  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Stefan、

    让我们来看看这个问题、下周一回复您。

    谢谢。
    此致、
    Kenneth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Stefan、

    1) 1)对于使用9位扑克模式级联三个器件的序列、似乎存在问题、

    对于数据:

    第1次发送 MSB:48位(IC2)+48位(IC1)+48位(IC0)

    第2个 MSB-1位:48位(IC2)+48位(IC1)+48位(IC0)

    '

    '

    '

    第9 LSB:48位(IC2)+48位(IC1)+48位(IC0)

    2) 2)具有标准 SPI 的 MCU 无法用于与该器件通信、如您所见、序列有两个并行输入 SIN 和 LAT 信号、但标准 SPI 只有一个输入 SDI。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Shawn

    是的、我认为你是对的、9位扑克模式有问题。 但这个答案让我没有进一步。

    我自己找到了另一种可能的解决方案:

    我将3个 TLC5957安排在虚拟并行模式下、因此不会以菊花链形式连接它们。

    每个器件都有自己的来自 MCU 的 SIN 数据 GPIO。 SCLK、LAT 和 GCLK 连接在一起、  

    在 WriteGSData_Poker3p ()例程中,我根据每个器件的数据设置三个 SIN () GPIO 引脚,然后切换所有器件的 SCLK。

    通过此配置、我可以同时将数据馈送到所有3个器件中:

    您能告诉我、这是一个合适的解决方案、还是有什么缺点我目前看不到?

    BR Stefan

    //@
    
    
    @brief 将所有3个 TLC5957的 LED 数据发送到 GS 数据存储器中// TLC5957 No1的@param temp1数据// TLC5957 No2的@param temp2数据// TLC5957 No3
    的 param temp3数据 void WriteGSLAT Data_Poker3p (*2),for TLC5957 NO2
    
    (*2,*2),*温度3 (0),*温度3 (0),int temp3 (0),*温度3 (0),int (0) I >=0;I--){
    for (j = 47;j >=0;j-){
    //为器件1
    SIN (temp1[j]>i)发送
    SIN 数据;//为器件2
    SIN2 (temp2[j]>i)发送 SIN 数据;
    //为器件3
    SIN3 (temp3[j]>I
    
    )同时发送 SIN 数据;/temp3[0>LK (temp3);/<temp3
    );/LK (针对所有器件同步发送 SIN)
    SCLK (1);
    如果(j = 3 && I = 0)//LATGS 命令
    LAT (1);
    否则(j = 1)//WRTGS 命令
    LAT (1);
    }
    //在激活新数据之前,如果
    (i = 0){
    mcp23s17_disable_lines();
    }
    LAT (0),请禁用线路驱动器
    
    





  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    好消息、感谢您的反馈。

    如果 MCU GPIO 资源足够、则没关系。

    此致、
    肖恩。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    您是否已解决此问题?
    如果您有更多问题或疑虑、请告知我们、我将暂时关闭此主题。

    谢谢!

    此致,
    肖恩