Jump to main content

##

# 2.110.68 SERCOMx_I2C_Write Function

## C

    /* x = SERCOM instance number */

    /* I2C master mode */

    bool SERCOMx_I2C_Write(uint16_t address, uint8_t *pdata, uint32_t length)

## Summary

Writes data to the I2C slave

## Description

This function writes data to a I2C slave on the bus. The function will attempt to write length number of bytes from pdata 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 SERCOMx_I2C_TransferStatusGet() function and the SERCOMx_I2C_ErrorGet() function to know that 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. The library will call the registered callback function when the transfer has terminated.

## Precondition

SERCOMx_I2C_Initialize must have been called for the associated SERCOM I2C instance.

## Parameters

Param | Description
--- | ---
address | 7-bit / 10-bit slave address
data | pointer to source data buffer that contains the data to betransmitted
length | 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];

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

## Remarks

None.