- 
https://community.nxp.com/t5/S32K/S32K344-C40-IP-Hardware-Fault-Problem/td-p/1697432This is the CODE TO WRITE buffer variable into the FLASH MEM:
uint8_t functionToWriteOnFlash(void * buffer){
 
    // Unlock sector if needed
 
    if (STATUS_C40_IP_SECTOR_PROTECTED == C40_Ip_GetLock(FLS_SECTOR_ADDR)) {
        C40_Ip_ClearLock(FLS_SECTOR_ADDR, FLS_MASTER_ID);
    }
    // NOTE: Is this Necessary to rewrite the same previous sector ?
    eraseSector();
    size_t writeAddress = HEADER_ADDRESS;
    size_t remainingSize = totalSize;
    size_t chunkSize = 16;
    size_t currentSize = 0;
    uint8_t *bufferPtr = buffer;
    uint8_t resp;
    // Move through buffer 16 Bytes every iteration until end
    while (remainingSize > 0) {
        if (remainingSize < chunkSize && remainingSize % 16 != 0) {
            currentSize = (remainingSize > 16) ? (remainingSize - (remainingSize % 16)) : remainingSize;
        } else {
            currentSize = (remainingSize > chunkSize) ? chunkSize : remainingSize;
        }
        resp = writeNvs(writeAddress, currentSize, bufferPtr);
        writeAddress += currentSize;
        bufferPtr += currentSize;
        remainingSize -= currentSize;
        if (0 != resp) {
            return resp;
        }
    }
    if (remainingSize > 0) {
        resp = writeNvs(writeAddress, remainingSize, bufferPtr);
        if (0 != resp) {
            return resp;
        }
    }
    C40Status = C40_Ip_SetLock(FLS_SECTOR_ADDR,FLS_MASTER_ID);
    return 0;
}
 
static uint8_t writeNvs(size_t ulAddress, size_t ulSize, void *pvSource) {
 
    // WRITE DATA ONLY WORKS WHEN I DEBUG STEP BY STEP
 
    C40_Ip_MainInterfaceWrite(ulAddress, ulSize, pvSource, FLS_MASTER_ID);
 
    do {
        C40Status = C40_Ip_MainInterfaceWriteStatus();
    } while (STATUS_C40_IP_BUSY == C40Status);
    Nvs_Assert(STATUS_C40_IP_SUCCESS == C40Status);
    // Compare the data in memory with source
    // I ONLY GET failCounter = 0 IF I USE THE DEBUG STEP BY STEP
 
    C40Status = C40_Ip_Compare(ulAddress, ulSize, pvSource);
 
    if(STATUS_C40_IP_SUCCESS != C40Status){
        failCounter++;
    }
    return Nvs_Assert(STATUS_C40_IP_SUCCESS == C40Status);
}