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.

Problem with receiving SSI events as a slave

Hi all,

We've got a peripheral which acts as SSI master, and when we perform an action, it sends us a data stream. Using a scope, we verify that the data is being sent to our board - but the processor never receives it. The peripheral in question only has two outputs, the SSI clock and SSI MOSI data line. There is no MISO line, and no FSS line. We've tried simulating an FSS line manually, but we still don't get any data. 

Here's our setup:

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

    ROM_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_0  | GPIO_PIN_3);

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);

    ROM_SSIClockSourceSet(SSI2_BASE, SSI_CLOCK_PIOSC);

    ROM_GPIOPinConfigure(GPIO_PD3_SSI2CLK);
    ROM_GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);

    ROM_GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_3 | GPIO_PIN_0);

    ROM_SSIConfigSetExpClk(SSI2_BASE, 16000000, SSI_FRF_MOTO_MODE_0, SSI_MODE_SLAVE, 666, 5);

As you can see from the above example, the peripheral's data clock is very slow - only 666 Hz (not MHz or kHz), so we had to use the PIOSC as our clock source to the module to get a slow enough divisor. Other than this, the only function called in the code is 

count = ROM_SSIDataGetNonBlocking(SSI2_BASE, (uint32_t*)&readings);

And 'count' always comes back as 0. This doesn't seem too complicated - what are we missing?