Для чтения регистра с I2C в дурных SoC типично необходимо:
задать Start, дождаться передачи,
передать адрес, дождаться передачи,
посмотреть флаги ACK,
передать адрес регистра, дождаться передачи,
посмотреть флаги ACK,
передать start, дождаться передачи,
передать адрес, дождаться передачи...