I2C with added address/opcode


#1

Hello I am attempting to get I2C data from an HM6352 compass. It requires an address(x43 read/x42 write) and single byte command(x41) to return a 2 byte direction. When I scope it, it is sending the correct address and attempts to clock the 2 byte return value but it will not insert the command byte. Can anyone see the problem please?

i2c_config.ChipAddress=(0x42>>1);//>>1 66 becomes 33 plus R/W bit
i2c_config.Clk_Speed= ADL_BUS_I2C_CLK_STD;
i2c_config.AddrLength= ADL_BUS_I2C_ADDR_7_BITS;
i2c_config.MasterMode=ADL_BUS_I2C_MASTER_MODE;


i2c_handle=adl_busSubscribe(ADL_BUS_ID_I2C,1,&i2c_config);

tempb=8;
ret=adl_busIOCtl(i2c_handle,ADL_BUS_CMD_SET_ADD_SIZE,&tempb);
i2c_access_config.Address=0x41;

ret = adl_busRead(i2c_handle, &i2c_access_config,2,rbuffer);

#2

You mean the contents are not getting copied to the buffer(rbuffer)?