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.

[参考译文] TPS61165:EasyScale 协议不工作

Guru**** 2767655 points

Other Parts Discussed in Thread: TPS61165

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1609988/tps61165-easyscale-protocol-not-working

器件型号: TPS61165

我能够通过 PWM @ 10kHz Ctrl 引脚调暗显示器、此器件工作正常。  但我无法使单线 EasyScale 功能正常工作。   

我将 TPS61165 与 STM32 配合使用。  我已通过示波器验证发送到 CTRL 引脚的每个脉冲、并验证了脉冲在所需时序的 0.5us 内。   我不会在芯片上电期间尝试设置为 Easyscale、而是在加电后尝试设置为 Easyscale。  因此、我将 CTRL 引脚保持在低电平 5ms 以使芯片进入关断状态、然后尝试唤醒并使其进入 Easyscale。

这是我的代码 EasyScale.c 

我调用 TPS61165_Easya Scale_Enable ()、然后调用 TPS61165_Easya Scale_Set (16)  

 
 

如果您能看到我的错、请查看、感谢您的帮助!

 

 

 

 

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

    我发现了问题。  在地址字节发送低电平 5us (EOS) 后、在发送数据字节之后、 在开始位之前需要低电平持续 5us (EOS)。   

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

    void TPS61165_EasyScale_Set(uint8_t level) {
        if (level > 31) level = 31;
    
        // 1. Device Address Byte (0x72) 
        // 0111 0010 MSB first [cite: 861, 949]
        send_bit(0); send_bit(1); send_bit(1); send_bit(1);
        send_bit(0); send_bit(0); send_bit(1); send_bit(0);
        ES_HIGH(); delay_us(5); // EOS [cite: 953]
    
    	ES_LOW(); delay_us(5); // EOS
        // 2. Start Condition for Data
        ES_HIGH(); delay_us(5); // Ensure line is high before start
    
        // 3. DATABYTE: RFA=0, A1=0, A0=0, D4-D0=Level 
        send_bit(0); // RFA 
        send_bit(0); // A1 
        send_bit(0); // A0 
        for (int8_t i = 4; i >= 0; i--) {
            send_bit((level >> i) & 0x01); // D4 to D0 
        }
    
    	ES_LOW(); delay_us(5); // EOS
        ES_HIGH(); delay_us(30); // Final EOS to latch 
    }