Jump to main content

##

# 2.92.8 QMSPIx_DMATransferWrite Function

## C

    // x - Instance of the QMSPI peripheral

    uint32_t QMSPIx_DMATransferWrite(QMSPI_DESCRIPTOR_XFER_T *qmspiDescXfer, void* pTransmitData, size_t txSize);

## Summary

Writes data to the QMSPI slave device.

## Description

This function can be used to write maximum of one page of data to the specified address of the serial flash device connected as a QMSPI slave. If the number of bytes to be written is greater than the page size then QMSPIx_DMATransferWrite API needs to be called multiple times.

Note: Before sending next write request, QMSPIx_Read() can be called to read the status register of the slave device to check if the previous write operation is completed.

## Precondition

QMSPIx_Initialize must have been called for the associated QMSPI instance. Write enable command has to be sent before write memory request.

## Parameters

Param | Description
--- | ---
*qmspiDescXfer | Pointer to QMSPI descriptor transfer structure.
*pTransmitData | Pointer to transmit buffer holding the data to write into memory.
txSize | Number of bytes to write.

## Returns

Number of bytes written in memory.

## Example

        uint32_t i;
        QMSPI_DESCRIPTOR_XFER_T qmspiDescXfer;

        APP_WriteEnable();

        memset(&qmspiDescXfer, 0x00, sizeof(QMSPI_DESCRIPTOR_XFER_T));

        qmspiDescXfer.command = APP_CMD_QUAD_INPUT_PAGE_PROGRAM;
        qmspiDescXfer.address = address;
        qmspiDescXfer.qmspi_ifc_mode = QUAD_OUTPUT;
        qmspiDescXfer.ldma_enable = true;
        qmspiDescXfer.ldma_channel_num = QMSPI_LDMA_CHANNEL_0;

        for (i = 0; i < APP_PAGE_PROGRAM_SIZE_BYTES; i++)
        {
            appData.transmitBuffer[i] = pPageData[i];
        }
        QMSPI0_DMATransferWrite(&qmspiDescXfer, appData.transmitBuffer, APP_PAGE_PROGRAM_SIZE_BYTES);