读取SW3518s寄存器并且显示
ESP32-C6读取SW3518s寄存器并且显示
·
硬件连接
TFT_SCLK --> 2
TFT_MOSI --> 3
TFT_RST --> 4
TFT_DC --> 6
TFT_CS --> 7
GPIO1 --> SCK
GPIO2 --> SDA
GND --> GND
程序
步骤1: 按照前面教程下载好库文件
步骤2: 编写代码
- 新建项目

输入代码
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <h1_SW35xx.h>
#define TFT_SCLK 2 // Clock out
#define TFT_MOSI 3 // Data out
#define TFT_RST 4
#define TFT_DC 6
#define TFT_CS 7
//______TFT_BL 不接
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
using namespace h1_SW35xx;
SW35xx sw(Wire);
const char *fastChargeType2String(SW35xx::fastChargeType_t fastChargeType) {
switch (fastChargeType) {
case SW35xx::NOT_FAST_CHARGE:
return "Not fast charge";
break;
case SW35xx::QC2:
return "QC2.0";
break;
case SW35xx::QC3:
return "QC3.0";
break;
case SW35xx::FCP:
return "FCP";
break;
case SW35xx::SCP:
return "SCP";
break;
case SW35xx::PD_FIX:
return "PD Fix";
break;
case SW35xx::PD_PPS:
return "PD PPS";
break;
case SW35xx::MTKPE1:
return "MTK PE1.1";
break;
case SW35xx::MTKPE2:
return "MTK PE2.0";
break;
case SW35xx::LVDC:
return "LVDC";
break;
case SW35xx::SFCP:
return "SFCP";
break;
case SW35xx::AFC:
return "AFC";
break;
default:
return "unknown";
break;
}
}
void setup(void) {
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(1);
tft.print("Hello!");
Serial.begin(115200);
Wire.begin(D0, D1 );
sw.setMaxCurrent5A();
sw.begin();
}
void loop(void) {
sw.readStatus();
// 清除顶部的显示区域
tft.fillRect(0, 0, 128, 80, ST7735_BLACK);
// 然后再绘制新的内容
tft.setCursor(0, 0);
tft.print("Power Monitor");
tft.drawLine(0, 16, 128, 16, ST7735_WHITE); // 分隔线
// 显示输入电压
tft.setCursor(0, 20);
tft.print("Vin:");
tft.setCursor(40, 20);
tft.print(sw.vin_mV);
tft.print(" mV");
// 显示输出电压
tft.setCursor(0, 30);
tft.print("Vout:");
tft.setCursor(40, 30);
tft.print(sw.vout_mV);
tft.print(" mV");
// 显示USB-C电流
tft.setCursor(0, 40);
tft.print("USB-C:");
tft.setCursor(40, 40);
tft.print(sw.iout_usbc_mA);
tft.print(" mA");
// 显示USB-A电流
tft.setCursor(0, 50);
tft.print("USB-A:");
tft.setCursor(40, 50);
tft.print(sw.iout_usba_mA);
tft.print(" mA");
// 显示快充类型
tft.setCursor(0, 60);
tft.print("FastCharge:");
tft.setCursor(60, 60);
tft.print(fastChargeType2String(sw.fastChargeType));
// 如果是PD协议,显示PD版本
if (sw.fastChargeType == SW35xx::PD_FIX || sw.fastChargeType == SW35xx::PD_PPS) {
tft.setCursor(0, 70);
tft.print("PD Ver:");
tft.setCursor(60, 70);
tft.print(sw.PDVersion);
}
// 分隔线和结束
tft.drawLine(0, 80, 128, 80, ST7735_WHITE);
tft.setCursor(0, 90);
tft.print("=====================================");
delay(1000);
//tft.fillScreen(ST7735_BLACK);
}
步骤3: 上传代码
- 在IDE的工具菜单中,设置板卡类型为XIAO ESP32C6,并通过“工具” > “端口”选择正确的串行通信端口。

- 将修改后的代码上传至开发板。成功上传后,打开串口监视器。

- USBA口连接手机充电。可以看见显示屏正确显示充电电压和充电电流,还有快充类型

更多推荐



所有评论(0)