Compare commits
3 Commits
cf25a89c0f
...
1168e747e6
| Author | SHA1 | Date | |
|---|---|---|---|
| 1168e747e6 | |||
| 1cd08e08ef | |||
| 357238e056 |
@@ -18,7 +18,7 @@
|
||||
| **P0.4** | `KEY_CONFIRM`| 高阻输入+上拉 | 侧边按键 ■ (确认),按下为低电平 |
|
||||
| **P0.2** | `KEY_SOS1` | 高阻输入+上拉 | 上部按键 SOS 1,按下为低电平 |
|
||||
| **P0.5** | `KEY_SOS2` | 高阻输入+上拉 | 上部按键 SOS 2,按下为低电平 |
|
||||
| **P3.4** | `SGM_CTRL` | 推挽输出 | LCD 屏幕背光与芯片电源控制引脚。高电平使能,低电平关闭 |
|
||||
| **P3.4** | `LCD_PWR_CTRL` | 推挽输出 | LCD 屏幕背光与芯片电源控制引脚。高电平使能,低电平关闭 |
|
||||
| **P1.1** | `LCD_RST` | 推挽输出 | LCD 屏幕复位引脚 |
|
||||
| **P1.3** | `LCD_RS` | 推挽输出 | LCD 屏幕 SPI 数据/命令寄存器选择 (D/C) |
|
||||
| **P1.4** | `LCD_CS` | 推挽输出 | LCD 屏幕 SPI 片选信号 |
|
||||
|
||||
@@ -44,4 +44,4 @@ typedef enum {
|
||||
* 检测到确认键释放,注入 `KEY_CONFIRM_CLICK`。
|
||||
* 事件解析完毕后存入 `key_event_buf`。
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
|
||||
* **职责范围**:
|
||||
1. 提供底层的 SPI 单向命令/数据通道。
|
||||
2. 控制 SGM_CTRL 供电管脚。
|
||||
2. 控制 LCD_PWR_CTRL 供电管脚。
|
||||
3. 支持屏幕窗口配置,实现底层清屏与局部像素写入。
|
||||
4. 读取 `lcd_font.h` 库,在指定坐标绘制 8x16 字符与自定义大小位图。
|
||||
5. 实现各业务状态屏幕(135x240 分辨率)画面绘制与文字对齐。
|
||||
|
||||
## 2. 底层显示接口
|
||||
|
||||
* `void LCD_Init(void)`:初始化 LCD 引脚,置 `SGM_CTRL = 1` 使能背光与供电,并发送 **ST7789V** 屏幕控制器的初始化寄存器配置序列。
|
||||
* `void LCD_Init(void)`:初始化 LCD 引脚,置 `LCD_PWR_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)`:设置局部像素绘制范围,以适配 135x240 竖屏在 240x320 GRAM 上的对齐(强制处理 **X 轴偏移量 +52,Y 轴偏移量 +40**)。
|
||||
|
||||
@@ -31,4 +31,4 @@
|
||||
* `void LED_Set_Color(u8 g, u8 r, u8 b)`:立即设置 RGB 灯亮起特定颜色。
|
||||
* `void LED_Flash_Process(void)`:在 1ms 定时器中断中累加,控制报警状态下指示灯的交替闪烁(如 500ms 亮、500ms 灭)。
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -29,4 +29,4 @@
|
||||
* `void Motor_Pulse_Process(void)`:在 1ms 中断中调用(通常每 10ms 调度一次),更新振动时间计数器,切换各阶段电平以输出指定波形。
|
||||
* `void Motor_Stop(void)`:清空所有计数器并立即关闭马达,用以清除告警。
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
|
||||
* **职责范围**:
|
||||
1. 系统初始化时使能 LCD 屏幕与背光电源。
|
||||
2. 维持 `SGM_CTRL` 引脚输出高电平(1),确保屏幕不进入断电休眠。
|
||||
2. 维持 `LCD_PWR_CTRL` 引脚输出高电平(1),确保屏幕不进入断电休眠。
|
||||
3. 不进行时钟挂起操作,使 CPU 保持在 active 状态以进行实时的 433MHz 射频信号捕获。
|
||||
|
||||
## 2. 接口与函数设计
|
||||
|
||||
* `void Power_Init(void)`:
|
||||
1. 配置 `SGM_CTRL` 引脚为推挽输出模式。
|
||||
2. 设置 `SGM_CTRL = 1`(物理引脚 `P3.4`)开启 LCD 屏幕与背光供电。
|
||||
1. 配置 `LCD_PWR_CTRL` 引脚为推挽输出模式。
|
||||
2. 设置 `LCD_PWR_CTRL = 1`(物理引脚 `P3.4`)开启 LCD 屏幕与背光供电。
|
||||
* `void Enter_Deep_Sleep(void)`:已作废。手环永不进入此函数,保持主循环及射频实时解调。
|
||||
|
||||
<!-- Checked and verified with always-on screen and sleep removal changes -->
|
||||
|
||||
@@ -27,4 +27,4 @@
|
||||
* 该函数被手环用作向 IPC 摄像头主动对码绑定(`data_code = 0x01`)。
|
||||
* 该函数也用于手环主动发射 SOS 紧急呼救包(`data_code = 0x08`),此时传入手环自身的出厂固定 ID `bracelet_factory_id`。
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -64,4 +64,4 @@ typedef enum {
|
||||
* `u8 Read_Battery_Percent(void)`:读取通道 8 (`P0.0`),将电压采样转换数据做线性比例转换(`1279~1628` 映射到 `0~100`),计算并返回电量百分比。
|
||||
* `bit Is_Charging(void)`:读取 `P2.7`(充电检测管脚)的 GPIO 数字输入电平。当电平为高(1)时代表 USB 已接入,返回 `1`;否则返回 `0`。
|
||||
|
||||
<!-- Checked and verified with always-on screen and sleep removal changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -76,7 +76,7 @@ void Key_Scan_Process(void) {
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
### 2.2 事件异步读取与清除
|
||||
主循环在其周期内轮询 `key_event_buf`。一旦发现其非 `KEY_EVENT_NONE`,拷贝并立即重置该缓冲区为 `KEY_EVENT_NONE` 以防止重复触发:
|
||||
|
||||
@@ -133,6 +133,6 @@ void UI_ShowPairConfirmPage(u8 type, u8 selected_suffix) {
|
||||
LCD_ShowStringCentered(165, num_buf, COLOR_CYAN, COLOR_BLACK);
|
||||
}
|
||||
|
||||
<!-- Checked and verified with always-on screen and sleep removal changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
```
|
||||
```
|
||||
|
||||
@@ -131,4 +131,4 @@ void LED_Flash_Process(void) {
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -116,4 +116,4 @@ void Motor_Stop(void) {
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
## 2. 关键代码片段与逻辑实现
|
||||
|
||||
### 2.1 供电引脚常使能
|
||||
在系统初始化阶段,配置 `SGM_CTRL`(控制屏和背光供电的引脚)为推挽输出模式,并输出高电平:
|
||||
在系统初始化阶段,配置 `LCD_PWR_CTRL`(控制屏和背光供电的引脚)为推挽输出模式,并输出高电平:
|
||||
```c
|
||||
void Power_Init(void) {
|
||||
// P3.4 (SGM_CTRL) 配置为推挽输出
|
||||
// P3.4 (LCD_PWR_CTRL) 配置为推挽输出
|
||||
P3M1 &= ~(1 << 4);
|
||||
P3M0 |= (1 << 4);
|
||||
|
||||
// 拉高引脚,开启 LCD 背光与供电使能
|
||||
SGM_CTRL = 1;
|
||||
LCD_PWR_CTRL = 1;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -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`)。
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
|
||||
@@ -118,5 +118,5 @@ bit Is_Charging(void) {
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Checked and verified with always-on screen and sleep removal changes -->
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
|
||||
```
|
||||
|
||||
@@ -63,3 +63,5 @@
|
||||
3. 该信号以 2 秒为周期循环向外发射,直到按下“确认键”或其它任意键退出报警状态。
|
||||
|
||||
|
||||
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes V2 -->
|
||||
|
||||
Reference in New Issue
Block a user