This commit is contained in:
alex04130 2024-03-18 20:50:24 -05:00
parent 5db75e3ae3
commit 1a89b523b3
2 changed files with 15 additions and 13 deletions

View File

@ -180,8 +180,8 @@ esp_err_t sw7203_driver_install(sw7203_config_t *sw7203_config, i2c_master_bus_h
gpio_config_t sw7203_int_gpio_config = { gpio_config_t sw7203_int_gpio_config = {
.pin_bit_mask = 1ull << sw7203_INT_gpio_num, .pin_bit_mask = 1ull << sw7203_INT_gpio_num,
.mode = GPIO_MODE_INPUT, .mode = GPIO_MODE_INPUT,
.pull_down_en = gpio_pulldown_dis, .pull_down_en = GPIO_PULLDOWN_DISABLE,
.pull_up_en = gpio_pullup_en, .pull_up_en = GPIO_PULLUP_ENABLE,
}; };
gpio_config(&sw7203_int_gpio_config); gpio_config(&sw7203_int_gpio_config);
} }
@ -406,7 +406,7 @@ esp_err_t sw7203_driver_uninstall(i2c_master_bus_handle_t I2C_bus_handle)
void SW7203IntCallBack() void SW7203IntCallBack()
{ {
uint8_t buffer; uint8_t buffer;
sw7203_reg_read(0x04, buffer); sw7203_reg_read(0x04, &buffer);
if (buffer & 0x40) if (buffer & 0x40)
{ {
ESP_LOGW(SW7203_TAG, "VSYS Over Voltage!"); ESP_LOGW(SW7203_TAG, "VSYS Over Voltage!");
@ -471,7 +471,7 @@ void SW7203IntCallBack()
} }
buffer = 0x7f; buffer = 0x7f;
sw7203_reg_write(0x04, &buffer); sw7203_reg_write(0x04, &buffer);
sw7203_reg_read(0x05, buffer); sw7203_reg_read(0x05, &buffer);
if (buffer & 0x80) if (buffer & 0x80)
{ {
ESP_LOGW(SW7203_TAG, "Chip Over Temperature!"); ESP_LOGW(SW7203_TAG, "Chip Over Temperature!");

View File

@ -3,6 +3,8 @@
#include "driver/i2c_master.h" #include "driver/i2c_master.h"
#include "esp_log.h" #include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
typedef enum typedef enum
{ {
@ -10,6 +12,15 @@ typedef enum
sw7203_port_A2 sw7203_port_A2
} sw7203_I2C_port; } sw7203_I2C_port;
typedef struct
{
uint16_t VBUSVoltage_mV; // 放电 VBUS 输出电压设置 [3000,22000] 单位毫伏mV
uint16_t VBATVoltageLimit_mV; // 放电 VBAT 欠压设置 [2700,13200] 单位毫伏mV
uint16_t VBATVoltageLimitHysteresis_mV; // 放电 VBAT 欠压迟滞设置 [400,2000] 单位毫伏mV
uint16_t VBUSCurrentLimit_mA; // 放电 VBUS 输出限流设置 [500,6850] 单位毫安mA
uint16_t VBATCurrentLimit_mA; // 放电 VBAT 输出限流设置 [100,12000] 单位毫安mA
} sw7203_Vout_config_t;
typedef sw7203_Vout_config_t *(*SW7203OutputConfigCallBack_t)(sw7203_I2C_port); typedef sw7203_Vout_config_t *(*SW7203OutputConfigCallBack_t)(sw7203_I2C_port);
void SW7203IntCallBack(); void SW7203IntCallBack();
@ -55,15 +66,6 @@ typedef enum
sw7203_I2c_0x18 = 3 sw7203_I2c_0x18 = 3
} sw7203_I2C_address_t; } sw7203_I2C_address_t;
typedef struct
{
uint16_t VBUSVoltage_mV; // 放电 VBUS 输出电压设置 [3000,22000] 单位毫伏mV
uint16_t VBATVoltageLimit_mV; // 放电 VBAT 欠压设置 [2700,13200] 单位毫伏mV
uint16_t VBATVoltageLimitHysteresis_mV; // 放电 VBAT 欠压迟滞设置 [400,2000] 单位毫伏mV
uint16_t VBUSCurrentLimit_mA; // 放电 VBUS 输出限流设置 [500,6850] 单位毫安mA
uint16_t VBATCurrentLimit_mA; // 放电 VBAT 输出限流设置 [100,12000] 单位毫安mA
} sw7203_Vout_config_t;
typedef struct typedef struct
{ {