Well, schematics would have been nice, to confirm the existence of pull-up resistors, and other obvious things.
Also, the complete code would be nice.
However, in the code you attached, there's an obvious error.
You're setting the I2C addressing mode to I2C_ADDRESSINGMODE_7BIT, whilst TX/RXing to address 0xD0/0xD1, which cannot be stored in 7 bits. That's the first clue.
Also, in 7bit addressing mode, you don't (as in, should not) specify the read/write bit in the address.
The first thing I would try (stab in the dark, as I'm missing a lot of info here) is to change lines like this:
HAL_I2C_Master_Transmit(&hi2c1, 0x00D0, set_time, 9, HAL_MAX_DELAY);
to
HAL_I2C_Master_Transmit(&hi2c1, (0xD0>>1), set_time, 9, HAL_MAX_DELAY);
And
HAL_I2C_Master_Receive(&hi2c1, 0x00D1, rx_data, 7, HAL_MAX_DELAY);
to
HAL_I2C_Master_Receive(&hi2c1, (0xD0>>1), rx_data, 7, HAL_MAX_DELAY);
(Yep, same address for TX and RX. The HAL will set the RW bit depending on which function you are calling)
Also, a little warning. Take it for what it is, advice from a random guy on the Internet, but don't invest too much time in the Cube/HAL thing. It's broken in many, many subtle ways, and simply not production ready in my opinion.
Either use the old StdPeriph libraries, or bang on the hardware directly.