20ns Pulses on MISO Line when Slave is not Programmed to Transmit
Hi,
I am using two STM23F303 Discovery Borads.
My application is as follows:
The two boards communicate via SPI.
Every two seconds the master boards send a uint8 message to the slave.
Upon receiving the message, the slave board shall light up some LEDs depending on the sent message.
This is a snippet of the code flashed to the slave board:
while (FOREVER) { // When you receive a message from if (HAL_SPI_Receive(&hspi1, &u8SpiMsg, U16_NUM_BYTES, HAL_MAX_DELAY) == HAL_OK) { // Set/Reset corresponding LED pins via their control bits in BSRR register GPIOE->BSRR = ...........; } }This is the configuration of the SPI:
ˆ Mode - Full-Duplex Master/Slave
ˆ Hardware NSS Signal - Hardware NSS Input Signal
ˆ Frame Format - Motorola
ˆ Data Size - 8 bit
ˆ First Bit - MSB First
ˆ Prescaler (for Baud Rate) - 8
ˆ Clock Polarity - low
ˆ Clock Phase - 1 Edge
ˆ CRC Calculation - disable
ˆ NSSP Mode - Disable
The application works, but when I hooked up a logic analyser (saleae logic to inspect the SPI communication, I saw that the MISO line is not always idle.
Some pulses of 20ns are observed on the MISO line whenever the slave sends a message, as shown in the following screenshots:
I don't understand why the MISO isn't idle when the slave is not sending anything? What is causing the 20ns pulses ?
