I am designing a device that will interface with the Piccolo's SPI port. Through the course of ensuring proper & sufficient setup and hold times, I have noticed what appear to be several key issues in the SPI Slave Mode External Timing requirements (as indicated on page 106 of the TMS320F2806x Piccolo™ Microcontrollers Datasheet, SPRS698E). I wonder if anyone else has run into these potential issues?
1. Pulse duration, SPICLK high and SPICLK low (items no 13 and 14 of table 6-37): The maximum time for SPICLK high is 0.5 x the SPICLK cycle time (0.5tc(SPC)S per the table). The maximum time for SPICLK low is also 0.5tc(SPC)S, per the table. On one hand, the table would have you believe that if either of these pulse durations is slightly less than half the SCLK period, then timing is OK. But the moment you reduce the high pulse duration, you increase the low pulse duration. This implies both pulse durations must be exactly one half the period, with no margin! Can anyone clarify this timing requirement?
2. Related to #1, above: Why must the slave have such a stringent duty cycle requirement on SCLK when the Master mode can generate asymmetrical SCLKs? Insight as to what's going on inside the SIP peripheral would be helpful (though probably TI proprietary).
3. Why are several of the parameters based on the SPICLK cycle time ( tc(SPC)S ) at all? The clock is being generated externally and delivered to the slave. How is it that the SPI port would even care as long as the minimum SCLK cycle time is satisfied? This does not seem like an appropriate way to spec the timing as the following example might illustrate: Suppose we are interested in determining when/how long SPISOMI data is valid. If SCLK is externally generated at 8MHz (tc(SPC)S = 125 ns cycle time), then using the numerically indexed parameters of table 6-37, the SPISOMI valid time is calculated as:
t16 + (0.5)tc(SPC)S - t15
= 0.75tc(SPC)S + (0.5)tc(SPC)S - 21 ns
= 93.75 ns + 62.5 ns -21 ns
= 135.25 ns. But this is longer than the SCLK period!
Bottom line: the datasheet is seemingly unclear. Perhaps it is my interpretation of the datasheet, but I could sure use some guidance on the proper interpretation. I'm not sure how anyone can design an interfacing design with the spec as it is written. But I'm sure people have done it.
Is there any better or more explanatory references than the Datasheet and the Tech Ref Manual? Are there simply typos in the existing Datasheet?