/****************************************************************************** * @file bsp_aht20.h * @brief CBR3 AHT20 温湿度传感器:软件 I2C + 测量 + CRC8 * @author cyWu <1917507415@qq.com> * @date 2026.08.29 * @version V1.0.3,IO 分离:AHT20 独占 PC4(SCL)/PC5(SDA),无总线共享锁, * 恢复一次完成采集;含 SCL 高电平假 STOP 修复与 0x71 校准检查 * * @note I2C 7 位地址 0x38(写 0x70 / 读 0x71)。测量命令 0xAC 0x33 0x00, * 等 ≥80ms 后读 7 字节:Status + 20bit 湿度 + 20bit 温度 + CRC8。 * CRC8 多项式 0x31,初值 0xFF,覆盖前 6 字节。 * PC4=SCL(推挽)/ PC5=SDA(开漏+内部上拉),与 CT1642 的 PG0/PG1 * 完全独立,无总线竞争(2026-08-29 改板分离)。 ******************************************************************************/ #ifndef __BSP_AHT20_H__ #define __BSP_AHT20_H__ #include /** * @brief 初始化:配置 PC4/PC5(上拉+die)+ 软件 I2C 总线复位 + 0x71 校准检查 * @return 无 */ void bsp_aht20_init(void); /** * @brief 发起一次测量:发 0xAC 0x33 0x00 * @note 调用后必须等 ≥80ms 再 bsp_aht20_measure_finish。 * 等待期间 I2C 总线空闲(AHT20 内部测量),CT1642 显示不受影响。 * @return 0=命令已发出,非 0=失败(未初始化/通讯失败) */ int8_t bsp_aht20_measure_start(void); /** * @brief 读取测量结果:读 7 字节 + CRC8 校验 + 换算 * @param temp_x10 输出温度 ×10(如 25.3℃ → 253) * @param humi_pct 输出湿度 0~100 整数 % * @return 0=成功,非 0=失败(CRC 错/时序错,本次采样视为失败) */ int8_t bsp_aht20_measure_finish(int16_t *temp_x10, uint8_t *humi_pct); #endif /* __BSP_AHT20_H__ */