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?