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.

[参考译文] TLC5973:需要示例代码

Guru**** 2454710 points
Other Parts Discussed in Thread: TLC5973

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1539791/tlc5973-need-a-sample-code

器件型号:TLC5973


工具/软件:

我需要用于 Arduino Due 的示例代码和用于 项目的 STM32 代码。 我特此附上了一个原理图⁣       

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

    尊敬的 Ramesh:

    附加了基于 msp432p401r 的示例代码以供您参考。

    但我想知道您的工程中是否有多个器件级联连接要求。 如果没有、我强烈建议您查看新器件 LP5815、 这是一款更具成本竞争力且具有更多高级功能的 3 通道 I2C 接口 RGB LED 驱动器。 同时、GUI 和 EVM 板也可用于您的早期开发。

    e2e.ti.com/.../3731.TLC5973_5F00_Sample_5F00_Code.zip

    此致、

    Felix  

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

    是的、感谢您的答复。

    我正在使用 Arduino 试用 TLC5973。 我正在 SDI 引脚中发送 48 位数据;我无法在 OUT0、OUT1 和 OUT2 中获得正确的响应。 我谨随函附上我的代码。

    const int SDI_PIN = 2
    const int tCycle_us = 5 //较慢:500kHz

    void setup(){
     Serial.begin(115200);
     引脚模式(SDI_PIN,输出)
     digitalWrite(SDI_PIN,低电平)
    }

    void sendZero(){
     digitalWrite(SDI_PIN,低电平)
     delayMicroseconds (tCycle_us)
     数字写入(SDI_PIN,高电平)
     delayMicroseconds (tCycle_us)
     digitalWrite(SDI_PIN,低电平)
    }

    void sendOne (){
     digitalWrite(SDI_PIN,低电平)
     delayMicroseconds (tCycle_us * 0.3)
     数字写入(SDI_PIN,高电平)
     delayMicroseconds (tCycle_us * 0.7)
     digitalWrite(SDI_PIN,低电平)
    }

    void sendbit(bool bit){
     位? sendOne():sendZero()
     SERIAL.PRINT(位? “1":“:“0")“)
    }

    //void sendData (uint16_t out0)
    void sendData (uint16_t out0uint16_t out1、uint16_t out2)
     
     //uint64_t packet =((uint64_t) 0x3AA << 36)|((uint64_t) out0 << 24); // OUT1 和 OUT2 = 0
     //[12 位 CMD (0x3AA)][12 OUT0][12 OUT1][12 OUT1][12 OUT2]
     uint64_t packet = 0
     Packet |=((uint64_t) 0x3AA << 36)   //写入命令
     Packet |=((uint64_t) out0 << 24)    // OUT0
     数据包|=((uint64_t) OUT1 << 12)    // OUT1
     数据包|=((uint64_t) OUT2 << 0)    // OUT2
     serial.print (“发送:“)
     sendbit(0);sendbit(0) // tCycle calibration

     for (int i =47;i >= 2;i--){
      sendBit ((packet >> i)& 1)
     }
     serial.println()

     // EOS
     digitalWrite(SDI_PIN,低电平)
     delayMicroseconds (tCycle_us * 10)

     // GSLAT
     delayMicroseconds (tCycle_us * 20) //扩展以实现可靠性
     数字写入(SDI_PIN,高电平)
     delayMicroseconds (1)
     digitalWrite(SDI_PIN,低电平)
    }

    void loop(){
     // Serial.println(“on");</s>“
     // sendData (0xFFF);
     //延迟 (1000);

     // Serial.println(“off")“);
     // sendData (0x000);
     //延迟 (1000);

     serial.println(“on")“)
     sendData (0xFFF、0xFFF、0xFFF)//所有 LED 均亮起
     延迟 (1000)

     serial.println(“off")“)
     sendData (0x000、0x000、0x000)//所有 LED 均熄灭
     延迟 (1000)

     // sendData (0xFFF); //将 OUT0 全亮度设置一次
     // while (true);  //停止

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

    尊敬的 Ramesh:

    请允许我花一些时间阅读代码。

    我会尽快回复你。

    此致、

    Felix

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

    我对此做了一些更新。 在 SDI 线路中、测得的两个上升沿周期为 10.26us。 根据数据表、我们需要得到 0.33 到<=10us。 我是对的吗?

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

    尊敬的 Ramesh:

    根据数据表上的规格、支持的最小数据传输周期应大于 10us。

    您是否尝试过缩短重新进行测试的时间?

    此致、

    Felix

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

    尊敬的 Ramesh:

    是否可以在 LED 闪烁时使用示波器来捕获通信波形?

    我们需要找出根本原因是数据值不正确还是违反数据时序。

    此致、

    Felix

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

    您好 Felix:

    感谢您的答复。

    LED 不闪烁、但我在 SDI 线路中发送的数据下方附加了相关数据。  

    https://postimg.cc/68RdBK11

    https://postimg.cc/8JKScqnq

    https://postimg.cc/8JKScqnq

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

    尊敬的 Ramesh:

    单击链接时源被阻止。

    如果不介意、我们能通过电子邮件跟踪该主题吗? 这是我的电子邮件地址 felix-wang@ti.com

    此致、

    Felix