【Telink TL322X 测评】第三章:串口日志与 USB CDC 识别测试
# 【Telink TL322X 测评】第三章:串口日志与 USB CDC 识别测试* **本章继续梳理 TL322X 的日志输出链路,包括 USB 识别、板载 CH343 UART、文本日志输出和 VS Code/串口工具的配合方式。**
**## **3.0 当前自动化验证记录
**本章使用 **`ble_controller` 工程结构改造出 UART 文本日志固件,已经完成构建、烧录、读回校验和串口文本抓取:
| **项目** | **结果** |
| ---------------- | ------------------------------------------------------------------------ |
| **SDK target** | `ble_controller` |
| **固件** | `firmware\eval02_uart_text_log.bin` |
| **大小** | **135716 bytes** |
| **SHA256** | `A79E2B5D12E6CD52AF25B98842D1FFF4B270D0A2F7566D6FD40C1063DBAD6C8E` |
| **烧录验证** | `verified`,读回 SHA256 与本地固件一致 |
| **烧录日志** | `logs\flash_eval02_uart_text_log.log` |
| **串口日志** | `logs\uart_text_eval02_uart_text_log.log` |
| **UART 输出**| `COM41`,1000000 8N1,TEXT 模式可直接显示 ASCII |
**本章已达到的效果:UART 文本日志固件可以从独立源码副本构建并写入开发板,Flash 读回校验通过。Telink CDC 仍然是 WinUSB 下载口,不作为普通串口使用;板载 CH343 USB 转 UART 映射到 **`COM41`,可直接看到 `` 文本日志。
## 3.1 本章任务目标
**本章主要完成以下任务:**
```
1. 记录 Windows 下开发板枚举出的 USB 设备;
2. 区分 Telink CDC WinUSB 下载口和普通串口 COM 口;
3. 构建并烧录 UART 文本日志固件;
4. 确认 SDK printf/log/HCI 默认输出接口;
5. 为后续 BLE、协议栈和功耗测试建立统一日志保存方式。
```
## 3.2 开发板与测试方式
**本章测试链路如下:**
```
设备管理器确认 Telink CDC / WinUSB
↓
构建 UART text log 固件
↓
烧录并读回校验
↓
检查板载 CH343 USB-UART COM 口
↓
打开 COM41 并按 TEXT 模式接收
↓
记录 `` 周期文本日志
```
**需要特别注意:**`Telink CDC` 这个名字容易误导。当前驱动状态显示它绑定 `WinUSB`,用于 BDT 下载和 TC 命令,不等同于 `USB Serial Device (COMx)`。
## 3.3 独立工程与 SDK 基线
**本章记录目录为:**
```
D:\Project\Evaluation\Telink\eval_projects\02_uart_log_cdc
```
**本章源码副本位于:**
```
src\sdk
```
**本章使用的主要源码入口为:**
```
src\sdk\vendor\ble_controller
```
**工程内关键记录文件:**
```
src\build_config.json
src\source_manifest.md
firmware\eval02_uart_text_log.bin
logs\flash_eval02_uart_text_log.log
logs\uart_text_eval02_uart_text_log.log
```
## 3.4 关键源码与配置
**与本章相关的主要文件如下:**
| **文件** | **作用** |
| -------------------------------------------------- | ------------------------------------------- |
| `src\sdk\vendor\ble_controller\main.c` | **controller 示例入口** |
| `src\sdk\vendor\ble_controller\app.c` | **UART 文本日志初始化和周期输出** |
| `src\sdk\vendor\ble_controller\app_buffer.c` | **controller buffer 配置** |
| `src\sdk\vendor\ble_controller\app_config.h` | **UART 文本日志、时钟、功能宏等配置入口** |
| `src\sdk\drivers\TL322X` | **TL322X 外设驱动源码** |
**当前 TL322X UART 文本日志配置如下:**
```
#define HCI_TR_EN 0
#define TLKAPI_DEBUG_ENABLE 1
#define TLKAPI_DEBUG_CHANNEL TLKAPI_DEBUG_CHANNEL_UART
#define TLKAPI_DEBUG_UART_PORT DBG_UART_PORT2
#define TLKAPI_DEBUG_UART_TX_PIN GPIO_FC_PD6
#define TLKAPI_DEBUG_UART_RX_PIN GPIO_FC_PD7
#define TLKAPI_DEBUG_UART_BAUDRATE 1000000
```
**其中 **`PD6` 作为 TL322X 的 UART\_TX,接到 CH343 的 RXD;`PD7` 作为 TL322X 的 UART\_RX,接到 CH343 的 TXD。本章关闭 HCI 二进制传输,避免串口助手把不可打印字节显示成方框乱码。
## 3.5 编译、烧录与读回校验
**重新构建本章工程:**
```
powershell -NoProfile -ExecutionPolicy Bypass -File ..\run_tl322x_eval_matrix.ps1 -OnlyProjects 02_uart_log_cdc -NoFlash
```
**构建并补烧:**
```
powershell -NoProfile -ExecutionPolicy Bypass -File ..\run_tl322x_eval_matrix.ps1 -OnlyProjects 02_uart_log_cdc
```
**手动烧录命令格式:**
```
TC.exe all
TC.exe ulf 0 0 -d 1 --chip=TL322X
TC.exe wf 0 -i firmware\eval02_uart_text_log.bin -d 1 --chip=TL322X
TC.exe rf 0 135716 -o firmware\eval02_uart_text_log_readback.bin -d 1 --chip=TL322X
```
**当前读回校验结果:**
```
Firmware SHA256:
A79E2B5D12E6CD52AF25B98842D1FFF4B270D0A2F7566D6FD40C1063DBAD6C8E
Readback SHA256:
A79E2B5D12E6CD52AF25B98842D1FFF4B270D0A2F7566D6FD40C1063DBAD6C8E
```
**UART 文本日志校验命令:**
```
.\tools\uart_text_capture.ps1
```
```
Port: COM41
Baud: 1000000 8N1
text log count=100 tick=2400102664
text log count=101 tick=2424104424
text log count=102 tick=2448104496
```
## 3.6 实测现象
**当前已经确认:**
```
1. Telink CDC 下载口可以被 TC.exe 使用;
2. Telink CDC 当前不是普通 COM 口;
3. UART text log 固件可以构建、烧录并读回校验通过;
4. 板载 CH343 USB-UART 枚举为 COM41;
5. COM41 在 1000000 8N1 下可以直接显示 ASCII 文本日志;
6. 本章工程中的 src\sdk 可作为 UART 文本日志方向源码分析入口。
7. 设备管理器中 CH343 COM41 的截图;
8. 串口工具 TEXT 模式显示 `` 文本日志的截图;
9. 开发板复位后串口文本日志重新输出的视频;
10. USB 连接线、开发板和串口工具同框的实物验证素材。
```
## 3.7 图片和视频展示
* **设备管理器中 Telink CDC WinUSB 设备**
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/114926jpzpm7rnig1zzdjg.png)
* **设备管理器中 **`USB-Enhanced-SERIAL CH343 (COM41)` 的截图
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/114954lmllemxjjh0j9nwm.png)
* `TC.exe` 写入、读回和 SHA256 一致的命令行截图
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/115018r1wwrgaw67wd31mt.png)
* **串口工具 TEXT 模式显示 **`` 周期文本日志的截图
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/115154ufpxdklr8aktradt.png)
* `app_config.h` 中 `HCI_TR_EN=0`、`PD6 TX / PD7 RX / 1000000` 配置截图
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/115237x99njzn44p9p4in6.png)
* **开发板连接电脑后,串口助手打开并持续输出文本日志,按键复位后,串口文本日志重新开始输出的过程视频**
## 3.8 问题记录
### 3.8.1 Telink CDC 不显示 COM 口
**Telink CDC 当前绑定 WinUSB,用于下载链路,不是 **`usbser` 串口。解决方法是把它作为 BDT/TC 下载口使用,日志口另行通过 UART 排针确认。
### 3.8.2 UART 引脚方向需要按开发板原理图确认
**开发板手册中 CH343 连接到 TL3228X 的 **`PD7(UART_RX)` 和 `PD6(UART_TX)`。因此本章文本日志使用 `TLKAPI_DEBUG_UART_TX_PIN = GPIO_FC_PD6` 输出日志,串口助手选择 `COM41 @ 1000000 8N1` 接收即可。
### 3.8.3 COM41 被串口助手占用
**自动化脚本第一次打开 **`COM41` 时返回 `Access denied`,原因是 `嵌核调试助手` 已经连接该串口。释放串口后,PowerShell 串口脚本可以正常打开 `COM41` 并抓取文本日志。
### 3.8.4 HCI 二进制数据在串口助手中显示为方框
`ble_controller` 默认 HCI UART 返回的是二进制协议包,例如 `04 0E 04 01 03 0C 00`。当前串口助手的接收窗口按文本显示,不可打印字节会显示为方框,看起来像乱码。解决方法是把本章固件改为 UART 文本日志版本,关闭 HCI Transport,并使用 TLKAPI 硬件 UART 输出 ASCII 日志。
## 3.9 本章测试结论
**阶段性结论:**
```
1. 02 号工程已经具备独立源码和可复现固件;
2. UART text log 固件构建、烧录和读回校验通过;
3. Telink CDC 是 WinUSB 下载口,不是日志 COM 口;
4. 板载 CH343 COM41 是本章 UART 文本日志验证入口;
5. 串口助手用 TEXT 模式可以直接看到 `` 周期日志。
```
## 3.10 本章小结
**第三章把“下载口”和“UART 日志口”这两个容易混淆的概念拆开了。当前下载链路已经可靠,UART 文本日志链路也已经通过板载 CH343 的 **`COM41` 验证成功。后续串口截图和录屏,可以沿用本章确认的 `1000000 8N1` 配置。
页:
[1]