cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F446RE, SPI TX and Digilent ADP3450

Atticus
Associate

There's a ghost in the machine!  Look at waveforms; CS randomly goes high during HAL_TransmitReceive.

 

uint8_t EMIT_REG_I ( uint8_t R_I ) { uint8_t Ret_D; CS_0; DC_0; // SPI.TX Ret_D = SPIx_Write ( R_I ); CS_1; return Ret_D; } uint8_t EMIT_REG_V ( uint8_t R_V ) { uint8_t Ret_D; CS_0; DC_1; Ret_D = SPIx_Write ( R_V ); CS_1; return Ret_D; } uint8_t EMIT_REG_X ( uint8_t R_I, uint8_t R_V ) { EMIT_REG_I ( R_I ); EMIT_REG_V ( R_V ); return 0; } // TX Register Index and Register Index-'s Value EMIT_REG_X ( 0xEB, 0x20 );
View more

 

 

OS: Linux Ubuntu, Noble Numbat

WaveForms (3.23.4) and Adept installed from .deb package

 

Using Digilent ADP3450 to Measure SPI Protocol Logic Levels on an STM32F446RE.

SPI Baudrate is 4 MHz.

 

Digital GND on the ADP3450 is connected to GND on the STM32F446RE

DIO_0 is connected to SPI.CS on the STM32

DIO_1 is connected to SPI.SCK on the STM32

DIO_2 is conntected to SPI.MOSI on the STM32

DIO_3 is connected to SPI.MISO on the STM32

 

 

Using STM32 API HAL_SPI_TransmitReceive to TX Register Index and Register Value:

On Emit_X( 0xEB, 0x20 ) the logic waveform shows the following:

0xEB split apart, CS mysteriously goes high twice during TX

0x20 split apart, CS mysteriously goes high once during TX

 

What is the recommended fix?

1 REPLY 1
Atticus
Associate

Solved.

Spurious spikes on CS and DNC lines were caused by CrossTalk; forward and backward!