驱动大全4-12节 完善虚拟的I2C 代码中存在bug

//.....\doc_and_source_for_drivers\IMX6ULL\source\04_I2C\06_i2c_adapter_virtual_ok\i2c_adapter_drv.c
// line 15
static struct i2c_adapter *g_adapter;

static unsigned char eeprom_buffer[512];// 如果不是模拟24c02,那么地址应该是两位u8组合用
static int eeprom_cur_addr = 0;
static void eeprom_emulate_xfer(struct i2c_adapter *i2c_adapstruct i2c_msg *msg)
{
    int i;
    if (msg->flags & I2C_M_RD)
    {
        for (i = 0i < msg->leni++)
        {
            msg->buf[i] = eeprom_buffer[eeprom_cur_addr++];
            if (eeprom_cur_addr == 512) // 这里的地址使用一字节,已经限制了范围是0~255,所以这一段达不到
                eeprom_cur_addr = 0; // 或者说 256 ~ 512 之前的数据值没法正常 读写
        }
    }
    else
    {
        if (msg->len >= 1)
        {
            eeprom_cur_addr = msg->buf[0];
            for (i = 1i < msg->leni++)
            {
                eeprom_buffer[eeprom_cur_addr++] = msg->buf[i];
                if (eeprom_cur_addr == 512)
                    eeprom_cur_addr = 0;
            }
        }
    }
}
请先 登录 后评论

2 个回答

百问网-邵老师
擅长:RTOS STM32

别人明明是int类型的,怎么就是一个字节了

请先 登录 后评论
毕崇明 - 学生

而且  就按照这个设计 你可以直接读写  0x100(256) 地址的虚拟eeprom 吗?

请先 登录 后评论