/* param base The I3C peripheral base address. param handle Pointer to the I3C master driver handle. param callback User provided pointer to the asynchronous callback function. param userData User provided pointer to the application callback data.  */
void I3C_MasterTransferCreateHandle(I3C_Type *base, i3c_master_handle_t *handle, const i3c_master_transfer_callback_t *callback, void *userData)
/* param base The I3C peripheral base address. param handle Pointer to the I3C master driver handle. param callback User provided pointer to the asynchronous callback function. param userData User provided pointer to the application callback data.  */
void I3C_MasterTransferCreateHandle(I3C_Type *base, i3c_master_handle_t *handle, const i3c_master_transfer_callback_t *callback, void *userData)
{
    uint32_t instance;
    assert(NULL != handle);
    (void)memset(handle, 0, sizeof(*handle));
    instance = I3C_GetInstance(base);
    handle->callback = *callback;
    handle->userData = userData;
    s_i3cMasterHandle[instance] = handle;
    s_i3cMasterIsr = I3C_MasterTransferHandleIRQ;
    I3C_MasterClearErrorStatusFlags(base, (uint32_t)kMasterErrorFlags);
    I3C_MasterClearStatusFlags(base, (uint32_t)kMasterClearFlags);
    base->MDATACTRL |= I3C_MDATACTRL_FLUSHTB_MASK | I3C_MDATACTRL_FLUSHFB_MASK;
    (void)EnableIRQ(kI3cIrqs[instance]);
    I3C_MasterEnableInterrupts(base, (uint32_t)kMasterIrqFlags);
}