fix(platform): correct PA GPIO10 and motor GPIO9 mapping

This commit is contained in:
chenjintao
2026-10-27 17:08:01 +08:00
parent 002967b21f
commit 147bfe9b70
7 changed files with 24 additions and 24 deletions
+3 -3
View File
@@ -20,7 +20,7 @@ No new GPIO option has been added for full-charge sensing or the rocker motor.
| 5 | `CONFIG_TQ_SCREEN_SPI_CS_GPIO` | Output | LCD CS |
| 6 | `CONFIG_TQ_SCREEN_DC_GPIO` | Output | LCD data/command; no old switch flying wire |
| 7 | `CONFIG_TQ_SCREEN_RESET_PIN` | Output | LCD reset, active low |
| 9 | `CONFIG_MULTIMODAL_AUDIO_PA_GPIO` | Output | Audio amplifier enable |
| 10 | `CONFIG_MULTIMODAL_AUDIO_PA_GPIO` | Output | Audio amplifier enable |
| 11 | `CONFIG_TQ_CALIBRATION_SWITCH_GPIO` | Input | Switch 1 / calibration, active low with pull-up |
| 12 | `CONFIG_TQ_SLOT_SWITCH_GPIO` | Input | Switch 2 / slot trigger, active low with pull-up |
| 13 | `CONFIG_MULTIMODAL_PTT_BUTTON_GPIO` | Input | TTP223 touch output / PTT; previous active-low/pull-up settings retained pending measured polarity |
@@ -40,7 +40,7 @@ No new GPIO option has been added for full-charge sensing or the rocker motor.
The old `platform_io_effects_init()` startup call has been removed: its GPIO4
RMT and GPIO5 pulse workers conflict with new LCD BLK/CS. The old implementation
is retained as source, but no startup path calls it. GPIO10 motor control has
is retained as source, but no startup path calls it. GPIO9 motor control has
not been enabled as a replacement.
## Disabled Or Not Connected In Defaults
@@ -52,7 +52,7 @@ not been enabled as a replacement.
| `CONFIG_TQ_RESET_BUTTON_ENABLE` | Disabled | The old optional reset default GPIO14 now belongs to stepper IN1; configure separate physical wiring before enabling |
| `CONFIG_TQ_BATTERY_SHUTDOWN_WAKE_BUTTON_GPIO` | -1 | No additional deep-sleep wake button |
| GPIO8 / 充满检测 | Input | `CONFIG_TQ_BATTERY_FULL_GPIO=8`, low-active TP4056 STDBY# via Q8 |
| GPIO10 / 马达控制 | Not consumed | Rocker-motor gate held off by external R30 pull-down; no new option/driver added |
| GPIO9 / 马达控制 | Not consumed | Rocker-motor gate held off by external R30 pull-down; no new option/driver added |
| GPIO3 / 35 / 36 / 37 / 45 / 46 | NC on schematic | Do not infer arbitrary availability from NC |
Mechanical switches use pull-up only. PTT and charger active levels are retained
+14 -14
View File
@@ -1,6 +1,6 @@
# 新旧板 GPIO 对比与固件适配位置
核对日期:2026-10-23。初始对照保留在下文;当前已应用新板引脚映射及GPIO8满电检测,GPIO10马达仍未接入。验证结果见文末,未烧录或进行实机验收。
核对日期:2026-10-27。已重新核对主控符号:模组焊盘17为GPIO9马达控制,焊盘18为GPIO10 PA_CTRL;此前文档和固件将二者颠倒,本次已纠正。初始对照保留在下文;当前已应用新板引脚映射及GPIO8满电检测,GPIO9马达仍未接入。验证结果见文末,未烧录或进行实机验收。
## 对照基线
@@ -20,7 +20,7 @@
菜单整理:GPIO/电平/上下拉配置已集中到
`TQ Cat Configuration -> Board Hardware Configuration (GPIO)` 单页,按 LCD、音频、
输入、步进、电源/电池分区。配置名及依赖保持原样;默认值及本地有效配置已更新为新板映射,
本次充电逻辑重写已新增 GPIO8 充满输入及有效电平配置,GPIO10 马达仍未接入。旧硬编码 GPIO4/5 功能保留源码,
本次充电逻辑重写已新增 GPIO8 充满输入及有效电平配置,GPIO9 马达仍未接入。旧硬编码 GPIO4/5 功能保留源码,
平台初始化已移除其启动调用,不再创建这些任务。
下文 Kconfig 旧行号属于对照时快照,搬迁后应按配置名定位。
@@ -40,7 +40,7 @@
| 电池电压检测 Power_t / 电量检测 | 9 | 9 | **17** | `TQ_BATTERY_ADC_GPIO`;`platform_battery_driver.c` |
| 充电状态 Charge / 充电检测 | 10 | 10 | **18** | `TQ_BATTERY_CHARGE_GPIO`;电池驱动、双路轮询及深睡唤醒链路 |
| 独立充满检测 | 未接入 MCU | 无 | **8** | `TQ_BATTERY_FULL_GPIO` / `TQ_BATTERY_FULL_ACTIVE_LEVEL`;见后文 |
| 功放 PA_CTRL | 11 | 11 | **9** | `MULTIMODAL_AUDIO_PA_GPIO`;音频 codec 初始化及运行时使能 |
| 功放 PA_CTRL | 11 | 11 | **10** | `MULTIMODAL_AUDIO_PA_GPIO`;音频 codec 初始化及运行时使能 |
| 开关1 / 原 SW1 | 12 | 校准输入 12 | **11** | 若保持开关1作校准:`TQ_CALIBRATION_SWITCH_GPIO` |
| 开关2 / 原 SW2 | 13 | 抽签输入 13 | **12** | 若保持开关2作抽签:`TQ_SLOT_SWITCH_GPIO` |
| TTP223 触摸输出 | 3 | PTT 输入 3 | **13** | 若保持触摸作 PTT:`MULTIMODAL_PTT_BUTTON_GPIO`;有效电平另核对 |
@@ -48,9 +48,9 @@
| ULN2003 IN2 | 48 | 48 | **21** | `TQ_STEPPER_IN2_GPIO`;同上 |
| ULN2003 IN3 | 47 | 47 | **47** | `TQ_STEPPER_IN3_GPIO`;保持 |
| ULN2003 IN4 | 21 | 21 | **48** | `TQ_STEPPER_IN4_GPIO`;不能与 IN2 互换 |
| 直流摇臂马达控制 | 旧图 Swing 与 LCD CLK 共 GPIO8 | 外接脉冲输出 GPIO5 | **10** | 当前无独立 Kconfig;改造 `platform_io_effects.c` 脉冲输出及初始化策略 |
| 直流摇臂马达控制 | 旧图 Swing 与 LCD CLK 共 GPIO8 | 外接脉冲输出 GPIO5 | **9** | 当前无独立 Kconfig;改造 `platform_io_effects.c` 脉冲输出及初始化策略 |
| 外接 WS2812 灯带 | 旧 TP_INT/GPIO4 被固件复用 | 硬编码 4 | 新图无专用接口 | 必须禁用或另行确认外接布线,不能继续占用 GPIO4 |
| 旧外接脉冲输出 | 旧 TP_SDA/GPIO5 被固件复用 | 硬编码 5 | GPIO5 已作 LCD CS | 必须迁移/禁用;是否由新 GPIO10 马达替代,由实际机械用途确认 |
| 旧外接脉冲输出 | 旧 TP_SDA/GPIO5 被固件复用 | 硬编码 5 | GPIO5 已作 LCD CS | 必须迁移/禁用;是否由新 GPIO9 马达替代,由实际机械用途确认 |
按键语义不是原理图决定的:图纸只定义开关1、开关2和触摸输出;上表延续当前固件“校准 / 抽签 / PTT”分工。如果产品要调整按键用途,应另改控制层事件策略。
@@ -63,8 +63,8 @@
| 3 | MCU 标 NC | 迁走当前 PTT;不再等候 GPIO3 触摸事件 |
| 4 / 5 / 6 / 7 | LCD BLK / CS / DC / RES | 修改显示配置;释放旧 GPIO4/5 输出;不要恢复旧 GPIO6 开关飞线配置 |
| 8 | 充满检测 | 输入;不得再输出 LCD 时钟 |
| 9 | PA_CTRL | 输出;不得再按电池 ADC 初始化 |
| 10 | 摇臂马达 MOS 控制 | 输出;不得再按充电输入初始化 |
| 9 | 摇臂马达 MOS 控制 | 当前不启用驱动;硬件下拉关断 |
| 10 | PA_CTRL | 输出;高电平使能功放 |
| 11 / 12 | 开关1 / 开关2 | 输入;不得把 GPIO11 继续交给功放 |
| 13 | TTP223 触摸输出 | 输入;迁移 PTT 后释放原抽签占用 |
| 14 | 步进 IN1 | 输出;不得启用旧默认 GPIO14 Wi-Fi 重置键 |
@@ -86,8 +86,8 @@
| [sdkconfig.defaults](../sdkconfig.defaults) | PTT 约 195 行;音频约 211 行;LCD/电机/电池约 298–346 行 | 保存新板默认引脚;保持其他未提交配置 |
| [main/Kconfig.projbuild](../main/Kconfig.projbuild) | 文件顶部 `Board Hardware Configuration (GPIO)` 菜单 | 已同步现有项新板默认值及帮助文案;新功能未加选项 |
| [lcd_direct.c](../components/platform/src/lcd_direct.c) | 约 1634 行背光、1660 行 GPIO、1680 行后 SPI/panel 初始化 | 引脚已有配置化,通常不改驱动;新图注明 BLK 仅作使能,先用 0/100% 验证,不能直接认定支持调光 |
| [platform_io_effects.c](../components/platform/src/platform_io_effects.c) | 30/31 行 GPIO4/5 硬编码;186 行脉冲任务;277 行初始化 | 这是必须处理的代码冲突。先禁用旧 RMT/脉冲启动,再决定马达 GPIO10 的受控实现 |
| [platform_core_runtime.c](../components/platform/src/runtime/platform_core_runtime.c) | `platform_init()` 电源保持初始化之后 | 已移除旧 GPIO4/5 功能的启动调用;GPIO10 马达未启用 |
| [platform_io_effects.c](../components/platform/src/platform_io_effects.c) | 30/31 行 GPIO4/5 硬编码;186 行脉冲任务;277 行初始化 | 这是必须处理的代码冲突。先禁用旧 RMT/脉冲启动,再决定马达 GPIO9 的受控实现 |
| [platform_core_runtime.c](../components/platform/src/runtime/platform_core_runtime.c) | `platform_init()` 电源保持初始化之后 | 已移除旧 GPIO4/5 功能的启动调用;GPIO9 马达未启用 |
| [platform_stepper_driver.c](../components/platform/src/platform_stepper_driver.c) | 34–37 行相位宏;331 行 GPIO 初始化 | 使用 Kconfig,不应改相位表来代替正确引脚配置 |
| [platform_battery_driver.c](../components/platform/src/platform_battery_driver.c) | 约 136 行状态输入;158 行 ADC 映射;296 行采样状态 | 迁移 ADC/充电输入;新增独立充满输入及原始样本处理 |
| [platform.h](../components/platform/include/platform.h) | 约 406 行电池硬件样本契约 | 如接入充满检测,扩展平台硬件样本,保留未知/无效状态 |
@@ -146,13 +146,13 @@ GPIO18仍为低有效深睡唤醒源,GPIO8不参与唤醒。唤醒保护先轮
### 5. 电机电源与顺序
新板步进电机由下板 Boost-5V、ULN2003 驱动;直流摇臂马达由上板 3.3V、Q3 AO3400A 低侧控制,GPIO10 高电平导通,R30 100kΩ 下拉提供关断偏置。二者不是同一驱动,不能把 GPIO10 加进四相步进表。
新板步进电机由下板 Boost-5V、ULN2003 驱动;直流摇臂马达由上板 3.3V、Q3 AO3400A 低侧控制,GPIO9 高电平导通,R30 100kΩ 下拉提供关断偏置。二者不是同一驱动,不能把 GPIO9 加进四相步进表。
新板步进顺序必须为 IN1=14、IN2=21、IN3=47、IN4=48。原 GPIO45 在新图为 NC。首次验证需确认方向、校准开关及有界停止;供电变化不能仅靠 GPIO 表验证。
## 已应用的新板配置
以下已有配置项均已写入 Kconfig 默认值、sdkconfig.defaults 和本地 sdkconfig。PTT 有效电平仍待实测;GPIO8现已接入,GPIO10仍未接入。
以下已有配置项均已写入 Kconfig 默认值、sdkconfig.defaults 和本地 sdkconfig。PTT 有效电平仍待实测;GPIO8现已接入,GPIO9仍未接入。
```ini
CONFIG_TQ_SCREEN_BACKLIGHT_GPIO=4
@@ -165,7 +165,7 @@ CONFIG_TQ_SCREEN_SPI_MISO_GPIO=-1
CONFIG_TQ_BATTERY_ADC_GPIO=17
CONFIG_TQ_BATTERY_CHARGE_GPIO=18
CONFIG_MULTIMODAL_AUDIO_PA_GPIO=9
CONFIG_MULTIMODAL_AUDIO_PA_GPIO=10
CONFIG_TQ_POWER_HOLD_GPIO=-1
CONFIG_TQ_CALIBRATION_SWITCH_GPIO=11
@@ -179,12 +179,12 @@ CONFIG_TQ_STEPPER_IN3_GPIO=47
CONFIG_TQ_STEPPER_IN4_GPIO=48
```
平台初始化已停止调用旧 GPIO4/5 输出模块;GPIO8满电输入已接入,GPIO10马达仍未接入。音频 SDA=1、SCL=2、MCLK=38、BCLK=39、DOUT=40、WS=41、DIN=42 保持。
平台初始化已停止调用旧 GPIO4/5 输出模块;GPIO8满电输入已接入,GPIO9马达仍未接入。音频 SDA=1、SCL=2、MCLK=38、BCLK=39、DOUT=40、WS=41、DIN=42 保持。
## 实施顺序与验证边界
1. 先在新板配置下禁用旧 GPIO4/5 任务,保持马达默认关闭;必要时首次调试暂时关闭开机转盘校准。
2. 同步 defaults、Kconfig 和本地有效配置,核对 GPIO8/17/18 全部为输入用途、GPIO9 为 PA、GPIO14 无 reset 冲突。
2. 同步 defaults、Kconfig 和本地有效配置,核对 GPIO8/17/18 全部为输入用途、GPIO10 为 PA、GPIO14 无 reset 冲突。
3. 验证 LCD、音频、开关1/2及触摸有效电平,再分别验证步进相序和摇臂马达,最后启用开机校准。
4. 测量 ADC 与 VBAT、充电/充满两路真值表,验证拔插充电、满电提示、低电量及深睡唤醒。
5. 实施后执行 ESP-IDF 5.5.4 构建;修改显示配置/机制后执行仓库列出的五个显示回归脚本,并按实际变更补充检查。检查联网、语音与电机同时运行时的稳定性。
+2 -2
View File
@@ -26,8 +26,8 @@ Configuration (GPIO)`; see [firmware usage](firmware-pin-usage.md).
| 14 | GPIO20 | ESP_D_P | Bidirectional | USB D+ | Type-C |
| 15 | GPIO3 | NC | N/A | No assigned net | Old touch input moved to GPIO13 |
| 16 | GPIO46 | UNASSIGNED | N/A | No connection assigned | Reserved; no signal assigned |
| 17 | GPIO9 | PA_CTRL | Output | Audio amplifier enable | Not a battery ADC input on this board |
| 18 | GPIO10 | 马达控制 | Output | Q3 low-side DC rocker-motor control | Not consumed by current firmware; external R30 pull-down |
| 17 | GPIO9 | 马达控制 | Output | Q3 low-side DC rocker-motor control | Not consumed by current firmware; external R30 pull-down |
| 18 | GPIO10 | PA_CTRL | Output | Audio amplifier enable | High level enables PA; external R29 pull-down |
| 19 | GPIO11 | 开关1 | Input | Turntable calibration switch | External 10 kOhm pull-up; active low |
| 20 | GPIO12 | 开关2 | Input | Slot/fortune input | External 10 kOhm pull-up; active low |
| 21 | GPIO13 | 触摸铜箔 | Input | TTP223 output / PTT | Verify actual touch polarity; firmware retains previous active-level setting |
+1 -1
View File
@@ -6,7 +6,7 @@
新板正式 TP4056 电路的 CHRG# 经 Q7 接 GPIO18,STDBY# 经 Q8 接 GPIO8。
两路默认低有效,3.3V上拉。配置位于 `TQ Cat Configuration -> Board Hardware
Configuration (GPIO)`;GPIO10马达没有接入。
Configuration (GPIO)`;GPIO9马达没有接入。
| GPIO18 | GPIO8 | 确认后的领域状态 |
| --- | --- | --- |