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.

TM4C129ENCPDT: SSIEnable(SSI2_BASE) pulls down the MOSI data

Part Number: TM4C129ENCPDT

I am using the Launchpad with the TM4C129ENCPDT. Running it as an SSI-Slave  via the BoosterPack1 (PD2 SSI2FSS from BoosterPack2). When i am in debug mode and executing the SSIEnable(SSI2_BASE); my MOSI signal looks like the chipselect. Before that i can see the data at my oszilloscope.

void
InitSSI(void)
{
    uint32_t ui32SysClock;

    ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
                                       SYSCTL_OSC_MAIN |
                                       SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000);

    //
    // The SSI2 peripheral must be enabled for use.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);

    //
    // For this example SSI2 is used with PortD[5:2].  The actual port and pins
    // used may be different on your part, consult the data sheet for more
    // information.  GPIO port D needs to be enabled so these pins can be used.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

    //
    // Configure the pin muxing for SSI2 functions on port D2, D3, D4, and D5.
    // This step is not necessary if your part does not support pin muxing.
    //
    GPIOPinConfigure(GPIO_PD3_SSI2CLK);
    GPIOPinConfigure(GPIO_PD2_SSI2FSS);
    GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
    GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);

    //
    // Configure the GPIO settings for the SSI pins.  This function also gives
    // control of these pins to the SSI hardware.  Consult the data sheet to
    // see which functions are allocated per pin.
    // The pins are assigned as follows:
    //      PD1 - SSI2Tx
    //      PD0 - SSI2Rx
    //      PD2 - SSI2Fss
    //      PD3 - SSI2CLK
    //
    GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 |
                   GPIO_PIN_3);

    //
    // Configure and enable the SSI port for SPI slave mode.  Use SSI0,
    // system clock supply, idle clock level low and active low clock in
    // freescale SPI mode, slave mode, 1MHz SSI frequency, and 8-bit data.
    // For SPI mode, you can set the polarity of the SSI clock when the SSI
    // unit is idle.  You can also configure what clock edge you want to
    // capture data on.  Please reference the datasheet for more information on
    // the different SPI modes.
    //

    SSIConfigSetExpClk(SSI2_BASE, ui32SysClock, SSI_FRF_MOTO_MODE_3,
                       SSI_MODE_SLAVE, 1000000, 8);


    //
    // Enable the SSI2 module.
    //

    SSIEnable(SSI2_BASE);
}

So my Question is: am i missing something? Am i able to use SYSCTL_USE_PLL  for slave mode?

Thanks in advance!

grretings

Lukas Thumfart

  • This was an wiring fault.

    Reading the Tiva™ C SeriesTM4C129xMicrocontrollersSiliconRevisions1, 2, and 3:
    SSI#08 SSI Slav ein Bi and Quad Mode swaps XDAT0 and XDAT1XXX

    so MISO and MOSI ar missleading in the BoosterPack description, since SSI_MODE_SLAVE isnt swapping Tx and Rx.
  • This was an wiring fault.

    Reading the Tiva™ C SeriesTM4C129xMicrocontrollersSiliconRevisions1, 2, and 3:
    SSI#08 SSI Slav ein Bi and Quad Mode swaps XDAT0 and XDAT1XXX

    so MISO and MOSI ar missleading in the BoosterPack description, since SSI_MODE_SLAVE isnt swapping Tx and Rx.