Hi,
I have a TMS570LS20216 USB stick and running the SPI slave demo code (example_mibspi_halcogen_ccs_c_project.zip) obtained from the TMS570 wiki (http://processors.wiki.ti.com/index.php/Category:TMS570) in the 'Training & Videos' section. This zip contains an SPI slave project that I am running with no changes to the code.
I have the:
MibSPI1SOMI,
MibSPI1SIMO,
MibSPI1CLK,
MibSPI1CSO
pins connected to an SPI device that is acting as master. I can successfully transfer data from master to slave and vice versa. However, when observing the chip select signal on an oscilloscope the chip select signal appears to behave in a strange way.
1. When the TMS570 (slave) is not connected to the master the chip select of the master is observed to vary between 0 and 3.3 V. This is as expected.
2. When the TMS570 (slave) is connected to the master, but no slave software running, the chip select is observed to vary between 0 and 3.3 V. This is as expected.
3. When the TMS570 (slave) is connected to the master and the slave software running, the chip select is observed to vary between 0 and 200 mV. This is not as expected.
From the above observations, I conclude the chip select is being influenced by the slave software running on the TMS570. I have read the TRM and felt that reversing the pull-up pull-down selection during SPI initialisation may have an effect:
/** - SPI1 Port pullup / pulldown selection */
spiREG1->PCPSL = 0 /* SCS[0] */ // SKCN - was 1 changed to 0
| (0 << 1) /* SCS[1] */ // SKCN - was 1 changed to 0
| (0 << 2) /* SCS[2] */ // SKCN - was 1 changed to 0
| (0 << 3) /* SCS[3] */
| (1 << 8) /* ENA */
| (1 << 9) /* CLK */
| (1 << 10) /* SIMO */
| (0 << 11); /* SOMI */
but it does not.
Can you help me diagnose what configuration of the SPI slave interface is influencing the chip select line?