This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Looking for SPI/EDMA example for c6657

Hi,

 I got couple of questions. Is there CSL support available for c6657 device for SPI? 

And can I get an example code for SPI/EDMA for SPI data transfer while interfacing a DSP to an external device like slics on SPI? 

Regards,

Hari

  • Hi Hari,

    Yes, in the MCSDK there is CSL support for the SPI at:  C:\TI\pdk_C6657_1_0_0_0\packages\ti\csl\cslr_spi.h

    http://software-dl.ti.com/sdoemb/sdoemb_public_sw/bios_mcsdk/latest/index_FDS.html

    I'm not aware of an example the uses the EDMA with SPI at this point.

    Regards,

    Travis

  • Not sure how different the C6657 is from the C6670/78 but Steven Ji gave me a pretty good example for the C6670 here:

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/170614.aspx

    Erick

  • Hi,

    There is no official SPI driver but SPI driver is still there as a part of IBL functionality for using SPI NOR flash. You can refer to spi.c, spi_api.c and spiutil.c for SPI functionality driver available at C:\ti\mcsdk_2_00_xx_xx\tools\boot_loader\ibl\src\hw\spi folder. You can look into Iblinitspinor.c file at C:\ti\mcsdk_2_00_xx_xx\tools\boot_loader\ibl\src\main folder iblInitSpiNor() function for knowing how to use those SPI APIs to use SPI based NOR (or any SPI based device) using those APIs.

     

    Regards,

    Bhavin

  • Hi,

      I tried to work on this http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/170614.aspx 

    on c6657 EVM. 

    I got first problem where CSL_TPCC_1 is not defined.  I see it defines CSL_TPCC_2. I tried replacing with values 1 or 2. 

    Compilation is fine, But I get struck @ 

    while(!(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIFLG & 0x00000100));
    profileRxStart = CSL_tscRead();
    ------------------------------------------------------------------------------------------------------------------------------------------------

    
    #include <ti/csl/soc.h>
    #include <ti/csl/tistdtypes.h>
    #include <ti/csl/csl_chip.h>
    #include <ti/csl/csl_edma3.h>
    #include <ti/csl/csl_edma3Aux.h>
    #include <ti/csl/cslr_spi.h>
    
    #include "spi_common.h"
    #include <stdio.h>
    
    #define TEST_ACNT 2
    #define TEST_BCNT 1024
    #define TEST_CCNT 1
    
    #define TEST_SYCTYPE_AB     1
    #define TEST_SYCTYPE_A      0
    
    #define BUF_SIZE TEST_BCNT
    
    #define BUF_NUM 5
    
    #pragma DATA_SECTION(dstBuf, ".gem1_data")
    #pragma DATA_ALIGN(dstBuf, 8)
    Uint16 dstBuf[BUF_NUM][BUF_SIZE];
    
    #pragma DATA_SECTION(srcBuf, ".gem0_data")
    #pragma DATA_ALIGN(srcBuf, 8)
    Uint16 srcBuf[BUF_NUM][BUF_SIZE];
    
    CSL_Uint64 profileTxStart;
    CSL_Uint64 profileTxStop;
    CSL_Uint64 profileRxStart;
    CSL_Uint64 profileRxStop;
    CSL_Uint64 profileTx;
    CSL_Uint64 profileRx;
    
    
    Uint32 global_address (Uint32 addr)
    {
    	Uint32 corenum;
    	corenum = CSL_chipReadReg(CSL_CHIP_DNUM);
    
    	addr = addr + (0x10000000 + corenum*0x1000000);
    	return addr;
    }
    
    
    void Enable_Edma_Channels(void)
    {
       	// Enable channel
       	CSL_edma3HwChannelControl(hChannel0,CSL_EDMA3_CMD_CHANNEL_ENABLE,NULL);
    
       	// Enable channel
       	CSL_edma3HwChannelControl(hChannel1,CSL_EDMA3_CMD_CHANNEL_ENABLE,NULL);
    
    }
    
    
    void Setup_Edma_Init (void)
    {
    
        // EDMA Module Initialization
    	CSL_edma3Init(NULL);
    
     	// EDMA Module Open
        hModule = CSL_edma3Open(&moduleObj,CSL_TPCC_2,NULL,&EdmaStat);
    
    
    	// SPI Tx Channel Open - Channel 2 for Tx (SPIXEVT)
    	chParam.regionNum  = CSL_EDMA3_REGION_GLOBAL;
    	chSetup.que        = CSL_EDMA3_QUE_0;
    	chParam.chaNum     = CSL_EDMA3_CHA_2;
    
    	hChannel0 = CSL_edma3ChannelOpen(&ChObj0, CSL_TPCC_2, &chParam, &EdmaStat);
    	chSetup.paramNum   = chParam.chaNum; //CSL_EDMA3_CHA_2;
        CSL_edma3HwChannelSetupParam(hChannel0,chSetup.paramNum);
    
    	// SPI Rx Channel Open - Channel 3 for Rx (SPIREVT)
    	chParam.regionNum  = CSL_EDMA3_REGION_GLOBAL;
    	chSetup.que        = CSL_EDMA3_QUE_0;
    	chParam.chaNum     = CSL_EDMA3_CHA_3;
    
    	hChannel1 = CSL_edma3ChannelOpen(&ChObj1, CSL_TPCC_2, &chParam, &EdmaStat);
    	chSetup.paramNum = chParam.chaNum; //CSL_EDMA3_CHA_3;
        CSL_edma3HwChannelSetupParam(hChannel1,chSetup.paramNum);
    
        Enable_Edma_Channels();
    }
    
    
    void Setup_Edma_Params (Uint32 srcBuf,Uint32 dstBuf)
    {
    	// Parameter Handle Open
    	// Open all the handles and keep them ready
    	paramHandle0            = CSL_edma3GetParamHandle(hChannel0,CSL_EDMA3_CHA_2,&EdmaStat);
      	paramHandle1            = CSL_edma3GetParamHandle(hChannel1,CSL_EDMA3_CHA_3,&EdmaStat);
    
        paramSetup.aCntbCnt     = CSL_EDMA3_CNT_MAKE(TEST_ACNT,(TEST_BCNT));
    	paramSetup.srcDstBidx   = CSL_EDMA3_BIDX_MAKE(TEST_ACNT,0 );
    	paramSetup.srcDstCidx   = CSL_EDMA3_CIDX_MAKE(0,0);
    	paramSetup.cCnt         = TEST_CCNT;
    	paramSetup.option       = CSL_EDMA3_OPT_MAKE(FALSE,FALSE,FALSE,TRUE,CSL_EDMA3_CHA_2,CSL_EDMA3_TCC_NORMAL, \
    	      CSL_EDMA3_FIFOWIDTH_NONE,FALSE,CSL_EDMA3_SYNC_A,CSL_EDMA3_ADDRMODE_INCR,CSL_EDMA3_ADDRMODE_INCR);
    	if( ((Uint32)srcBuf & 0xFFF00000) == 0x00800000)
    		paramSetup.srcAddr      = (Uint32)(global_address((Uint32)srcBuf));
    	else
    		paramSetup.srcAddr      = (Uint32)(srcBuf);
    	paramSetup.dstAddr      = (Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIDAT0);
    
    	//paramSetup.linkBcntrld  = CSL_EDMA3_LINKBCNTRLD_MAKE(CSL_EDMA3_LINK_NULL,0);
    	paramSetup.linkBcntrld  = CSL_EDMA3_LINKBCNTRLD_MAKE(paramHandle0_reload,0);
    
    	CSL_edma3ParamSetup(paramHandle0,&paramSetup);
    	CSL_edma3ParamSetup(paramHandle0_reload,&paramSetup);
    
        paramSetup.aCntbCnt     = CSL_EDMA3_CNT_MAKE(TEST_ACNT,TEST_BCNT);
    	paramSetup.srcDstBidx   = CSL_EDMA3_BIDX_MAKE(0,TEST_ACNT );
    	paramSetup.srcDstCidx   = CSL_EDMA3_CIDX_MAKE(0,0);
    	paramSetup.cCnt         = TEST_CCNT;
    	paramSetup.option       = CSL_EDMA3_OPT_MAKE(FALSE,FALSE,FALSE,TRUE,CSL_EDMA3_CHA_3,CSL_EDMA3_TCC_NORMAL, \
    	      CSL_EDMA3_FIFOWIDTH_NONE,FALSE,CSL_EDMA3_SYNC_A,CSL_EDMA3_ADDRMODE_INCR,CSL_EDMA3_ADDRMODE_INCR);
    	paramSetup.srcAddr      = (Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIBUF);
    
    	if( ((Uint32)dstBuf & 0xFFF00000) == 0x00800000)
    		paramSetup.dstAddr      = (Uint32)(global_address((Uint32)dstBuf));
    	else
    		paramSetup.dstAddr      = (Uint32)dstBuf;
    
    	//paramSetup.linkBcntrld  = CSL_EDMA3_LINKBCNTRLD_MAKE(CSL_EDMA3_LINK_NULL,0);
    	paramSetup.linkBcntrld  = CSL_EDMA3_LINKBCNTRLD_MAKE(paramHandle1_reload,0);
    
    	CSL_edma3ParamSetup(paramHandle1,&paramSetup);
    	CSL_edma3ParamSetup(paramHandle1_reload,&paramSetup);
    
    	//Enable_Edma_Channels();
    }
    
    void Test_Edma(void)
    {
    
    	// Wait for interrupt
        regionIpr.region  = CSL_EDMA3_REGION_GLOBAL;
    	regionIpr.intr    = 0;
    	regionIpr.intrh   = 0;
    	do{
    		CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIpr);
    	}while ((regionIpr.intr & 0x08) != 0x08);	//channel_3
    
    	profileTxStop = CSL_tscRead();
    
    	do{
    		CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIpr);
    	}while ((regionIpr.intr & 0x04) != 0x04);	//channel_2
    
    	profileRxStop = CSL_tscRead();
    
    	/* Clear pending interrupt */
    	CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR, &regionIpr);
    
    }
    
    
    void Close_Edma()
    {
        CSL_FINST(hModule->regs->TPCC_SECR,TPCC_TPCC_SECR_SECR2,RESETVAL);
      	CSL_FINST(hModule->regs->TPCC_SECR,TPCC_TPCC_SECR_SECR3,RESETVAL);
    
     	CSL_edma3ChannelClose(hChannel0);
     	CSL_edma3ChannelClose(hChannel1);
     	CSL_edma3Close(hModule);
    }
    
    void Setup_SPI_Init (void)
    {
        /* Reset SPI */
        ((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIGCR0=
            CSL_SPI_SPIGCR0_RESET_IN_RESET<<CSL_SPI_SPIGCR0_RESET_SHIFT;
    
        /* Take SPI out of reset */
        ((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIGCR0=
            CSL_SPI_SPIGCR0_RESET_OUT_OF_RESET<<CSL_SPI_SPIGCR0_RESET_SHIFT;
    
        /* Configure SPI as master */
        ((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIGCR1=
            CSL_SPI_SPIGCR1_CLKMOD_INTERNAL<<CSL_SPI_SPIGCR1_CLKMOD_SHIFT|
            CSL_SPI_SPIGCR1_MASTER_MASTER<<CSL_SPI_SPIGCR1_MASTER_SHIFT;
    
        /* Configure SPI in 4-pin SCS mode */
        ((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIPC0=
            CSL_SPI_SPIPC0_SOMIFUN_SPI<<CSL_SPI_SPIPC0_SOMIFUN_SHIFT|
            CSL_SPI_SPIPC0_SIMOFUN_SPI<<CSL_SPI_SPIPC0_SIMOFUN_SHIFT|
            CSL_SPI_SPIPC0_CLKFUN_SPI<<CSL_SPI_SPIPC0_CLKFUN_SHIFT|
            CSL_SPI_SPIPC0_SCS0FUN0_SPI<<CSL_SPI_SPIPC0_SCS0FUN0_SHIFT;
    
    
    	/* Put SPI in Lpbk mode */
    	((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIGCR1 |=
    		CSL_SPI_SPIGCR1_LOOPBACK_ENABLE<<CSL_SPI_SPIGCR1_LOOPBACK_SHIFT;
    
        /* Chose SPIFMT0 */
        ((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIDAT1=
            CSL_SPI_SPIDAT1_DFSEL_FORMAT0<<CSL_SPI_SPIDAT1_DFSEL_SHIFT;
        /* Configure for WAITEN=YES,SHIFTDIR=MSB,POLARITY=HIGH,PHASE=IN,CHARLEN=16*/
        ((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIFMT[0]=
            CSL_SPI_SPIFMT_WAITENA_DISABLE<<CSL_SPI_SPIFMT_WAITENA_SHIFT|
            CSL_SPI_SPIFMT_SHIFTDIR_MSB<<CSL_SPI_SPIFMT_SHIFTDIR_SHIFT|
            CSL_SPI_SPIFMT_POLARITY_LOW<<CSL_SPI_SPIFMT_POLARITY_SHIFT|
            CSL_SPI_SPIFMT_PHASE_DELAY<<CSL_SPI_SPIFMT_PHASE_SHIFT|
            0x1<<CSL_SPI_SPIFMT_PRESCALE_SHIFT|
            0x10<<CSL_SPI_SPIFMT_CHARLEN_SHIFT;
    
    	((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIINT0 =
    	CSL_SPI_SPIINT0_ENABLEHIGHZ_ENABLE<<CSL_SPI_SPIINT0_ENABLEHIGHZ_SHIFT|
    	CSL_SPI_SPIINT0_OVRNINTENA_ENABLE<<CSL_SPI_SPIINT0_OVRNINTENA_SHIFT|
    	CSL_SPI_SPIINT0_BITERRENA_ENABLE<<CSL_SPI_SPIINT0_BITERRENA_SHIFT|
    	CSL_SPI_SPIINT0_DESYNCENA_ENABLE<<CSL_SPI_SPIINT0_DESYNCENA_SHIFT|
    	CSL_SPI_SPIINT0_PARERRENA_ENABLE<<CSL_SPI_SPIINT0_PARERRENA_SHIFT|
    	CSL_SPI_SPIINT0_TIMEOUTENA_ENABLE<<CSL_SPI_SPIINT0_TIMEOUTENA_SHIFT|
    	CSL_SPI_SPIINT0_DLENERRENA_ENABLE<<CSL_SPI_SPIINT0_DLENERRENA_SHIFT;
    
        /* Enable communication */
        ((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIGCR1|=
            CSL_SPI_SPIGCR1_ENABLE_ENABLE<<CSL_SPI_SPIGCR1_ENABLE_SHIFT;
    
    }
    
    void SPI_DMA_Request (void)
    {
    	/* Disable DMA Request */
    	((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIINT0 &=\
    		~(CSL_SPI_SPIINT0_DMAREQEN_ENABLE<<CSL_SPI_SPIINT0_DMAREQEN_SHIFT);
    
        /* Enable DMA Request */
    	((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIINT0 |=\
    		CSL_SPI_SPIINT0_DMAREQEN_ENABLE<<CSL_SPI_SPIINT0_DMAREQEN_SHIFT;
    
    	while(!(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIFLG & 0x00000200));
    	profileTxStart = CSL_tscRead();
    
    	while(!(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIFLG & 0x00000100));
    	profileRxStart = CSL_tscRead();
    }
    
    
    Bool Verify_Transfer(Uint16 aCnt, Uint16 bCnt, Uint16 cCnt, Int16 srcBIdx, Int16 dstBIdx, Int16 srcCIdx, Int16 dstCIdx,Uint32 srcBuff,Uint32 dstBuff, Bool abSync)
    {
    	Uint8* srcArrayPtr = (Uint8*)srcBuff;
    	Uint8* dstArrayPtr = (Uint8*)dstBuff;
    	Uint8* srcFramePtr = (Uint8*)srcBuff;
    	Uint8* dstFramePtr = (Uint8*)dstBuff;
    
    	int i,j,k;
    	for (i = 0; i < cCnt; i++)
    	{
    		for (j = 0; j < bCnt ;j++)
    		{
    			for (k = 0;k < aCnt;k++)
    			{
    				if (srcArrayPtr[k] != dstArrayPtr[k])
    				{
    					return FALSE;
    				}
    			}
    			srcArrayPtr = srcArrayPtr + srcBIdx;
    			dstArrayPtr = dstArrayPtr + dstBIdx;
    		}
    		if (abSync) {
    			srcFramePtr = srcFramePtr + srcCIdx;
    			srcArrayPtr = srcFramePtr;
    			dstFramePtr = dstFramePtr + dstCIdx;
    			dstArrayPtr = dstFramePtr;
    		} else
    		{
    		    srcFramePtr = srcArrayPtr + srcCIdx - srcBIdx;
    			srcArrayPtr = srcFramePtr;
    			dstFramePtr = dstArrayPtr + dstCIdx - dstBIdx;
    			dstArrayPtr = dstFramePtr;
    		}
    	}
    	return TRUE;
    }
    
    void Initiate_Buffers(Uint16 aCnt, Uint16 bCnt, Uint16 cCnt, Int16 srcBIdx, Int16 dstBIdx, Int16 srcCIdx, Int16 dstCIdx,Uint32 srcBuff,Uint32 dstBuff, Bool abSync)
    {
    	Uint8* srcArrayPtr = (Uint8*)srcBuff;
    	Uint8* dstArrayPtr = (Uint8*)dstBuff;
    	Uint8* srcFramePtr = (Uint8*)srcBuff;
    	Uint8* dstFramePtr = (Uint8*)dstBuff;
    
    	Uint8 cnt = 0;
    	int i,j,k;
    	for (i = 0; i < cCnt; i++)
    	{
    		for (j = 0; j < bCnt ;j++)
    		{
    			for (k = 0;k < aCnt;k++)
    			{
    				srcArrayPtr[k] = cnt++;
    				dstArrayPtr[k] = 0;
    			}
    			srcArrayPtr = srcArrayPtr + srcBIdx;
    			dstArrayPtr = dstArrayPtr + dstBIdx;
    		}
    		if (abSync) {
    			srcFramePtr = srcFramePtr + srcCIdx;
    			srcArrayPtr = srcFramePtr;
    			dstFramePtr = dstFramePtr + dstCIdx;
    			dstArrayPtr = dstFramePtr;
    		} else
    		{
    		    srcFramePtr = srcArrayPtr + srcCIdx - srcBIdx;
    			srcArrayPtr = srcFramePtr;
    			dstFramePtr = dstArrayPtr + dstCIdx - dstBIdx;
    			dstArrayPtr = dstFramePtr;
    		}
    	}
    }
    
    void main (void)
    {
    	volatile Uint32 failFlag = FALSE;
    	int i = 0;
    
    	//Initiate src/dst buffers
    	for (i=0; i<BUF_NUM; i++)
    	{
    		Initiate_Buffers(TEST_ACNT,TEST_BCNT, TEST_CCNT,TEST_ACNT ,TEST_ACNT, TEST_ACNT*TEST_BCNT, TEST_ACNT*TEST_BCNT,(Uint32)srcBuf[i],(Uint32)dstBuf[i], CSL_EDMA3_SYNC_A);
    	}
    
    	//Initialize EDMA for SPI transfer
    	Setup_Edma_Init();
    
       	//Configure SPI in loopback mode and enable DMA interrupt support
    	Setup_SPI_Init();
    
    	CSL_tscEnable();
    
    	for (i=0; i<BUF_NUM; i++)
    	{
    		//Enable EDMA for SPI transfer
    	   	Setup_Edma_Params((Uint32)srcBuf[i],(Uint32)dstBuf[i]);
    
    	   	//Enable SPI DMA Request
    	   	SPI_DMA_Request();
    
    		//Check EDMA transfer completion status
    	    Test_Edma();
    
    	   	//Verify src/dst buffers after transfer
    	   	failFlag = Verify_Transfer(TEST_ACNT,TEST_BCNT, TEST_CCNT,TEST_ACNT ,TEST_ACNT, TEST_ACNT*TEST_BCNT, TEST_ACNT*TEST_BCNT,(Uint32)srcBuf[i],(Uint32)dstBuf[i], CSL_EDMA3_SYNC_A);
    
    	   	if (failFlag == TRUE)
    	   		printf("data verification of buffer[%d] passed\n", i);
    	   	else
    	   		printf("data verification of buffer[%d] failed\n", i);
    
    		profileTx = (Uint32)(profileTxStop - profileTxStart);
    	    profileRx = (Uint32)(profileRxStop - profileRxStart);
    
    	    printf("data buffer[%d] TX throughput is %f Mbps\n",i, TEST_ACNT*TEST_BCNT*8*1000/(float)profileTx);
    	    printf("data buffer[%d] RX throughput is %f Mbps\n",i, TEST_ACNT*TEST_BCNT*8*1000/(float)profileRx);
    	    printf("\n");
    	}
    
    
    	//Close EDMA channels/module                                        */
    	Close_Edma();
    
    	printf("end of test\n");
    
    }
    

  • Harikrishna,

    My best guess would be that you are not using the correct EDMA channels for the SPI (the example uses CSL_EDMA3_CHA_2 & CSL_EDMA3_CHA_3 which correspond to the SPIEXT and SPIREVT channels for TPCC_1 in the 6670), since you only have a TPCC_2, you'll have to use the CSL_TPCC2_SPIXEVT and CSL_TPCC2_SPIREVT defines instead.

    Also, if you have any other specific questions on the example, you should reply directly to that thread to ask the question, as I'm not sure if Steven (who wrote the example and I'm sure understands it much better than me) is subscribed to this thread, where I'm sure he is to the other one.

    Erick

  • Hi

      I am working back on SPI EDMA. I got a version from previous postings and is working in LITTLE ENDIAN Mode but does not work in BIG ENDIAN Mode.

    In Big Endian Mode it gets struck in 

    void Setup_SPI (void)

    {

    .......

    while(!(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIFLG & 0x00000200));

    while(!(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIFLG & 0x00000100));    <-------------------------- HERE IT GETS STRUCK.....

    }

    The code is here:

    8004.Edma_spi.zip

    Appreciate your help and guidance. 

    Regards,

    Hari

  • Hari,

    Please replace the following statement and see it works.

    1.     paramSetup.dstAddr      = (Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIDAT0);

    >> Replace with

    #ifdef _BIG_ENDIAN
        paramSetup.dstAddr      = ((Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIDAT0)) + (4-TEST_ACNT);
    #else
        paramSetup.dstAddr      = (Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIDAT0);
    #endif

    2.     paramSetup.srcAddr      = (Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIBUF);

    >> Replace with

    #ifdef _BIG_ENDIAN
        paramSetup.srcAddr      = ((Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIBUF)) + (4 -TEST_ACNT);
    #else
        paramSetup.srcAddr      = (Uint32)&(((CSL_SpiRegsOvly) CSL_SPI_REGS)->SPIBUF);
    #endif

    with regards,

    sam

  • Sam,

     Thanks. With your suggestion, BIG Endian Mode works. 

    Regards,

    Hari