## 声明：请遵守开源协议，禁止商用，转载请注明出处
# 项目简介：为什么要做这个嵌入式调试器工具？
在本人学习嵌入式和做项目的过程中，一直存在几个痛点：
- 嵌入式调试工具冗杂，且一般一个模块只能实现一个功能，接线杂乱
- 笔记本接口普遍较少，不接拓展坞的情况下难以插接多个调试模块
- 大学生学习嵌入式时难以配齐所有工具，且部分工具价格较高

所以为了解决这些问题，我耗时三个月，基于ESP32S3和LVGL，制作了这款多功能嵌入式调试工具，具有DAPlink、逻辑分析仪、串口助手、数控电源、无线下载调试器等十余种不同的功能，涵盖了大部分嵌入式的调试场景，实测可以有效且优雅地解决以上的痛点，最关键的是，所有器件均采用容易购买且性价比高的器件，制作成本控制在百元以内
# 产品渲染图
<img src="picture/QQ20241010-120226.png" alt="图片描述" width="100%" height="auto">

# 产品实物图
<img src="picture/IMG20241010232657.jpg" alt="图片描述" width="100%" height="auto">

# 硬件说明
## 系统框图：
<img src="picture/QQ20241010-170726.png" alt="图片描述" width="100%" height="auto">

## PCB结构：
项目由两块PCB构成，电源控制板为四层板，信号板为两层板，采用分立叠板设计，通过1.27mm排针连接
- 电源控制板：主要负责调试器与电脑的通信、数控电源、简易示波器、屏幕显示、无线下载器等功能
- 信号板：主要负责逻辑分析仪和DAPlink等功能
## 关于系统电源：
项目的电源输入存在三种情况：电脑usb的5v输入、使用pd充电器的12v诱骗电压输入、使用内部电池输入。

首先考虑前两种情况，电源由typec接口输入后分为两路，一路经由MP28167变换为5v送入ip5306电池充放电管理芯片，为3.7v锂电池充电的同时提供5v电压，经过SY8120B变换为3.3v为各个芯片供电；另一路经由TPS5450提供数控可调电源，需要注意的是，使用数控电源时需要12v的诱骗电压，所以必须要配合支持pd诱骗的充电器使用。

## 关于数控电源和电压测量：
项目实现数控电源的方法是基于数字电位器和功率监测芯片实现的，通过数字电位器作为电源芯片的反馈电阻，单片机通过i2c协议控制数字电位器的阻值来控制输出电压，INA226将测得的功率数据反馈给单片机。

这里在数控电源的输出控制端采用了双PMOS背靠背连接的电路，实现了电源的双向关断，所以我们可以通过关闭双PMOS实现外界输入的电压测量，打开双PMOS时则是内部的数控电源向外输出。

## 关于USB：
项目采用CH334F将一路usb信号拓展至四路，其中ESP32S3、RP2040和CH549G各连接一路，另外的一路由一个usbA口引出，可以外接usb设备同时为开发板或者手机供电。

## 关于元件选型：
- 主控采用ESP32S3主要是看重单片机的无线能力，ESP32S3内置有低功耗蓝牙和wifi模块，可以实现无线串口和无线下载器的功能，240MHz的主频可以实现较快的数据处理。

- FLASH内存芯片采用W25Q128JVPIQ，从ESP32S3的数据手册得知ESP32S3最大支持外挂16MB也就是128Mb的FLASH芯片，这里直接上最大的容量，SRAM直接使用单片机内部自带的PSRAM空间共8MB。

- 逻辑分析仪采用的是基于树莓派RP2040的方案，支持八通道（原方案是24通道，本项目引出了八通道）最大100MHz采样率，外挂FLASH为W25Q16JVSSIQ，2MB容量。

- DAPLink采用的是CH549G的方案，支持ARM和RISCV单片机下载调试，支持一路usb虚拟串口。理论上DAPLink和逻辑分析仪都可以使用ESP32S3来实现，采用分立器件实现这两个功能成本较高，但好处是可以通过USBHUB并行使用这些功能。

- 功率监测芯片采用的是INA226，最大支持20v的电压测量，我这里使用的采样电阻为0.05欧姆，改变采样电阻会改变采样电流分辨率，同时需要修改电流计算部分的代码。

- 屏幕采用的是1.69寸的电容触摸屏，驱动芯片为ST7789V（spi接口），触摸驱动为CST816T（i2c接口），采样排线插接的方式安装。

- 天线采用IPEX座插接的2.4g天线，为了保证信号质量，需要将天线贴在外壳底面，实测无线信号良好，连接稳定。

## 关于电路防护：
项目所有的外接IO口均使用ESD器件和限流电阻保护，防止静电击穿，电源供电部分串联自恢复保险丝，防止过流。


## 关于焊接：
焊接顺序建议为：电源控制板->信号板

优先焊接电源部分，电源部分测试通过后焊接其他部分，推荐使用热风枪加锡膏进行焊接



# 软件说明


项目的软件基于VScode+PIO，移植了LVGL作为UI界面，整体代码逻辑为标志位+前后台。


## 代码结构
Exlink项目文件夹下包含以下几个文件：

### .pio        （pio配置文件）
### .vscode     （vscode配置文件）
### build       （编译生成的文件）
### include     （包含的头文件）
### lib         （包含的库文件）
- Arduino-CST816T-Library （CST816T库）
- INA-master（INA226库）
- lvgl（lvgl库）
- TFT_eSPI（屏幕驱动库）
### src（源文件）
- main.cpp（主程序文件）
- ui.c（ui文件）
- ui.h（ui头文件）
- main_png.c（图片数组文件）
- event.c（事件回调文件）
- event.h（事件回调头文件）
### test        （测试文件）
### .gitignore  （屏蔽文件）
### my.csv      （ESP32S3内存分配表） 
### platformio.ini（pio项目配置文件）

# 结构说明

# 固件下载和烧录

# 参考资料
