- HWREG(i2c->hw->base + I2C_O_MDR) = data;
- if (i2c->hw->first_send)
- {
- HWREG(i2c->hw->base + I2C_O_MCS) = I2C_MCS_RUN | I2C_MCS_START;
- while( HWREG(i2c->hw->base + I2C_O_MCS) & I2C_MCS_BUSY );
-
- if (!wait_addrAck(i2c, I2C_MCS_RUN | I2C_MCS_START))
- {
- LOG_ERR("Start timeout\n");
- i2c->errors |= I2C_START_TIMEOUT;
- HWREG(i2c->hw->base + I2C_O_MCS) = I2C_MCS_STOP;
- while (HWREG(i2c->hw->base + I2C_O_MCS) & I2C_MCS_BUSY );
- return;
- }
-
- i2c->hw->first_send = false;
- return;
- }
- else
- {
- HWREG(i2c->hw->base + I2C_O_MCS) = I2C_MCS_RUN;
- while (HWREG(i2c->hw->base + I2C_O_MCS) & I2C_MCS_BUSY );