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.

[参考译文] TLC5947:意外的空白引脚行为

Guru**** 2493175 points
Other Parts Discussed in Thread: TLC5947, TLC59711

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/702734/tlc5947-unexpected-blank-pin-behavior

器件型号:TLC5947
主题中讨论的其他器件: TLC59711

我正在运行 Adafruit ()提供的三个 TLC5947电路板链 、每个链都是从 Arduino Nano 中拆裂的。 经过大量研究(包括来自这些论坛的大量资源、谢谢!)、我已经了解到 TLC5947并不是为了实现快速变化、因此 LED 状态发生变化时有时会闪烁。

在禁用空白引脚的情况下、三个链中的两个表现优于预期、如视频1中所示。 它们从什么都没有衰减到红色、蓝色和绿色的完全亮度、而没有任何明显的断续。 但是、第三个链似乎随机运行或多或少。 当我启用空白引脚时、所有引脚都按预期工作、所有引脚都会关闭。我已经订购了更换 TLC59711电路板、但希望能够深入了解此问题! 如果我可以让这些板像视频1中的两个板那样工作、这将是最好的情况。 此外、我意识到这里有许多可能的变量、因此、如果有任何有用的关键信息、请告诉我。

提前感谢您的 help.e2e.ti.com/.../video1.mp4

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

    如何设置空白引脚?

    如果您将“Blank Always Low”(始终为低)设置为“Blank Always”(始终为低),则当 XLAT 出现时,通道处于关闭状态的时间段内。

    如果空白部分变为 XLAT 以重置 GS 计数器,则将不会有长时间关闭状态,并且在 XLAT 变为低电平后更新新周期。

    如果您认为这可以回答您的问题、请帮助您单击"解决"。

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

    感谢您的快速响应!

    以下是该库的实现:

    void Adafruit_TLC5947::write (void){
    // digitalWrite (_ENA、HIGH);
    digitalWrite (_lat、LOW);
    //每个 TLC5974有24个通道
    (int16_t c=24*numdrivers - 1;c >=0;c-){
    //每个通道12位,首先发送 MSB
    对于(int8_t b=11;b>=0;b-){
    digitalWrite (_clk、low);
    
    IF (pwmbuffer[c]和(1 << b))
    digitalWrite (_dat、HIGH);
    其他
    digitalWrite (_dat、low);
    
    digitalWrite (_clk、HIGH);
    }
    }
    digitalWrite (_clk、low);
    
    digitalWrite (_lat、high);
    digitalWrite (_lat、low);
    // digitalWrite (_ENA、 低);

    正如您在第一行和最后一行看到的、我在数据传播前将空白引脚(在本例中为_ENA)设置为高电平、并在数据锁存后将其恢复为低电平。 现在已注释掉、这是导致2/3 SPI 链中的极好响应、而另一个 SPI 链中的奇怪随机行为的原因。 当这些行未注释时、3/3 SPI 链会显示正确的 LED 值、但每次转换时都会出现可见的闪烁、如预期的那样。 我的目标是尝试使第三个 SPI 链的运行方式与前两个 SPI 链类似、这两个 SPI 链在 LED 转换状态时不闪烁。

    我已经尝试切换分配给每个 SPI 链的数字引脚、认为这是微控制器的问题、但效果是一样的。

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

    您好、Richard、

    请参阅驱动代码2 TLC5947:

    e2e.ti.com/.../16LEDs_5F00_Ring_5F00_Code.zip

    谢谢。

    此致、

    Kenneth

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

    肯尼思、您好、抱歉、我的回答很慢。

    感谢您提供代码示例。 我对所有这些都比较陌生、因此很抱歉、我无法找到用于驱动2个 TLC5947的代码。 在 main.c 中、我注意到发送数据的方法与我实现的方法稍有不同、因此我将尝试一下、但我没有看到2个 TLC5947的特定情况。 如果您能将我指向一个特定的文件、那会很棒!

    此外、我不知道这会解决为什么有时即使是链式 TLC5947在写入数据时也能很好地响应、而其他器件则随机运行、除非 LAT 引脚保持低电平。 我知道有很多可能的变量、但我想知道您对这种行为是否有任何见解。

    芯片很棒、我很乐意解决这个问题!

    再次感谢您的帮助。

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

    main.c i 共享是用于驱动2 TLC5947的代码。

    正如您所说、1 TLC5947和2 TLC5947之间的差异不大。

    只需确保在下面的 LAT 代码处、请将代码添加到脉冲空白:
    digitalWrite (_lat、HIGH);
    digitalWrite (_lat、low);

    请参阅以下示例:
    GPIO_setOutputHighOnPin (GPIO_PORT_P5、GPIO_PIN4);//空-高电平
    GPIO_setOutputHighOnPin (GPIO_PORT_P5、GPIO_PIN5);//XLAT-HIGH
    _DELAY_CYCLES (6);//Twh1 XLAT 高电平脉宽6/25M=240ns
    GPIO_setOutputLowOnPin (GPIO_PORT_P5、GPIO_PIN5);//XLAT-LOW
    GPIO_setOutputLowOnPin (GPIO_PORT_P5、GPIO_PIN4);//空-低电平

    如果问题得到解决、请帮助单击"解决"。

    谢谢。
    此致、
    Kenneth