<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: SPI ReadBlock doesn't work in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461882#M27697</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi sruthy_uk,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;here the relevant code:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14700654119963213 jive_macro_code jive_text_macro" data-hasrefreshed="true" data-renderedposition="83_8_1192_912" jivemacro_uid="_14700654119963213" modifiedtitle="true"&gt;&lt;P&gt;/*******************************************************************************&lt;/P&gt;&lt;P&gt;* Definitions&lt;/P&gt;&lt;P&gt;******************************************************************************/&lt;/P&gt;&lt;P&gt;#define DSPI_MASTER_BASE (SPI0_BASE)&lt;/P&gt;&lt;P&gt;#define DSPI_MASTER_BASEADDR ((SPI_Type *) DSPI_MASTER_BASE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define DSPI_MASTER_CLK_SRC (DSPI0_CLK_SRC)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define TRANSFER_SIZE (256)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*! Transfer size */&lt;/P&gt;&lt;P&gt;#define TRANSFER_BAUDRATE (500000U) /*! Transfer baudrate - 500k */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void SetSPIConfig()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; dspi_master_config_t masterConfig;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t sourceClock;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status_t status;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Master config*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.whichCtar = kDSPI_Ctar0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.baudRate = TRANSFER_BAUDRATE;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.bitsPerFrame = 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.cpol = kDSPI_ClockPolarityActiveLow;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.cpha = kDSPI_ClockPhaseSecondEdge;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.direction = kDSPI_MsbFirst;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.pcsToSckDelayInNanoSec = 2000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.lastSckToPcsDelayInNanoSec = 2000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.betweenTransferDelayInNanoSec = 1000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.whichPcs = kDSPI_Pcs1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.pcsActiveHighOrLow = kDSPI_PcsActiveLow;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.enableContinuousSCK = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.enableRxFifoOverWrite = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.enableModifiedTimingFormat = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.samplePoint = kDSPI_SckToSin0Clock;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; NVIC_SetPriority(SPI0_IRQn, 6);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; sourceClock = CLOCK_GetFreq(DSPI_MASTER_CLK_SRC);&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Init(&amp;amp;master_rtos_handle, DSPI_MASTER_BASEADDR, &amp;amp;masterConfig, sourceClock);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (status != kStatus_Success)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("DSPI master: error during initialization. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; //vTaskSuspend(NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;pay attention to source clock and baudrate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14700657130608687" data-hasrefreshed="true" data-renderedposition="1070_8_1192_4048" jivemacro_uid="_14700657130608687" modifiedtitle="true"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void SPI_master_task(void *pvParameters)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dspi_transfer_t masterXfer;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status_t status;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetSPIConfig();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* AD7794 init and config*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_Reset();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_Init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_Config();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_GetStatus();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Start master transfer*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[0] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[1] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[2] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[3] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.txData = masterSendBuffer;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.rxData = masterReceiveBuffer;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.configFlags = kDSPI_MasterCtar0 | kDSPI_MasterPcs1 | kDSPI_MasterPcsContinuous;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.dataSize = 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //RESET&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("Reset AD7794\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTaskDelay( 500/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Init&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_ID);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("Init AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Status&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_STAT);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Status AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // get Mode register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Mode AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // configuration register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_CONF);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Conf AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // IO register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_IO);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO&amp;nbsp; AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // modify configuration register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_CONF);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("modifying configuration register\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON15: VBIAS1&amp;nbsp; : 0 Bias voltaje generator disabled. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON14: VBIAS2&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON13: BO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Burnout Current Enable Bit. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON12: U/!B&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Bipolar \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON11: BOOST&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON10: G2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0&amp;nbsp; Set to G=1 / 2.5V\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON09: G1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON08: G0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON07: REFSEL1 : 0 External reference applied between REFIN1(+) and REFIN1(-).\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON06: REFSEL0 : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON05: REF_DET : 0 NOXREF bit in the status register indicates when the external reference being used by the ADC is open circuit or less than 0.5 V. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON04: BUF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 AIN1(+)/AIN1(-) | Calibration Pair 0 .\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00010000;\&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 2000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // configuration register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_CONF);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Conf AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // set current sources at 210uA&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_IO);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b00000010;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Setting IO Register\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO7 :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO6 : IOEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO5 : IO2DAT&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO4 : IO1DAT&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO3 : IEXCDIR1 : 0 Current Source IEXC1 connected to Pin IOUT1. Current Source IEXC2 connected to Pin IOUT2.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO2 : IEXCDIR0 : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO1 : IEXCEN1&amp;nbsp; : 1 210 uA\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO0 : IEXCEN0&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 2000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Checking IO registers&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_IO);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO&amp;nbsp; AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //TickType_t xDelay = 1000 / portTICK_PERIOD_MS;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // set mode register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR15&amp;nbsp; : MD2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Continuous Conversion Mode. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR14&amp;nbsp; : MD1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR13&amp;nbsp; : MD0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR12&amp;nbsp; : PSW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 Set by user to close the power switch PSW to GND.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR11&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR10&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR09&amp;nbsp; : AMP-CM&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR08&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR07&amp;nbsp; : CLK1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Internal 64 kHz clock. Internal clock is not available at the CLK pin.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR06&amp;nbsp; : CLK0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR05&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR04&amp;nbsp; : CHOP-DIS&amp;nbsp; : 0 Chop disabled\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR03&amp;nbsp; : FS3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 fadc 4.17, Tsettle 480ms, \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR02&amp;nbsp; : FS2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR01&amp;nbsp; : FS1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR00&amp;nbsp; : FS0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b11010000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00011111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 4000/portTICK_PERIOD_MS );*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b10110000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00011111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 4000/portTICK_PERIOD_MS );*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b00010000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00001111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 1000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // get Mode register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Mode AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //EnableSPIDataInInterrupt();&lt;/P&gt;&lt;P&gt;&amp;nbsp; // write continuous read mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_DATA) | 0b00000100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = 0b01011100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 2000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t tmp2;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //PRINTF("ENTERING TO LOOP.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; //xSemaphoreTake(AD7794_sem,portMAX_DELAY);&lt;/P&gt;&lt;P&gt;&amp;nbsp; //SetSPIConfig();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Read ADC channel 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 480/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_DATA) | 0b00000100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //masterSendBuffer[0] = 0b01011100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; tmp2 = (((uint32_t)masterReceiveBuffer[0])&amp;lt;&amp;lt;16) + (((uint32_t)masterReceiveBuffer[1])&amp;lt;&amp;lt;8) + ((uint32_t)masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; double dmV = ( tmp2 / pow(2.0,23) - 1.0)*1.05;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("ADC DATA Value: 0x%02x%02x%02x&amp;nbsp; %.3f mV\r\n",masterReceiveBuffer[0],masterReceiveBuffer[1],masterReceiveBuffer[2], dmV*1000 );&lt;/P&gt;&lt;P&gt;&amp;nbsp; //EnableSPIDataInInterrupt();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTaskSuspend(NULL);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is a test code working with no problem. At the end was more easy to use &lt;STRONG&gt;DSPI_RTOS_Transfer&lt;/STRONG&gt; in Kinetis SDK 2.x and FreeRTOS than use PE with all the fancy and bugged stuffs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can´t send complete code given my contract, but I could share more config files if you need it by PM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;JP&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 01 Aug 2016 15:42:58 GMT</pubDate>
    <dc:creator>jpcordovae</dc:creator>
    <dc:date>2016-08-01T15:42:58Z</dc:date>
    <item>
      <title>SPI ReadBlock doesn't work</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461878#M27693</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Using PE and the example found in help I'm not able to read a response of a AD7794 DAC that I have in a custom PCB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I checked the code and SPI PE configuration several times and I'm sure to have a correct configuration, however&amp;nbsp; the driver are not able to read the block.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suppose to reset the DAC sending 32 consecutive bits with ones (that works perfect), later I read an ID register, but the driver don't send the clock signals to read the response or even the CS lines either.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Inside of the function &lt;STRONG&gt;AD7794_Init&lt;/STRONG&gt; there is a &lt;STRONG&gt;SM1_ReceiveBlock&lt;/STRONG&gt; that never happen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_1464592420566119 jive_macro_code jive_text_macro" data-renderedposition="290_50_798_1424" jivemacro_uid="_1464592420566119" modifiedtitle="true"&gt;&lt;P&gt;LDD_TError AD7794_Reset()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char dataRst[5];&lt;/P&gt;&lt;P&gt;&amp;nbsp; dataRst[0] = 0b11111111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dataRst[1] = 0b11111111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dataRst[2] = 0b11111111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dataRst[3] = 0b11111111;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if( SM1_SendBlock(SM1_DeviceData, (LDD_TData *)dataRst, (uint16_t) 4) == ERR_OK )&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!SM1_GetBlockSentStatus(SM1_DeviceData))&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SM1_Main(SM1_DeviceData);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_OK; // to catch errors&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LDD_TError AD7794_Init()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char dataInit[2] = { AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_ID), 0x00 };&lt;/P&gt;&lt;P&gt;&amp;nbsp; if( SM1_SendBlock(SM1_DeviceData, (LDD_TData *)dataInit, (uint16_t) 1) == ERR_OK )&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!SM1_GetBlockSentStatus(SM1_DeviceData))&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SM1_Main(SM1_DeviceData);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_OK; // to catch errors&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char dataRX[4] = { 0x00, 0x00, 0x00, 0x00 };&lt;/P&gt;&lt;P&gt;&amp;nbsp; if( SM1_ReceiveBlock(SM1_DeviceData, (LDD_TData *)dataRX, (uint16_t) 1) == ERR_OK )&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(!SM1_GetBlockReceivedStatus(SM1_DeviceData))&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; SM1_Main(SM1_DeviceData);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_OK; // to catch errors&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LDD_TError AD7794_GetStatus(unsigned char *_status)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char data = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_STAT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(SM1_SendBlock(SM1_DeviceData, (LDD_TData *)&amp;amp;data, (uint16_t) 1) == ERR_OK )&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!SM1_GetBlockSenStatus(SM1_DeviceData))&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SM1_Main(SM1_DeviceData);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_OK; // to catch errors&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if( SM1_ReceiveBlock(SM1_DeviceData, (LDD_TData *)_status, (uint16_t) 1) == ERR_OK )&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(!SM1_GetBlockReceivedStatus(SM1_DeviceData))&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; SM1_Main(SM1_DeviceData);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_OK; // to catch errors&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_OK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*lint -save&amp;nbsp; -e970 Disable MISRA rule (6.3) checking. */&lt;/P&gt;&lt;P&gt;int main(void)&lt;/P&gt;&lt;P&gt;/*lint -restore Enable MISRA rule (6.3) checking. */&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Write your local variable definition here */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/&lt;/P&gt;&lt;P&gt;&amp;nbsp; PE_low_level_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** End of Processor Expert internal initialization.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ***/&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Write your code here */&lt;/P&gt;&lt;P&gt;&amp;nbsp; SM1_SelectConfiguration(SM1_DeviceData, 0U, 0U);&lt;/P&gt;&lt;P&gt;&amp;nbsp; AD7794_Reset();&lt;/P&gt;&lt;P&gt;&amp;nbsp; AD7794_Init();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char bufferRX[4] = { 0x00, 0x00, 0x00, 0x00 };&lt;/P&gt;&lt;P&gt;&amp;nbsp; //AD7794_GetStatus(bufferRX);&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*while(1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; AD7794_GetStatus(bufferRX);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bufferRX[0] = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Don't write any code pass this line, or it will be deleted during code generation. ***/&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/&lt;/P&gt;&lt;P&gt;&amp;nbsp; #ifdef PEX_RTOS_START&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PEX_RTOS_START();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Startup of the selected RTOS. Macro is defined by the RTOS component. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; #endif&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** End of RTOS startup code.&amp;nbsp; ***/&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(;;){}&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/&lt;/P&gt;&lt;P&gt;} /*** End of mainroutine. DO NOT MODIFY THIS TEXT!!! ***/&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: rgba(0, 0, 0, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px;"&gt;the ndBlock(SM1_Devi&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: rgba(0, 0, 0, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px;"&gt;ndBlock(SM1_Devi&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 May 2016 07:08:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461878#M27693</guid>
      <dc:creator>jpcordovae</dc:creator>
      <dc:date>2016-05-30T07:08:15Z</dc:date>
    </item>
    <item>
      <title>Re: SPI ReadBlock doesn't work</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461879#M27694</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Juan Pablo Echeverria:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;STRONG&gt;ReceiveBlock()&lt;/STRONG&gt; method prepares some buffers to receive data. However for the SPI module to send the clock you need to "send dummy bytes" by using the &lt;STRONG&gt;SendBlock()&lt;/STRONG&gt; API. The block sent must have the same size as the expected number of bytes to receive.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps. Let me know if you have doubts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Jorge Gonzalez&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Jun 2016 16:36:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461879#M27694</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2016-06-01T16:36:26Z</dc:date>
    </item>
    <item>
      <title>Re: SPI ReadBlock doesn't work</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461880#M27695</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it was very helpful, I fixed the functions and now I'm reading without problems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;JP&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jun 2016 04:45:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461880#M27695</guid>
      <dc:creator>jpcordovae</dc:creator>
      <dc:date>2016-06-02T04:45:02Z</dc:date>
    </item>
    <item>
      <title>Re: SPI ReadBlock doesn't work</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461881#M27696</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Juan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please post the entire code of ur project?? Am also trying to&amp;nbsp; &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;read a response of a AD5421 DAC. But the SPI transmission is not working properly in MK60FX512 while interfacing with DAC. Is ur SPI is working properly without using interrupt event??&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Please reply me as soon as possible.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Sruthy UK&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Aug 2016 05:06:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461881#M27696</guid>
      <dc:creator>sruthyuk</dc:creator>
      <dc:date>2016-08-01T05:06:42Z</dc:date>
    </item>
    <item>
      <title>Re: SPI ReadBlock doesn't work</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461882#M27697</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi sruthy_uk,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;here the relevant code:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14700654119963213 jive_macro_code jive_text_macro" data-hasrefreshed="true" data-renderedposition="83_8_1192_912" jivemacro_uid="_14700654119963213" modifiedtitle="true"&gt;&lt;P&gt;/*******************************************************************************&lt;/P&gt;&lt;P&gt;* Definitions&lt;/P&gt;&lt;P&gt;******************************************************************************/&lt;/P&gt;&lt;P&gt;#define DSPI_MASTER_BASE (SPI0_BASE)&lt;/P&gt;&lt;P&gt;#define DSPI_MASTER_BASEADDR ((SPI_Type *) DSPI_MASTER_BASE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define DSPI_MASTER_CLK_SRC (DSPI0_CLK_SRC)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define TRANSFER_SIZE (256)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*! Transfer size */&lt;/P&gt;&lt;P&gt;#define TRANSFER_BAUDRATE (500000U) /*! Transfer baudrate - 500k */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void SetSPIConfig()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; dspi_master_config_t masterConfig;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t sourceClock;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status_t status;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Master config*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.whichCtar = kDSPI_Ctar0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.baudRate = TRANSFER_BAUDRATE;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.bitsPerFrame = 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.cpol = kDSPI_ClockPolarityActiveLow;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.cpha = kDSPI_ClockPhaseSecondEdge;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.direction = kDSPI_MsbFirst;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.pcsToSckDelayInNanoSec = 2000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.lastSckToPcsDelayInNanoSec = 2000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.ctarConfig.betweenTransferDelayInNanoSec = 1000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.whichPcs = kDSPI_Pcs1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.pcsActiveHighOrLow = kDSPI_PcsActiveLow;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.enableContinuousSCK = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.enableRxFifoOverWrite = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.enableModifiedTimingFormat = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterConfig.samplePoint = kDSPI_SckToSin0Clock;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; NVIC_SetPriority(SPI0_IRQn, 6);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; sourceClock = CLOCK_GetFreq(DSPI_MASTER_CLK_SRC);&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Init(&amp;amp;master_rtos_handle, DSPI_MASTER_BASEADDR, &amp;amp;masterConfig, sourceClock);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (status != kStatus_Success)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("DSPI master: error during initialization. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; //vTaskSuspend(NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;pay attention to source clock and baudrate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14700657130608687" data-hasrefreshed="true" data-renderedposition="1070_8_1192_4048" jivemacro_uid="_14700657130608687" modifiedtitle="true"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void SPI_master_task(void *pvParameters)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dspi_transfer_t masterXfer;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status_t status;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetSPIConfig();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* AD7794 init and config*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_Reset();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_Init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_Config();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AD7794_GetStatus();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Start master transfer*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[0] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[1] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[2] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[3] = 0xFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.txData = masterSendBuffer;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.rxData = masterReceiveBuffer;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.configFlags = kDSPI_MasterCtar0 | kDSPI_MasterPcs1 | kDSPI_MasterPcsContinuous;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.dataSize = 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //RESET&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("Reset AD7794\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTaskDelay( 500/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Init&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_ID);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("Init AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Status&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_STAT);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Status AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // get Mode register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Mode AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // configuration register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_CONF);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Conf AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // IO register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_IO);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO&amp;nbsp; AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // modify configuration register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_CONF);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("modifying configuration register\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON15: VBIAS1&amp;nbsp; : 0 Bias voltaje generator disabled. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON14: VBIAS2&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON13: BO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Burnout Current Enable Bit. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON12: U/!B&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Bipolar \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON11: BOOST&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON10: G2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0&amp;nbsp; Set to G=1 / 2.5V\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON09: G1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON08: G0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON07: REFSEL1 : 0 External reference applied between REFIN1(+) and REFIN1(-).\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON06: REFSEL0 : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON05: REF_DET : 0 NOXREF bit in the status register indicates when the external reference being used by the ADC is open circuit or less than 0.5 V. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON04: BUF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 AIN1(+)/AIN1(-) | Calibration Pair 0 .\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("CON03: CH0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00010000;\&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 2000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // configuration register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_CONF);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Conf AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // set current sources at 210uA&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_IO);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b00000010;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Setting IO Register\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO7 :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO6 : IOEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO5 : IO2DAT&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO4 : IO1DAT&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO3 : IEXCDIR1 : 0 Current Source IEXC1 connected to Pin IOUT1. Current Source IEXC2 connected to Pin IOUT2.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO2 : IEXCDIR0 : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO1 : IEXCEN1&amp;nbsp; : 1 210 uA\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO0 : IEXCEN0&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 2000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Checking IO registers&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_IO);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("IO&amp;nbsp; AD7794: 0x%02x\r\n",masterReceiveBuffer[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //TickType_t xDelay = 1000 / portTICK_PERIOD_MS;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // set mode register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR15&amp;nbsp; : MD2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Continuous Conversion Mode. \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR14&amp;nbsp; : MD1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR13&amp;nbsp; : MD0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR12&amp;nbsp; : PSW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 Set by user to close the power switch PSW to GND.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR11&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR10&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR09&amp;nbsp; : AMP-CM&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR08&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR07&amp;nbsp; : CLK1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 Internal 64 kHz clock. Internal clock is not available at the CLK pin.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR06&amp;nbsp; : CLK0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR05&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR04&amp;nbsp; : CHOP-DIS&amp;nbsp; : 0 Chop disabled\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR03&amp;nbsp; : FS3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 fadc 4.17, Tsettle 480ms, \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR02&amp;nbsp; : FS2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR01&amp;nbsp; : FS1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("MR00&amp;nbsp; : FS0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1 \r\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b11010000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00011111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 4000/portTICK_PERIOD_MS );*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b10110000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00011111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 4000/portTICK_PERIOD_MS );*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_WRITE | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[1] = 0b00010000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[2] = 0b00001111;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 1000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // get Mode register&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_MODE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("Mode AD7794: 0x%02x%02x\r\n",masterReceiveBuffer[1],masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //EnableSPIDataInInterrupt();&lt;/P&gt;&lt;P&gt;&amp;nbsp; // write continuous read mode&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_DATA) | 0b00000100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterSendBuffer[0] = 0b01011100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 2000/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t tmp2;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //PRINTF("ENTERING TO LOOP.\r\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; //xSemaphoreTake(AD7794_sem,portMAX_DELAY);&lt;/P&gt;&lt;P&gt;&amp;nbsp; //SetSPIConfig();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Read ADC channel 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelay( 480/portTICK_PERIOD_MS );&lt;/P&gt;&lt;P&gt;&amp;nbsp; ClearSPIBuffers();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //masterSendBuffer[0] = AD7793_COMM_READ | AD7793_COMM_ADDR(AD7793_REG_DATA) | 0b00000100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //masterSendBuffer[0] = 0b01011100;&lt;/P&gt;&lt;P&gt;&amp;nbsp; masterXfer.dataSize = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; status = DSPI_RTOS_Transfer(&amp;amp;master_rtos_handle, &amp;amp;masterXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; tmp2 = (((uint32_t)masterReceiveBuffer[0])&amp;lt;&amp;lt;16) + (((uint32_t)masterReceiveBuffer[1])&amp;lt;&amp;lt;8) + ((uint32_t)masterReceiveBuffer[2]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; double dmV = ( tmp2 / pow(2.0,23) - 1.0)*1.05;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRINTF("ADC DATA Value: 0x%02x%02x%02x&amp;nbsp; %.3f mV\r\n",masterReceiveBuffer[0],masterReceiveBuffer[1],masterReceiveBuffer[2], dmV*1000 );&lt;/P&gt;&lt;P&gt;&amp;nbsp; //EnableSPIDataInInterrupt();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTaskSuspend(NULL);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is a test code working with no problem. At the end was more easy to use &lt;STRONG&gt;DSPI_RTOS_Transfer&lt;/STRONG&gt; in Kinetis SDK 2.x and FreeRTOS than use PE with all the fancy and bugged stuffs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can´t send complete code given my contract, but I could share more config files if you need it by PM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;JP&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Aug 2016 15:42:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-ReadBlock-doesn-t-work/m-p/461882#M27697</guid>
      <dc:creator>jpcordovae</dc:creator>
      <dc:date>2016-08-01T15:42:58Z</dc:date>
    </item>
  </channel>
</rss>

