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.

[参考译文] TPS55288:初始步骤

Guru**** 2420510 points
Other Parts Discussed in Thread: TPS55288

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1509604/tps55288-first-steps

器件型号:TPS55288

工具/软件:

要查看电路板是否正确操作、配置的初始步骤是什么? 基于软件

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

    您好、Stefan:

    对于软件、您可以首先尝试通过 I2C 与 I2C 进行通信、查看您可以读取 IC 寄存器值。 并使用寄存器默认值进行检查。

    BRS、

    布莱斯

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

    嘿、所以它可以工作、默认为5V、但我不能像5.9V 那样过、即使我输入最大输出、所以将所有位切换为1、我在开路时总是得到6V (无负载连接、只有万用表)。 降压模式有点正常、可能我的代码不正确?

    #include

    // TPS55288 I2C 地址
    #define TPS55288_ADDR 0x74

    //寄存器地址
    #define MODE_REG 0x06
    #define VOUT_MSB_REG 0x00 // DAC 的 MSB (0x00)
    #define VOUT_LSB_REG 0x01 // DAC 的 LSB (0x01)、在 MSB 之后作为第二个字节发送

    void setup(){
    //在 ESP32上初始化 I2C
    Wire.begin(22、18);// SDA = GPIO22、SCL = GPIO18
    Serial.begin(115200);
    延迟(1000);
    }

    void enable_output (){
    //读取模式寄存器
    Wire.beginTransmission(TPS55288_ADDR);
    WIRE.WRITE (MODE_REG);
    wire.endTransmission (false);//重复启动

    Wire.requestFrom (TPS55288_ADDR、1);
    uint8_t modeVal = 0;
    如果(Wire.Available()){
    modeVal = Wire.read ();
    serial.print ("当前模式值:0x");
    serial.println (modeVal、hex);
    }其他{
    serial.println ("读取模式寄存器失败");
    }

    //设置 OE (位7)
    modeVal || 0b10000000;

    //写回 MODE 寄存器
    Wire.beginTransmission(TPS55288_ADDR);
    WIRE.WRITE (MODE_REG);
    wire.write (modeVal);
    如果(Wire.endTransmission()==0){
    serial.println ("成功启用 OE (输出已启用)");
    }其他{
    serial.println ("启用 OE"失败);
    }
    }

    void SET_OUTPUT_VOLTAGE_max (){
    //将 DAC 设置为0x03FF (最大10位值)
    uint16_t reg_value = 0x03FF << 6;//左对齐10位 DAC 值
    uint8_t MSB =(reg_value >> 8)& 0xFF;//应为0xFF
    uint8_t lsb = reg_value 和0xFF;//应为0xC0

    //写入 VOUT 寄存器(MSB、然后是 LSB)
    Wire.beginTransmission(TPS55288_ADDR);
    WIRE.WRITE (VOUT_MSB_REG);//从寄存器0x00开始
    wire.write (msb);
    wire.write (lsb);
    如果(Wire.endTransmission()==0){
    serial.println ("VREF 设置为最大值(≈1200mV VOUT)");
    }其他{
    serial.println ("设置 VOUT 失败");
    }
    }

    void loop(){
    enable_output ();//将 OE 设为1
    SET_OUTPUT_VOLTAGE_max ();//将 VREF 设置为最大值(1200mV)

    delay(2000);//每2秒重复一次
    }

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

    您好、Stefan:

    感谢您的联系。

    我们将研究这一点,并在这两天回复你。

    BRS、

    布莱斯

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

    您好、Stefan:

    请检查是否在写入00h 后写入了寄存器01h。 您还能否检查内部寄存器的值是否与您写入的值相同?

    BRS、

    布莱斯