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.

[参考译文] TLC5916:LED驱动程序与SN74LV125A交互时出现问题

Guru**** 2322270 points
Other Parts Discussed in Thread: TLC5916, SN74LV125A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/580406/tlc5916-led-driver-problems-interacting-with-sn74lv125a

部件号:TLC5916
主题中讨论的其它部件: SN74LV125A

您好,

我正在开发一个系统,它包含大量 TLC5916IPWR在多个板上以菊花链方式连接在一起。  

该系统将涉及24块连接在一起的主板,但在仅连接两块主板后就会出现问题。

我看到的问题是每个主板之间的数字数据损坏。 第一块板显示正确的模式,但下一块板显示错误的像素。 之后连接的每块板看起来都越来越差。 查看下面两块连接的板,其排列方式简单易变(第一块位于右侧,第二块位于左侧)。 第一个有死像素):

如您所见,主板非常大(13"X19"),通过6英寸带状电缆连接。 Vsys在测试中由12V墙上电源提供,但设计为由12V电池供电。 由于光束宽度较窄的LED指示灯,上述图像中的亮度可能会有所不同。

请参阅下面的主板示意图:

PDF版本,有关更多详细信息:

e2e.ti.com/.../ALS_5F00_Character_5F00_ThroughHole.pdf

原理图中缺少的是,我已向两个缓冲器添加了0.1uF (CHIP0402)去耦合,为线性稳压器的输入额外添加了10uF (CHIP1206),为线性稳压器的输出增加了47uF (电解径向引线,短切)。

鉴于第一块板工作正常,我的假设是问题与缓冲器和LED驱动器之间的交互有关。 以下是示波器跟踪,显示更多信息:

数字脉冲:

放大边线:

黄色迹线是缓冲区外的CLK,紫色迹线是缓冲区内的CLK,青色迹线是缓冲区外的SDI线路之一,蓝色迹线是在U2的VCC输入处测量的5V线路。

这些边缘并不是很好确定,但它们似乎在规格范围内(而且由于我添加了从CLK输入到GND的1K电阻器,它们更好)。

我希望您能了解串行数据损坏的原因,或者了解如何进一步调试的一些提示。 感谢你能抽出时间。

