diff --git a/apps/usr_periph/board_pin.h b/apps/usr_periph/board_pin.h index 44a140b..69f0160 100644 --- a/apps/usr_periph/board_pin.h +++ b/apps/usr_periph/board_pin.h @@ -2,8 +2,11 @@ * @file board_pin.h * @brief CBR3 温湿度风扇板级引脚、电平与时序(换板只改本文件) * @author cyWu <1917507415@qq.com> - * @date 2026.08.29 - * @version V1.0.0,首次发布(P0 Bring-up) + * @date 2026.09.04 + * @version V1.1.0,数码管转机 180°(BOARD_DISP_ROTATE_180) + * @history + * - V1.1.0, 2026.09.04, cyWu, 转机后温湿窗口/十个位对调 + 段码旋转 + * - V1.0.0, 2026.08.29, cyWu, 首次发布(P0 Bring-up) * * @note 产品 GPIO 全部集中到本文件;板级 board_jl701n_demo_cfg.h 只保留 * UART0_TX=PG6 一项改动。CT1642 用 PG0(CLK)/PG1(DATA),AHT20 用 @@ -126,11 +129,26 @@ * (bit0 先发 → 落到 Q2 引脚;PCB 上 Q2 接哪段即"软件 A 段"对应的物理段) * COM 位选 → 物理管位映射(2026-08-29 SCAN_TEST=2 实测定型): * C1=湿度十位 C2=湿度个位 C3=温度十位 C4=温度个位(默认假定温/湿相反,已对调) + * + * 转机 180°(2026-09-04):整板相对窗口旋转后,视觉上 + * ① 每只管子倒过来:A↔D、B↔E、C↔F,G/DP 不动(段码在 bsp_ct1642_send_frame 里重映射) + * ② 温/湿窗口对调,且十位/个位左右对调。 + * 未改软件时典型现象:25/57 会看成「L5 / 52」(7 倒过来像 L)。 + * 0 = 旧板方向;1 = 转机后的量产方向。 */ +#define BOARD_DISP_ROTATE_180 1 + +#if BOARD_DISP_ROTATE_180 +#define BOARD_DISP_COM_TEMP_TEN 0x02 /**< C2:转机后落到温度十位 */ +#define BOARD_DISP_COM_TEMP_ONE 0x01 /**< C1:转机后落到温度个位 */ +#define BOARD_DISP_COM_HUMI_TEN 0x08 /**< C4:转机后落到湿度十位 */ +#define BOARD_DISP_COM_HUMI_ONE 0x04 /**< C3:转机后落到湿度个位 */ +#else #define BOARD_DISP_COM_TEMP_TEN 0x04 /**< C3 = 温度十位(实测定型) */ #define BOARD_DISP_COM_TEMP_ONE 0x08 /**< C4 = 温度个位(实测定型) */ #define BOARD_DISP_COM_HUMI_TEN 0x01 /**< C1 = 湿度十位(实测定型) */ #define BOARD_DISP_COM_HUMI_ONE 0x02 /**< C2 = 湿度个位(实测定型) */ +#endif /** * 扫段调试模式(P0 台上定型用,2026-08-29 已全部定型,正常固件保持 0): diff --git a/apps/usr_periph/bsp_ct1642.c b/apps/usr_periph/bsp_ct1642.c index 1387360..ec6c74e 100644 --- a/apps/usr_periph/bsp_ct1642.c +++ b/apps/usr_periph/bsp_ct1642.c @@ -2,8 +2,11 @@ * @file bsp_ct1642.c * @brief CBR3 CT1642 类数码管驱动实现(软件移位) * @author cyWu <1917507415@qq.com> - * @date 2026.08.29 - * @version V1.0.1,IO 分离:CT1642 独立 PG0=CLK/PG1=DATA,无总线共享机制 + * @date 2026.09.04 + * @version V1.1.0,转机 180°:段码 A↔D/B↔E/C↔F(BOARD_DISP_ROTATE_180) + * @history + * - V1.1.0, 2026.09.04, cyWu, 数码管整板旋转 180° 后补偿段码 + * - V1.0.1, 2026.08.29, cyWu, IO 分离:CT1642 独立 PG0=CLK/PG1=DATA * * @note 驱动协议严格参照 CT1642 手册(与 CSDN yitx 一致): * 一帧 = 18bit,CLK 上升沿采样 DATA(DATA 只在 CLK=低时改变): @@ -143,6 +146,10 @@ static void ct1642_xfer(uint8_t seg, uint8_t com) */ void bsp_ct1642_send_frame(uint8_t seg, uint8_t com) { +#if BOARD_DISP_ROTATE_180 + /* 管倒过来看:视觉 A/B/C 落在物理 D/E/F,视觉 D/E/F 落在物理 A/B/C;G/DP 不动 */ + seg = (uint8_t)(((seg & 0x07u) << 3) | ((seg & 0x38u) >> 3) | (seg & 0xC0u)); +#endif // ct1642_xfer(0, 0); ct1642_xfer(seg, com); /* 单帧:18bit 移位 + 锁存 + 输出,无消影预帧 */ } diff --git a/apps/usr_periph/bsp_ct1642.h b/apps/usr_periph/bsp_ct1642.h index ea65995..599eeac 100644 --- a/apps/usr_periph/bsp_ct1642.h +++ b/apps/usr_periph/bsp_ct1642.h @@ -2,8 +2,11 @@ * @file bsp_ct1642.h * @brief CBR3 CT1642 类数码管驱动:18bit 移位、锁存、送出 * @author cyWu <1917507415@qq.com> - * @date 2026.08.29 - * @version V1.0.1,IO 分离:CT1642 独立 PG0=CLK/PG1=DATA(飞线),AHT20 + * @date 2026.09.04 + * @version V1.1.0,转机 180° 段码补偿(见 BOARD_DISP_ROTATE_180) + * @history + * - V1.1.0, 2026.09.04, cyWu, send_frame 内按宏做 A↔D/B↔E/C↔F + * - V1.0.1, 2026.08.29, cyWu, IO 分离:CT1642 独立 PG0=CLK/PG1=DATA(飞线),AHT20 * 独占 PC4/PC5,无总线共享机制 * * @note PG0=CLK,PG1=DATA,独立引脚、无总线锁,可随时调用。