QMI8658 陀螺仪
严格说 QMI8658 是六轴 IMU(加速度计 + 陀螺仪)。游戏主要使用重力方向生成二维倾斜,但完整驱动初始化与轴向都按板级资料锁定。
轴向问题与修正
首版把 sensor X/Y 直接送给 screen X/Y,实际板上芯片相对圆屏旋转 90°。实机四向动作暴露了方向错误,最终映射:
cpp
screen_x = -(sensor_y - neutral_y);
screen_y = +(sensor_x - neutral_x);这一层属于 BSP/设备适配,不写进通用游戏公式;网页虚拟倾斜仍直接使用屏幕坐标。
采样与归一化
- 任务周期:33 ms。
- I²C 地址:
0x6B。 - 启动用稳定窗口求 neutral,不用单个样本。
- 死区:0.025 g。
- 0.55 g 映射到归一化 1.0。
- 低通平滑,输出限制在 -1…1。
- UI/渲染线程只读快照,不阻塞 I²C。
唤醒校准
ambient 期间持续保留最近 5 个真实样本均值。触摸 down 唤醒时立刻冻结这份“手指接触前”姿态作为新 neutral,然后完整吞掉本次触摸。实板一次性 QA 得到 fallback=0、约 160 ms 完成、最终 tilt=0,0。
视觉响应

整数像素分带
160×160 星种按横带重绘,LOW/MID/HIGH 分别限制到 3/2、6/4、10/7 px,shear 为 2/4/7。最近邻与整数位移保持 2×2 主像素。
自动验证
主机测试覆盖任意初始姿态、四向符号、轴隔离、死区、满量程、滤波、重校准、运动样本拒绝和即时快照;视觉 clearance 脚本覆盖 750 个 HIGH 核心姿态。主观的玻璃深度感和 HIGH 档偏好仍需操作者判断。
