I2C help needed

Their documentation is pretty obscure, and your results agree, as I say, with the way that the SPI interface works. This is my SPI code, and it reads two bytes:

// for parity checks
const unsigned int masks [16] = { 
      0x01, 0x02, 0x04, 0x08, 
      0x10, 0x20, 0x40, 0x80, 
      0x100, 0x200, 0x400, 0x800, 
      0x1000, 0x2000, 0x4000, 0x8000 };

unsigned int AS5048A::Transfer (const unsigned int command)
  {
  byte hi, lo;

  SPI.setDataMode (SPI_MODE1);
  digitalWrite (chipSelect_, LOW);
  hi = SPI.transfer (highByte (command));
  lo = SPI.transfer (lowByte (command));
  digitalWrite (chipSelect_, HIGH);
   
  unsigned int result = makeWord (hi, lo);
  
  // calculate parity
  byte parity = 0;
  for (byte i = 0; i < 16; i++)
    {
    if (result & masks [i])
      parity++;
    }
  // even parity, so low-order bit should be zero
  if (parity & 1)
    {
    parityFlag_ = true;
    errorFlag_ = false;  // we actually don't know the error flag state
    }
  else
    {
    parityFlag_ = false;
    errorFlag_ = (result & EF) != 0;
    }
  return result;
    
  } // end of AS5048A::Transfer