Hi Nikivendola,
The I2C communication is in basic style.
For the "READ" command the first byte you need to write is the Device_ID - it is 0xC4 for MAG3110. Then the slave answers by ACK, next byte you need to write the register address you want to use, the slave answers by ACK, then the master need to generate "repeat_start" and read the byte. The slave in this action sends the data from addressed register and automatically increments the internal registers address pointer. Now it is up to you (master) - is you send the ACK, the slave will send next data from the next register. If you send NACK and then the STOP condition, the communication will be finished.
The important is to use the right addresses in this communication.
For the 'WRITE" command, after first two byte written and answered ACK by slave, you can write such data into addressed register. The slave will answer ACK and then master can finish the write process by STOP condition.
In the normal read mode the slave sends the 16-bit data - two bytes. In the Fast mode the only higher byte is send - 8-bit data.
If you need more help, you are welcome.
Best Regards,
Stano.