/** * mock_soft_i2c.c — 模拟 I2C 寄存器存储 */ #include "mock_stm32.h" #include #define MOCK_REG_COUNT 256 static uint8_t mock_regs_8[MOCK_REG_COUNT]; static uint16_t mock_regs_16[MOCK_REG_COUNT]; void mock_i2c_reset(void) { memset(mock_regs_8, 0, sizeof(mock_regs_8)); memset(mock_regs_16, 0, sizeof(mock_regs_16)); } void mock_i2c_set_reg(uint8_t reg, uint8_t val) { if (reg < MOCK_REG_COUNT) mock_regs_8[reg] = val; } void mock_i2c_set_reg16(uint8_t reg, uint16_t val) { if (reg < MOCK_REG_COUNT) mock_regs_16[reg] = val; } uint8_t mock_regs_get_8(uint8_t reg) { return (reg < MOCK_REG_COUNT) ? mock_regs_8[reg] : 0xFF; } uint16_t mock_regs_get_16(uint8_t reg) { return (reg < MOCK_REG_COUNT) ? mock_regs_16[reg] : 0xFFFF; } uint8_t __mock_soft_i2c_read_reg(uint8_t dev, uint8_t reg) { (void)dev; return (reg < MOCK_REG_COUNT) ? mock_regs_8[reg] : 0xFF; } uint8_t __mock_soft_i2c_write_reg(uint8_t dev, uint8_t reg, uint8_t val) { (void)dev; if (reg < MOCK_REG_COUNT) mock_regs_8[reg] = val; return 0; } uint16_t __mock_soft_i2c_read_reg16(uint8_t dev, uint8_t reg) { (void)dev; return (reg < MOCK_REG_COUNT) ? mock_regs_16[reg] : 0xFFFF; } uint8_t __mock_soft_i2c_write_reg16(uint8_t dev, uint8_t reg, uint16_t val) { (void)dev; if (reg < MOCK_REG_COUNT) mock_regs_16[reg] = val; return 0; } /* ── 桩 ── */ volatile uint8_t g_bq_fault = 0; volatile uint8_t g_bq_fault_status = 0; uint32_t SystemCoreClock = 72000000; void SoftI2C_Init(const void *cfg) { (void)cfg; } void SoftI2C_SetSpeed(uint32_t s) { (void)s; } void SoftI2C_Start(void) {} void SoftI2C_Stop(void) {} uint8_t SoftI2C_SendByte(uint8_t d) { (void)d; return 0; } uint8_t SoftI2C_ReadByte(uint8_t ack) { (void)ack; return 0; } int BQ25756_AI4_Init(void) { return 0; } void bq_int_init(void) {}