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.

SPI0 on C6748 with BIOSPSP 3.00.01.00

Hello,

I followed the example in Biospsp folder to initialize SPI1 which works fine and then I tried to initialize SPI0 using similar code which you can see below, yet trying to read/write something from the SPI0 returns -1. Any idea why is not working?

Sys/BIOS app.cfg file contains:

var dev2Params = new DEV.Params();
dev2Params.instance.name = "devSpi_0";
dev2Params.initFxn = "&userSpi0Init";
dev2Params.deviceParams = "&g_spi0Params";
dev2Params.devid = 0;
Program.global.devSpi_0 = DEV.create("/spi0", "&Spi_IOMFXNS", dev2Params);


var dev3Params = new DEV.Params();
dev3Params.instance.name = "devSpi_1";
dev3Params.initFxn = "&userSpi1Init";
dev3Params.deviceParams = "&g_spi1Params";
dev3Params.devid = 1;
Program.global.devSpi_1 = DEV.create("/spi1", "&Spi_IOMFXNS", dev3Params);

Main.c code:

GIO_Handle m_spiHandle=NULL;

void userSpi0Init()
{
    g_spi0Params = Spi_PARAMS;

    g_spi0Params.hwiNumber = 9;
    g_spi0Params.spiHWCfgData.intrLevel = FALSE;
    g_spi0Params.opMode = Spi_OpMode_DMAINTERRUPT;

    g_spi0Params.outputClkFreq = 10000000;
    g_spi0Params.loopbackEnabled = FALSE;
    g_spi0Params.edmaHandle = NULL;

    g_spi0Params.spiHWCfgData.masterOrSlave = Spi_CommMode_MASTER;
    g_spi0Params.spiHWCfgData.pinOpModes = Spi_PinOpMode_SPISCS_4PIN;

    g_spi0Params.spiHWCfgData.configDatafmt[0].charLength = 8;
    g_spi0Params.spiHWCfgData.configDatafmt[1].charLength = 16;
    g_spi0Params.spiHWCfgData.configDatafmt[0].clkHigh = TRUE ;
    g_spi0Params.spiHWCfgData.configDatafmt[0].lsbFirst = FALSE;
    g_spi0Params.spiHWCfgData.configDatafmt[0].oddParity = FALSE;
    g_spi0Params.spiHWCfgData.configDatafmt[0].parityEnable = FALSE ;
    g_spi0Params.spiHWCfgData.configDatafmt[0].phaseIn = FALSE ;
    g_spi0Params.spiHWCfgData.configDatafmt[0].waitEnable = FALSE;
    //g_spiParams.spiHWCfgData.configDatafmt[0].wdelay = 0;
    g_spi0Params.spiHWCfgData.csDefault = 0xff;


    g_spi0Params.spiHWCfgData.intrLevel = TRUE;

    EDMA3_DRV_Result edmaResult = 0;

    Error_Block eb;
    Spi_ChanParams chanParams;
    GIO_Params ioParams;

    Error_init(&eb);

    /*
    * Initialize channel attributes.
    */
    GIO_Params_init(&ioParams);

    /* initialize the stream attributes */

    chanParams.hEdma = edma3init(0, &edmaResult);
    ioParams.chanParams = &chanParams;
    //g_spi0Params.edmaHandle = chanParams.hEdma; 

    /* create SPI channel for transmission */
        m_spiHandle = GIO_create("/spi0", GIO_INOUT, &ioParams, &eb);

        if (NULL == m_spiHandle)
        {
            return 0;
        }

}

int Transfer(uint8_t cs, uint8_t *pWriteBuffer, uint8_t *pReadBuffer, uint16_t bufferLength)

{
    Spi_DataParam dataparam;
    SizeT size = 0;
    Error_Block eb;

    Error_init(&eb);

    /* clear the spi params data structure */
    memset(&dataparam, 0x00, sizeof(Spi_DataParam));

    dataparam.chipSelect = 1 << cs;
    dataparam.bufLen = bufferLength;
    dataparam.inBuffer = pReadBuffer;
    dataparam.outBuffer = pWriteBuffer;
    dataparam.flags = Spi_CSHOLD;
    dataparam.dataFormat = Spi_DataFormat_0;

    size = dataparam.bufLen;

    /* write command to FLASH */

    int32_t error = GIO_submit(m_spiHandle, IOM_WRITE, &dataparam, &size, NULL);

    if ((error != 0) && (size != 0))
    {
        System_printf("SPI0 Write: Data Write Failed: %d\n", error);
        return 0;
    }
    return size;
}

Thank you in advance,

David.