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.

[参考译文] TLC6C5712-Q1:LED 驱动器配置问题

Guru**** 2484615 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/699956/tlc6c5712-q1-led-driver-configuration-issue

器件型号:TLC6C5712-Q1

我的 SPI 通信工作正常。 我可以在 SPI 总线上看到发送和接收的数据。 因此、为了检查 LED 驱动器配置、我编写了以下代码、以在 MAP_0寄存器中写入数据并将其读回。

LedSpiCmdWriteWord (0x6C、0xCC);/*发送解锁映射命令*/

LedSpiCmdReadWriteVerify (0x40、0X11、0x80、&SPI_ERROR);//用于检查 LED 驱动器的代码

LedSpiCmdWriteWord (0x68、0xA5);//发送锁定映射命令*/

SPI MOSI 引脚的数据记录为--> 6CCC 4011 8000 0000 68A5

SPI MISO 引脚的数据记录为--> 2000 2444 0000 8024 0000

因此、当我使用地址0x40在 Map Register_0中写入0x11时、使用地址0x80读取 Map_0寄存器时、我将获得0x24作为返回值。

可能出了什么问题?

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

    似乎有一个位被删除到左边、请检查数据读取配置是否存在任何问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没明白。 请详尽说明。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的命令似乎没有问题、我只想确认一点、您是否每16位数据发送一次锁存信号? 对于寄存器读取命令、16位数据首先移入器件、然后发送锁存信号、然后移动16位虚拟位、在发送虚拟位期间、读取数据将通过 SDO 移出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我在每16位数据之后发送锁存信号。 即使在发送16位虚拟位期间、我也会发送锁存信号。 下面是读取寄存器的代码



    /*忽略第一个字节读回。 发送读取寄存器和虚拟字节*/
    (void) SpiTxBytes (SPI_LED、LED_READ_register、LED_Dummy_SPI_byte、&SPI_comm_error); /*发送读取寄存器地址*/

    if (SPI_COMM_ERROR = SPI_COMM_ERROR_NO_ERROR)

    /*发送另一个虚拟字节对以读回请求的值*/
    * return_BYTE =(U8) SpiTxBytes (SPI_LED、LED_dummy_SPI_byte、LED_dummy_SPI_byte、&SPI_comm_error);//传递另一个字以超时返回字*/
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是"SpiTxBytes"函数的代码。 这部分代码用于通过 SPI 总线进行读取和写入



    E_CSIH0_error csih_0_error;
    S16. 超时 = CSIH_TX_TIMEOUT;
    布尔值 等待 =真;
    U16 SPI_Rx;

    csih_0_error = Csi0CSActiveAsilB (SPI_device);//将 LATCH Signal Low 设置为*

    if (csih_0_error =CSIH0_NO_ERROR)

    CSIH0TX0H = TH_WORD; /*发送16位数据*/

    /*等待传输完成*/
    while (等待!= false)

    if (((CSIH0STR0和 CSIH0_COMM_BUSY)!= CSIH0_COMM_BUSY)

    Wait = false;

    否则(超时<=(S16) 0)

    Wait = false;
    csih_0_error = CSIH0_TX_TIMEOUT;

    其他

    超时--;



    csih_0_error = Csi0CsiInactiveAsilB (SPI_device);//将锁存信号设置为高电平*
    SPI_Rx = CSI0RX0H;//读取接收到的字节*/
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请原谅我对调试如此详细的软件并不是很好、但我们有一份 TLC6C5712软件配置应用手册。 也许您可以参考这些文档来检查读取的数据是否存在任何问题。

    www.ti.com/.../slva802.pdf