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.

MSP432E401Y: msp432e401 How to access Chip Select pin if using DriverLib

Part Number: MSP432E401Y

Here is how I plan to initialize 2 SPI buses on SSI0 and SSI2

First: is this the right way to do this!

- I plan to open 2 SPI ports on init and keep them open through the lifetime of the board. Do I need to check if the connection is open after a while?

- I plan to use CA_SPI_WRITE to read and write using one of those 2 SPI ports 

- Because I used syscfg GUI to set up SPI I don't have access to the CS pin of either SPI port DIRECTLY 

- Is there a way of toggling those CS pins from another function? rephrase (how can I access those CS pins without affecting the way I wrote (spiBus_Init)?

void spiBus_Init()
{

    /* Initialize SPI handle as default master */
    SPI_init();
    SPI_Params_init(&masterSpiParamsCa);
    SPI_Params_init(&masterSpiParamsEis);

    memset(masterRxBufferCa,  0, sizeof(masterRxBufferCa));
    memset(masterTxBufferCa,  0, sizeof(masterTxBufferCa));
    memset(masterRxBufferEis, 0, sizeof(masterRxBufferEis));
    memset(masterTxBufferEis, 0, sizeof(masterTxBufferEis));


    masterSpiParamsCa.frameFormat  = SPI_POL0_PHA1;
    masterSpiParamsCa.bitRate = 10000000;
    masterSpiParamsCa.mode = SPI_MASTER;
    masterSpiParamsCa.dataSize = 8;
    masterSpiParamsCa.transferCallbackFxn = CatransferCompleteFxn;


    masterSpiParamsEis.frameFormat = SPI_POL0_PHA1;
    masterSpiParamsEis.bitRate = 10000000;
    masterSpiParamsEis.mode = SPI_MASTER;
    masterSpiParamsEis.dataSize = 8;
    masterSpiParamsEis.transferCallbackFxn = EistransferCompleteFxn;

    masterSpiCa  = SPI_open(CONFIG_SPI_CA,  &masterSpiParamsCa);
    if (masterSpiCa == NULL) System_abort("Error initializing CA master SPI\n");
    else printf("Master CA SPI initialized\n");


    masterSpiEis = SPI_open(CONFIG_SPI_EIS, &masterSpiParamsEis);
    if (masterSpiEis == NULL) System_abort("Error initializing EIS master SPI\n");
    else printf("Master EIS SPI initialized\n");

    //SPI_control(spiHandle, SPICC26XXDMA_RETURN_PARTIAL_ENABLE, NULL); // ??

}

Here is the block to Readorwrite using the handle from above:

uint8_t CA_SPI_WRITE(uint8_t nBytes, uint8_t* txBufferPointer, uint8_t* rxBufferPointer, uint8_t CS_pin){


    /* Copy message to transmit buffer */
    strncpy((char *)masterTxBufferCa, MASTER_MSG, SPI_MSG_LENGTH);
    uint8_t i;
    for (i = 0; i < MAX_LOOP; i++)
    {
        // Initialize master SPI transaction structure
        masterTxBufferCa[sizeof(MASTER_MSG) - 1] = (i % 10) + '0';
        memset((void *) masterRxBufferCa, 0, SPI_MSG_LENGTH);
        masterTransactionCa.count = SPI_MSG_LENGTH;
        masterTransactionCa.txBuf = (void *)masterTxBufferCa;
        masterTransactionCa.rxBuf = (void *)masterRxBufferCa;

        // Turn on user LED, indicating a SPI transfer is in progress
        GPIO_write(CONFIG_LED_ORANGE_GPIO, CONFIG_GPIO_LED_ON);

        // Initiate SPI transfer
        bool transferOK = SPI_transfer(masterSpiCa, &masterTransactionCa);

        if (transferOK) printf("Master: %s\n", masterRxBufferCa);
        else printf("Unsuccessful master SPI transfer");

        // Sleep a short time to allow the LED to flash
        usleep(500000);

        // Turn off user LED, indicating the SPI transfer is done
        GPIO_write(CONFIG_LED_ORANGE_GPIO, CONFIG_GPIO_LED_OFF);

        // Sleep for a bit before starting the next SPI transfer
        sleep(3);
        // should i close the spi ?

    }

    return 0;
}