TI,
I'm interfacing with a SPI device using my LM4F120 LaunchPad and the StellarisWare libraries. This SPI device requires a minimum 24-bit frame size (transmit 24 bits during one FSS/CS assertion (low)). Specifically, I'm using the SSIDataPut() function in \StellarisWare\driverlib\ssi.c which accepts an unsigned long parameter called ulData. The comments in the function say the following about this parameter:
//! \param ulData is the data to be transmitted over the SSI interface.
//!
//! \note The upper 32 - N bits of \e ulData are discarded by the hardware,
//! where N is the data width as configured by SSIConfigSetExpClk(). For
//! example, if the interface is configured for 8-bit data width, the upper 24
//! bits of \e ulData are discarded.
This function works great when ulData is between 4 and 16, inclusively, but I cannot create a 24-bit data frame size using the built-in SSI peripheral since SSIConfigSetExpClk() says the following about its unsigned long parameter, ulDataWidth:
//! \param ulDataWidth specifies number of bits transferred per frame.
//! The \e ulDataWidth parameter defines the width of the data transfers and
//! can be a value between 4 and 16, inclusive.
Therefore, it looks like I am out of luck using the built-in SSI peripheral to interface with my device. Is there a way to configure the SSI peripheral to transmit more than 16 bits per SPI transmission or will I have to use a Soft-SPI and bit-bang it?
Thanks a lot for your time!
Sean