diff --git a/Docs/10_requirements-overview/main.md b/Docs/10_requirements-overview/main.md index 56246cd..4e81a30 100644 --- a/Docs/10_requirements-overview/main.md +++ b/Docs/10_requirements-overview/main.md @@ -18,7 +18,7 @@ graph TD 1. **传感器触发**:探测到异常时,发射固定编码信号(24位 EV1527 协议数据,包含 20位地址码 + 4位数据码)。 2. **手环独立接收**:手环配备 LR690L 433MHz 接收解调芯片,独立进行软件自适应时序解码。 3. **手环响应行为**: - * **屏幕显示**:1.14寸(135x240 像素,**竖直排版**)TFT LCD 屏幕,**保持常亮显示时间**。报警时呈现对应的报警 ICON + 传感器法语名称。 + * **屏幕显示**:1.14寸(135x240 像素,**竖直排版**,型号为 **SPEC LHS114TC-IF03 VER A**)TFT LCD 屏幕,**保持常亮显示时间**。报警时呈现对应的报警 ICON + 传感器法语名称。 * **灯效响应**:可编程 RGB 灯珠根据传感器类型亮起对应颜色并进行特定波形闪烁。 * **马达响应**:马达触发特定的振动次数与时长组合。 4. **手环主动发射与辨识**: diff --git a/Docs/20_requirements-detail/main.md b/Docs/20_requirements-detail/main.md index d7c9685..34464dd 100644 --- a/Docs/20_requirements-detail/main.md +++ b/Docs/20_requirements-detail/main.md @@ -19,11 +19,11 @@ > 1. **双 SOS 按键冗余**:上部的两个 SOS 键在电路与软件上完全等价。按下其中任意一个按键,均会触发相同的 SOS 信号采集与求救动作。 > 2. **警报快速解除**:在手环发出主动 SOS 呼救或响应被动防区报警时,按下“确认键”或任意一个“SOS 键”(或者长按“▼键”2秒)均会立刻切断声光电反馈,安全重置至时钟待机状态。 > 3. **确认页序号手动修改**:当捕获到匹配 of 射频信号进入对码确认页时,界面将显示当前选定的前缀和初始序号。用户可以使用 ▲ 键增加序号,使用 ▼ 键减少序号(范围 `01` 到 `99`,达到边界自动截断),选中后按下“确认键”或任意“SOS 键”进行保存。 -> 4. **屏幕常亮与全时射频监测**:系统不进行任何低功耗关屏或停机操作。TFT LCD 屏幕始终常亮显示时钟待机画面。主频与 1ms 定时中断全时运转,使 433MHz 射频解调模块保持 100% 实时无线监听接收,并在任何时候(包括待机和菜单状态)按下 SOS 均能实现即刻发送求救包。 +> 4. **屏幕常亮与全时射频监测**:系统不进行任何低功耗关屏或停机操作。TFT LCD 屏幕始终常亮显示时钟待机画面。主频与 1ms 定时中断全时运转,配置 **`P0.0` (ADC 通道 8)** 进行电池电量采样,配置 **`P2.7`** 监测充电插拔状态。使 433MHz 射频解调模块保持 100% 实时无线监听接收,并在任何时候(包括待机和菜单状态)按下 SOS 均能实现即刻发送求救包。 ## 2. 传感器对码与报警映射矩阵 -手环接收到 433MHz 传感器射频数据后,通过匹配预设数据码(高 4 位为类型)和地址码,根据下表驱动多色 LED、马达振动波形并更新 OLED 显示。本系统支持 7 种不同的外部传感器类型,并预留了出厂预设的固定名称前缀。 +手环接收到 433MHz 传感器射频数据后,通过匹配预设数据码(高 4 位为类型)和地址码,根据下表驱动多色 LED、马达振动波形并更新 LCD 显示。本系统支持 7 种不同的外部传感器类型,并预留了出厂预设的固定名称前缀。 | 传感器类型 | 数据码标识 | 预设名前缀 | LED 颜色 | 默认防区类型 | 马达振动波形 (周期 5 秒) | | :--- | :--- | :--- | :--- | :--- | :--- | diff --git a/Docs/30_architecture/main.md b/Docs/30_architecture/main.md index ae7320e..d86f1b0 100644 --- a/Docs/30_architecture/main.md +++ b/Docs/30_architecture/main.md @@ -18,13 +18,14 @@ | **P0.4** | `KEY_CONFIRM`| 高阻输入+上拉 | 侧边按键 ■ (确认),按下为低电平 | | **P0.2** | `KEY_SOS1` | 高阻输入+上拉 | 上部按键 SOS 1,按下为低电平 | | **P0.5** | `KEY_SOS2` | 高阻输入+上拉 | 上部按键 SOS 2,按下为低电平 | -| **P1.0** | `SGM_CTRL` | 推挽输出 | 屏幕/驱动供电使能。高电平使能,低电平关闭 | +| **P3.4** | `SGM_CTRL` | 推挽输出 | LCD 屏幕背光与芯片电源控制引脚。高电平使能,低电平关闭 | | **P1.1** | `LCD_RST` | 推挽输出 | LCD 屏幕复位引脚 | | **P1.3** | `LCD_RS` | 推挽输出 | LCD 屏幕 SPI 数据/命令寄存器选择 (D/C) | | **P1.4** | `LCD_CS` | 推挽输出 | LCD 屏幕 SPI 片选信号 | | **P1.5** | `LCD_SCL` | 推挽输出 | LCD 屏幕 SPI 时钟信号 | | **P1.6** | `LCD_SDA` | 推挽输出 | LCD 屏幕 SPI 数据信号 | -| **P2.3** | `ADC3` | 模拟输入 | 电池电压采样输入端口 | +| **P0.0** | `BAT_ADC` | 模拟输入 | 电池电压采样输入端口,对应硬件 ADC 通道 8 (A8) | +| **P2.7** | `USB_DET` | 高阻输入 | USB 插入充电检测引脚,高电平代表正在充电 | ### 1.2 上部双 SOS 键并联逻辑设计 diff --git a/Docs/40_ui-design/main.md b/Docs/40_ui-design/main.md index 9e27307..7b23c67 100644 --- a/Docs/40_ui-design/main.md +++ b/Docs/40_ui-design/main.md @@ -6,7 +6,7 @@ * **屏幕规格**:1.14寸 TFT LCD 屏,物理分辨率 **`135x240`**。 * **竖向屏规范**:屏幕窗口配置为 **`135` 像素宽,`240` 像素高**。页面中的时钟、菜单、报警元素均采用竖屏垂直居中排版。 -* **坐标偏移修正**:写屏窗口渲染存在 **4 像素的 X 轴偏移量**,调用 `LCD_SetWindow(x1 + 4, x2 + 4, y1, y2)`。 +* **坐标偏移修正**:TFT LCD 驱动芯片(ST7789V)的显示 RAM 大小为 240x320 像素。在控制 135x240 的竖屏物理面板时,为了将显示窗口完美对齐至显示区域,防止花屏或偏置错误,写屏窗口渲染必须应用 **X 轴偏移量 +52,Y 轴偏移量 +40**。即:`LCD_SetWindow(x1 + 52, x2 + 52, y1 + 40, y2 + 40)`。 * **局部刷新防抖机制**:清除重绘标志(`Redraw`)的动作必须在具体的刷新绘制块结束时重置,防止因为主循环高速轮询而产生屏幕闪烁。 --- @@ -31,8 +31,8 @@ * **状态栏电量显示(极重要)**: * **电池图标** 绘制在 `X=107, Y=27`。 - * **电量百分比** 绘制在 `X=77, Y=24`。 - * 两个控件在 `135` 像素宽的屏幕上保持 **6 像素安全间距**(77 + 3*8 = 101,与 107 之间为 6px),彻底防范乱码和字符相撞。 + * **电量百分比** 绘制在 `X=77, Y=24`。如果处于充电状态,追加 `+` 号后缀显示为 `85%+`,起始绘制点向左平移(如 `X=69`)以确保与电池图标之间依然有安全间距。 + * 两个控件在 `135` 像素宽的屏幕上保持 **6 像素安全间距**,彻底防范乱码和字符相撞。 * **安防状态显示**: * **布防状态 (ARMED)**:状态栏左侧显示红色闭锁 `🔒` 图标,显示 `ARME`。 * **撤防状态 (DISARMED)**:状态栏左侧显示绿色开锁 `🔓` 图标,显示 `DESARME`。 diff --git a/Docs/50_module-breakdown/mod-key.md b/Docs/50_module-breakdown/mod-key.md index 06d64eb..3bc226b 100644 --- a/Docs/50_module-breakdown/mod-key.md +++ b/Docs/50_module-breakdown/mod-key.md @@ -44,4 +44,4 @@ typedef enum { * 检测到确认键释放,注入 `KEY_CONFIRM_CLICK`。 * 事件解析完毕后存入 `key_event_buf`。 - + diff --git a/Docs/50_module-breakdown/mod-lcd.md b/Docs/50_module-breakdown/mod-lcd.md index eec2341..3db91af 100644 --- a/Docs/50_module-breakdown/mod-lcd.md +++ b/Docs/50_module-breakdown/mod-lcd.md @@ -13,10 +13,10 @@ ## 2. 底层显示接口 -* `void LCD_Init(void)`:初始化 LCD 引脚,置 `SGM_CTRL = 1` 使能供电,并发送屏幕控制器的初始化 SPI 寄存器序列。 +* `void LCD_Init(void)`:初始化 LCD 引脚,置 `SGM_CTRL = 1` 使能背光与供电,并发送 **ST7789V** 屏幕控制器的初始化寄存器配置序列。 * `void LCD_WriteCmd(u8 cmd)`:拉低 `LCD_RS` 发送 SPI 命令。 * `void LCD_WriteData(u8 dat)`:拉高 `LCD_RS` 发送 SPI 数据。 -* `void LCD_SetWindow(u16 x1, u16 y1, u16 x2, u16 y2)`:设置局部像素绘制范围(强制处理 X 轴偏量 `+4`)。 +* `void LCD_SetWindow(u16 x1, u16 y1, u16 x2, u16 y2)`:设置局部像素绘制范围,以适配 135x240 竖屏在 240x320 GRAM 上的对齐(强制处理 **X 轴偏移量 +52,Y 轴偏移量 +40**)。 * `void LCD_Clear(u16 color)`:将整块屏幕刷写为特定背景色。 ## 3. 图文绘制与 UI 渲染 diff --git a/Docs/50_module-breakdown/mod-power.md b/Docs/50_module-breakdown/mod-power.md index 8ada8b6..2a811dc 100644 --- a/Docs/50_module-breakdown/mod-power.md +++ b/Docs/50_module-breakdown/mod-power.md @@ -13,7 +13,7 @@ * `void Power_Init(void)`: 1. 配置 `SGM_CTRL` 引脚为推挽输出模式。 - 2. 设置 `SGM_CTRL = 1` 开启 LCD 屏幕与背光供电。 + 2. 设置 `SGM_CTRL = 1`(物理引脚 `P3.4`)开启 LCD 屏幕与背光供电。 * `void Enter_Deep_Sleep(void)`:已作废。手环永不进入此函数,保持主循环及射频实时解调。 - + diff --git a/Docs/50_module-breakdown/mod-rf.md b/Docs/50_module-breakdown/mod-rf.md index ccc0c67..373982f 100644 --- a/Docs/50_module-breakdown/mod-rf.md +++ b/Docs/50_module-breakdown/mod-rf.md @@ -27,4 +27,4 @@ * 该函数被手环用作向 IPC 摄像头主动对码绑定(`data_code = 0x01`)。 * 该函数也用于手环主动发射 SOS 紧急呼救包(`data_code = 0x08`),此时传入手环自身的出厂固定 ID `bracelet_factory_id`。 - + diff --git a/Docs/50_module-breakdown/mod-sys.md b/Docs/50_module-breakdown/mod-sys.md index def2677..932ba7d 100644 --- a/Docs/50_module-breakdown/mod-sys.md +++ b/Docs/50_module-breakdown/mod-sys.md @@ -59,4 +59,9 @@ typedef enum { 3. 提取 UID 中的后 3 字节,并通过 `& 0x0FFFFF` 裁剪为 20 位 EV1527 源地址,赋值给全局变量 `bracelet_factory_id`。如果读取失败,则默认赋予 `0x37A86UL`。 4. 载入数据库并配置 Timer1 和外设 GPIO 状态。 +### 3.4 电池与充电检测接口 +* `u16 Get_ADC_Result(u8 channel)`:底层 ADC 数据采集函数,完成单次指定通道的模拟量到 12-bit 数字量的转换并返回读数。 +* `u8 Read_Battery_Percent(void)`:读取通道 8 (`P0.0`),将电压采样转换数据做线性比例转换(`1279~1628` 映射到 `0~100`),计算并返回电量百分比。 +* `bit Is_Charging(void)`:读取 `P2.7`(充电检测管脚)的 GPIO 数字输入电平。当电平为高(1)时代表 USB 已接入,返回 `1`;否则返回 `0`。 + diff --git a/Docs/60_coding/mod-key.md b/Docs/60_coding/mod-key.md index abcabf7..40ce0be 100644 --- a/Docs/60_coding/mod-key.md +++ b/Docs/60_coding/mod-key.md @@ -76,7 +76,7 @@ void Key_Scan_Process(void) { } ``` - + ### 2.2 事件异步读取与清除 主循环在其周期内轮询 `key_event_buf`。一旦发现其非 `KEY_EVENT_NONE`,拷贝并立即重置该缓冲区为 `KEY_EVENT_NONE` 以防止重复触发: diff --git a/Docs/60_coding/mod-lcd.md b/Docs/60_coding/mod-lcd.md index 8997392..c9a8f16 100644 --- a/Docs/60_coding/mod-lcd.md +++ b/Docs/60_coding/mod-lcd.md @@ -10,12 +10,15 @@ ## 2. 关键代码片段与逻辑实现 -### 2.1 局部窗口设置 (X轴偏移量修正) -在 `lcd.c` 中配置窗口时,需要向 X 轴坐标加上 4 像素偏差: +### 2.1 局部窗口设置 (X/Y轴偏移量修正) +在 `lcd.c` 中配置窗口时,需要将坐标对齐到 ST7789V 在 135x240 面板下的实际 GRAM 范围,加入 X 轴 52 像素、Y 轴 40 像素的偏差: ```c void LCD_SetWindow(u16 x1, u16 y1, u16 x2, u16 y2) { - x1 += 4; - x2 += 4; + x1 += 52; + x2 += 52; + y1 += 40; + y2 += 40; + LCD_WriteCmd(0x2A); // Column Address Set LCD_WriteData(x1 >> 8); LCD_WriteData(x1 & 0xFF); @@ -30,15 +33,48 @@ void LCD_SetWindow(u16 x1, u16 y1, u16 x2, u16 y2) { } ``` -### 2.2 电池图标与百分比坐标对齐 -在 `main.c` 的时钟重绘函数中,通过以下坐标在 **135 像素宽** 屏幕上绘制电量: +### 2.2 电池图标与动态百分比 (包含充电 + 后缀) 渲染 +在 `main.c` 的时钟页面刷新中,获取当前百分比及充电状态,动态绘制到状态栏: ```c -// 绘制百分比字符 -LCD_ShowString(77, 24, "85%", COLOR_GRAY, COLOR_BLACK); -// 绘制电池位图 -LCD_ShowImage(107, 27, 20, 10, bmp_battery_20x10, COLOR_GRAY, COLOR_BLACK); +void UI_ShowClockPage(SystemState state, u8 hour, u8 min) { + char bat_str[10]; + u8 bat_val = Read_Battery_Percent(); + bit charging = Is_Charging(); + + LCD_Clear(COLOR_BLACK); + + // 充电状态判定与百分比字符串格式化 + if (charging) { + // 充电时显示 + 号后缀,如 "85%+" + if (bat_val >= 100) { + bat_str[0] = '1'; bat_str[1] = '0'; bat_str[2] = '0'; bat_str[3] = '%'; bat_str[4] = '+'; bat_str[5] = '\0'; + } else { + bat_str[0] = '0' + (bat_val / 10); + bat_str[1] = '0' + (bat_val % 10); + bat_str[2] = '%'; + bat_str[3] = '+'; + bat_str[4] = '\0'; + } + // X 坐标向左平移 8 像素 (X=69) 以确保和电池图标 (X=107) 之间有 6px 以上的安全间距 + LCD_ShowString(69, 24, bat_str, COLOR_GRAY, COLOR_BLACK); + } else { + // 未充电正常显示百分比,如 "85%" + if (bat_val >= 100) { + bat_str[0] = '1'; bat_str[1] = '0'; bat_str[2] = '0'; bat_str[3] = '%'; bat_str[4] = '\0'; + } else { + bat_str[0] = '0' + (bat_val / 10); + bat_str[1] = '0' + (bat_val % 10); + bat_str[2] = '%'; + bat_str[3] = '\0'; + } + LCD_ShowString(77, 24, bat_str, COLOR_GRAY, COLOR_BLACK); + } + + // 绘制电池位图图标 + LCD_ShowImage(107, 27, 20, 10, bmp_battery_20x10, COLOR_GRAY, COLOR_BLACK); + // ... +} ``` -两者 Y 轴保持 24 与 27 对齐,X 轴坐标根据 135 宽屏幕右偏 15 像素(原为 62 和 92),安全边距保持在 6 像素(77 + 3*8 = 101,与 107 之间为 6px),防止重合。 ### 2.3 字模百分号偏置 在 `lcd_font.h` 的 ASCII 字符数组中,百分号 `%`(十进制 37,十六进制 0x25)的字模通过在字模绘制时向上平移 2 像素对齐普通数字的下基准线。 diff --git a/Docs/60_coding/mod-power.md b/Docs/60_coding/mod-power.md index e23d0cf..2d4bd8e 100644 --- a/Docs/60_coding/mod-power.md +++ b/Docs/60_coding/mod-power.md @@ -12,11 +12,11 @@ 在系统初始化阶段,配置 `SGM_CTRL`(控制屏和背光供电的引脚)为推挽输出模式,并输出高电平: ```c void Power_Init(void) { - // P1.0 (SGM_CTRL) 配置为推挽输出 - P1M1 &= ~0x01; - P1M0 |= 0x01; + // P3.4 (SGM_CTRL) 配置为推挽输出 + P3M1 &= ~(1 << 4); + P3M0 |= (1 << 4); - // 拉高引脚,开启 LCD 背光与电平供电 + // 拉高引脚,开启 LCD 背光与供电使能 SGM_CTRL = 1; } ``` @@ -25,6 +25,6 @@ void Power_Init(void) { 在主循环事件分发中,不再轮询待机时间累加器,也不再调用休眠流程: * **移除** `Enter_Deep_Sleep` 函数。 * **移除** 端口 P0 的引脚中断设置(`P0INTE` 等)及 `PD` 停机指令。 -* 手环时刻保持主频运转,Timer 1 中断不断累加,`EV1527_Decode` 全时监听射频,随时处理防区报警和 SOS 求救触发。 +* 手环时刻保持主频运转,Timer 1 中断不断累加,`EV1527_Decode` 全时监听射频,随时处理防区报警 and SOS 求救触发。 - + diff --git a/Docs/60_coding/mod-rf.md b/Docs/60_coding/mod-rf.md index 0dadf3c..fcddd5e 100644 --- a/Docs/60_coding/mod-rf.md +++ b/Docs/60_coding/mod-rf.md @@ -37,4 +37,4 @@ void EV1527_Transmit(u32 addr, u8 data_code) { * **绑定对码**:当用户触发对码绑定时,传入 `addr = bracelet_factory_id`,`data_code = 0x01`。 * **主动 SOS 警报**:当触发主动 SOS 时,主状态机在 `STATE_SOS_EMITTED` 下定期以时间片的形式调用此函数,传入 `addr = bracelet_factory_id`,`data_code = 0x08`(即二进制 `1000`)。 - + diff --git a/Docs/60_coding/mod-sys.md b/Docs/60_coding/mod-sys.md index 79fd612..57d6781 100644 --- a/Docs/60_coding/mod-sys.md +++ b/Docs/60_coding/mod-sys.md @@ -70,10 +70,53 @@ void Add_Sensor(u32 addr, u8 type, u8 suffix_idx) { sensor_list[slot].name_gbk[len++] = '0' + (suffix_idx % 10); sensor_list[slot].name_gbk[len] = '\0'; - // 其余变量赋值并保存数据库 - // ... Save_Database(); } +### 2.5 电池采样与充电状态读取实现 +在系统模块中,通过硬件 ADC 通道 8 (P0.0) 和数字 I/O (P2.7) 采集电池状态: + +1. **ADC 初始化 (ADC_Init)**: +```c +void ADC_Init(void) { + P0M1 |= 0x01; P0M0 &= ~0x01; // P0.0 配置为高阻输入 (模拟输入模式) + ADCCFG = 0x2F; // RESFMT = 1 (右对齐), ADC 时钟配置为 SYSCLK / 2 / 16 + ADC_CONTR |= 0x80; // 打开 ADC 电源 (ADC_POWER = 1) +} +``` + +2. **读取采样数据与电量百分比计算**: +```c +u16 Get_ADC_Result(u8 channel) { + ADC_CONTR = 0x80 | channel; // 开启电源并选择通道 + _nop_(); _nop_(); + ADC_CONTR |= 0x40; // 启动 ADC 转换 (ADC_START = 1) + while (!(ADC_CONTR & 0x20)); // 等待转换完成 (ADC_FLAG) + ADC_CONTR &= ~0x20; // 清除 ADC 标志 + return ((u16)ADC_RES << 8) | ADC_RESL; // 返回 12 位 ADC 转换结果 +} + +u8 Read_Battery_Percent(void) { + u16 adc_val = Get_ADC_Result(8); // 读取通道 8 (P0.0) + + // 线性百分比转换:3.3V (ADC=1279) 对应 0%, 4.2V (ADC=1628) 对应 100% + if (adc_val <= 1279) { + return 0; + } else if (adc_val >= 1628) { + return 100; + } else { + return (u8)((u32)(adc_val - 1279) * 100 / (1628 - 1279)); + } +} +``` + +3. **充电状态读取**: +```c +// P2.7 在 System_Init 时需配置为高阻输入以进行充电状态检测 +bit Is_Charging(void) { + return (P2 & (1 << 7)) ? 1 : 0; // 读取 P2.7 引脚高电平状态,1 表示 USB 接入 +} +``` + ``` diff --git a/Docs/70_testing/main.md b/Docs/70_testing/main.md index 472efa7..8df71ad 100644 --- a/Docs/70_testing/main.md +++ b/Docs/70_testing/main.md @@ -32,15 +32,18 @@ ## 3. 人工实机验证用例 -### 3.1 时钟待机与电量对齐 -* **测试方法**:正常上电启动,查看待机界面。 -* **预期结果**:时钟、日期显示正常。在 **135 像素宽** 屏幕上,电量 `85%` 绘制在 `X=77, Y=24`,电池图标绘制在 `X=107, Y=27`,对齐美观且有 6 像素的安全间距。 +### 3.1 时钟待机与电量及充电状态验证 +* **测试方法**: + 1. 正常上电启动,查看待机界面右上方电量。 + 2. 使用外部电压源微调电量采样引脚 **`P0.0`**(模拟输入)输入电压在 1.03V 到 1.31V 之间变化,检查电量百分比是否从 `0%` 线性平滑变化到 `100%`。 + 3. 拔插 USB 充电器,或者直接改变引脚 **`P2.7`** 的电平输入(拉高至 3.3V 或拉低到地),观察百分比数值后面是否能同步增加或移除 `+` 后缀(如在 `85%` 与 `85%+` 之间切换,且格式化与电池图标不贴连)。 +* **预期结果**:时钟、日期显示正常。在 **135 像素宽** 屏幕上,电量百分比与电池图标(X=107, Y=27)对齐美观,间距大于 6 像素。在 USB 插入时电量后追加 `+` 后缀且能完整显示。 ### 3.2 传感器对码与保存 * **测试方法**:同时长按 ▲+▼ 3秒进入配对,用上下键选中 `DETEC. PIR`,按下侧边 **■ 确认键** 开启等待,随后物理触发 PIR 传感器。进入对码确认页后,按 **▲ 键** 将中间括号内数字调节至 `02`(即显示 `PIR [ 02 ]`),最后按下 **■ 确认键** (或 **SOS 1**)确认保存。 * **预期结果**: 1. 进入配对时,LED 亮白色闪烁(3Hz),马达短振 1 次确认。 - 2. 解码匹配成功后,OLED 屏显示 `✓已保存` 以及 `PIR 02`,LED 绿色常亮 2 秒,马达强振 1 次(400ms),随后自动退回配对菜单。 + 2. 解码匹配成功后,LCD 屏显示 `✓已保存` 以及 `PIR 02`,LED 绿色常亮 2 秒,马达强振 1 次(400ms),随后自动退回配对菜单。 ### 3.3 常亮长显与射频全时监听验证 * **测试方法**:在常态待机下静置手环超过 10 秒,并在此期间使用发射装置发送已配对的传感器射频报警包,或随时短按上部的 SOS 键。 diff --git a/Docs/SPEC LHS114TC-IF03 VER A.pdf b/Docs/SPEC LHS114TC-IF03 VER A.pdf new file mode 100644 index 0000000..8395141 Binary files /dev/null and b/Docs/SPEC LHS114TC-IF03 VER A.pdf differ