1.1.11.2 I2CSMBx_Write Function

C

/* x = I2C SMBUS peripheral instance number */

bool I2CSMBx_Write(uint16_t address, uint8_t* wdata, size_t wlength)

Summary

Writes data to the slave.

Description

This function writes data to a slave on the bus. The function will attempt to write wlength number of bytes from wdata buffer to a slave whose address is specified by address. The I2C Master will generate a Start condition, write the data and then generate a Stop Condition. If the slave NAKs the request or a bus error was encountered on the bus, the transfer is terminated. The application can call the I2CSMBx_ErrorGet function to know the cause of the error. The function is non-blocking. It initiates bus activity and returns immediately. The transfer is then completed in the peripheral interrupt. A transfer request cannot be placed when another transfer is in progress. Calling the write function when another function is already in progress will cause the function to return false. If a callback was registered, the library will call the registered callback function when the transfer has completed.

Precondition

I2CSMBx_Initialize must have been called for the associated I2C instance.

Parameters

Param Description
address 7-bit / 10-bit slave address.
wdata pointer to source data buffer that contains the data to betransmitted.
wlength length of data buffer in number of bytes. Also the number of bytesto be written.

Returns

true - The request was placed successfully and the bus activity was initiated

false - The request fails, if there was already a transfer in progress when this function was called

Example

uint8_t myData [NUM_BYTES];
void MyI2CCallback(uintptr_t context)
{
    // This function will be called when the transfer completes. Note
    // that this function executes in the context of the I2C interrupt.
}

I2CSMB0_CallbackRegister(MyI2CCallback, NULL);

if(!I2CSMB0_Write( SLAVE_ADDR, &myData[0], NUM_BYTES ))
{
    // error handling
}

Remarks

None