-Spencer Allen

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

    我需要查看此应用程序的更多详细信息。
    1.指示灯。 这些LED的正向电压是多少? 您为每个信道设置了多少电流?
    2.设备运行模式。 设备运行的是哪种模式? 正常模式还是特殊模式?
    3.拓扑。 在原理图中,这5个LED驱动器不是直接级联,而是通过缓冲区级联。 由于此设备支持直接级联实现,您是否尝试过不使用缓冲区?
    4.未使用的通道。 由于这是8通道LED驱动器,我很好奇为什么不使用所有通道,而是为每个通道保留一个通道?
    5.印刷电路板布局。 PCB布局文件是否也可以发送出去?

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

    您好Jason:

    感谢您的回复。

    1)使用的LED是Cree C503B-aan。 典型正向电压为2.1V。数据表如下。

    e2e.ti.com/.../3173.MT-C503B_2D00_R_2D00_A_2800_15_2D00_30_2900_.pdf</s>2800 2900

    根据LED驱动器数据表,Rext电阻器为1.4K,电流设置点为13.39mA

    2)设备仅在正常模式下运行;目前我不支持特殊模式

    3)有五个并联串,从一个板级联到另一个板级联。 如前所述,这些板中最多可以有24个级联。 使其成为并行系列拓扑可提高更新速率。 时钟,频闪灯和使能信号需要在每个板上重新生成缓冲器,否则它们会降级。 LED驱动器的SDO引脚也会进行缓冲,以防止时钟和数据线之间出现竞争情况。

    4)这是基于板的选定像素配置,即7行X 5列。 每列有一个驱动程序是有意义的,但这确实意味着一个输出未使用。

    5)以下是从其制造的布局的Altium文件。 如果您需要不同的文件类型,请告诉我。 请注意,自从收到主板后,我已经更改了主板。 除了我前面提到的额外电容之外,我绕过了板上的缓冲器,将两个相同的缓冲器拼接到带状电缆(在发现上述竞争情况后)。 在以前的版本中,如果您对奇怪的布局样式感兴趣,则主板完全是单面的。

    e2e.ti.com/.../LED-Board-Layout.zip

    我要说的是,在下一版的主板中,我已经在两侧放置了铜板,而不是现在的空位。

    感谢您的参与,

    -Spencer

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

    由于此TLC5916在正常模式下使用,因此所有设备都应使用默认设置(电流增益,电压增益),对吗?

    请您在第一张图中标记正确的图案和错误的图案吗?
    另请帮助捕获每个板(正确的板和错误的板)的SDI,SDO和时钟信号的波形。 顺便提一下,请检查代码是否正确发送到每台设备。

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

    您好Jason:

    正确,驱动程序用于默认设置。

    请参见下面标记的图像:

    以下是根据请求进行的示波器跟踪。 仅在第5列上进行测量,但每个列都应相同。 在每个图像中,跟踪按从上到下的顺序为SDI,SDO,CLK:

    板1,放大单个帧:

    板1,放大到第一条边线:

    板2,放大单个帧:

    线路板2,放大到第一条边线:

    两个主板的SDI似乎都正确。 但2号船上的《性别歧视条例》似乎因某种原因而被颠倒。

    谢谢!

    -Spencer

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

    您是否愿意分享您发送到设备的代码? 如果有任何问题,您可以通过下面的电子邮件发送给我。
    我怀疑代码发送可能有问题。

    顺便说一句,请您发送一张图像,但仅通电1个设备的1个通道。

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

    您好,

    以下代码是为Arduino pro micro编写的:

    Int columnPin[]={5,6,7,8,9};
    int enablePin =10;
    int strobePin =3;
    int clockPin =4;
    int ledPin =13;
    
    void setup(){//pin
    
    setup
    for (int i =0;i < 5; i++){
    pinMode (columnPin[i],输出);
    }
    pinMode (enablePin,输出);
    pinMode (strobepin, 输出);
    pinMode (时钟引脚,输出);
    pinMode (时钟引脚,输出);
    
    digitalWrite (enablePin,low);
    //analogWrite (enablePin,127);
    //确保时钟开始低
    digitalWrite (clockPin,low);
    
    }
    
    void loop(){
    int ledState =0;
    for (int j =0;j < 8;j+){
    
    如果(ledState == 0){
    ledState = 1;
    对于(int i = 0;i < 5;I++){
    digitalWrite(columnPin[I],高);
    }
    
    
    }其他{
    ledState = 0;
    对于(int i = 0;i < 5;I++){
    digitalWrite(columnPin[I],低);
    }
    }
    
    DelayMicroseconds(100);
    digitalWrite (时钟引脚,高);
    DelayMicroseconds(100);
    digitalWrite (clockPin,低);
    
    }
    DelayMicroseconds (100);
    digitalWrite (strobePin,high);
    delayMicroseconds (100);
    digitalWrite (strobePin, 低);
    
    DELAY (100);
    } 

    所请求的一个像素的供电图像如下:

    由以下代码生成:

    void loop(){
    for (int j =0;j < 8;j++){
    如果(j=4){
    digitalWrite(columnPin[2],高);}
    否则{
    digitalWrite(columnPin[2],低);
    }
    
    DelayMicroseconds(100);
    digitalWrite (时钟引脚,高);
    DelayMicroseconds(100);
    digitalWrite (clockPin,低);
    
    }
    DelayMicroseconds (100);
    digitalWrite (strobePin,high);
    delayMicroseconds (100);
    digitalWrite (strobePin, 低);
    
    DELAY (100);
    } 

    此致,

    -Spencer

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

    请参阅数据表图7,请为SDI数据设置更长的设置时间。SDI和CLK可能存在一些竞争。

    我建议将所有延迟时间更改为更长的值,例如1秒。 这样您就可以确认电压处于直流值。 它的传输速度可能太快,SN74LV125A (x2)的信号不符合预期。 这应该不是设备问题。

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

    您好,

    我浏览了3行测试图案代码,每一个delayMicroseconds (100)都更换了一个DELAY (1000)。 结果模式没有改变(看起来和我3月20日的帖子中所显示的一样)。

    考虑到100微秒已超过数据表第7页所示的最小设置时间的几个数量级,这是有意义的。

    谢谢!

    -Spencer

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

    您好 ,Spencer,

    我的意思是,SDI数据应该有足够的设置时间,然后CLK上升边缘才会到来。 否则,SDI和CLK之间可能存在竞争(导致数据错误)。

    在您之前提供的波形中,CLK上升边缘似乎在SDI数据更改的同时出现。 请在CLK上升边缘之前添加一些延迟。

    此致,

    Jason

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

    Jason,

    很抱歉回复延迟。 我明白了为什么波形与代码不匹配。 我在修改代码以在建议的地方添加延迟时遇到了问题;似乎没有任何改变。 但我意识到我仍然在“缓冲区”之后*看着信号。 所以我将我的代码恢复为原始代码(延迟1毫秒而不是100us),并在缓冲区之前测量第一块板上的信号:

    这是Arduino提供的测量结果,因此我的代码似乎工作正常。 其他因素会延迟时钟信号,因此当它从缓冲区中出来时,它太靠近SDI线路。 但是 ,如果所有的行都缓冲得相等,我看不出来会是什么样子。 有什么想法吗?

    谢谢!

    -Spencer

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

    我认为这应该与缓冲区有关,而不是与LED驱动器有关。 您是否可以尝试使用另一个响应速度更快的缓冲区?

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

    我会订购一些零件,但我不太理解您的建议。 如果每条线的缓冲相等,缓冲区的响应时间会如何影响边缘之间的时间? 我选择这个缓冲区是因为它的速度非常快。

    谢谢!
    -Spencer