Problems with SPI status flag ''Rx buffer not empty'' at SPI Baudrateprescaler 2
- 7 replies
- 3438 views
I have a Nucleo-F446RE Eval Board with a STM32F446 RET6U. I use the SPI2 peripheral. When I switched from baudrate prescaler 4 to 2 I get problems with the SPI status flag 'Rx buffer not empty': The last flag does not trigger at certain conditions. When a additional delay is generated in the write/read process of a SPI Byte, the flag triggers. Is it possible, that the 'Tx buffer empty' and 'Rx buffer not empty' flags can cause an access conflict at the flag register?
I added pictures to describe the situation more clearly:
The yellow line corresponds to the SPI CLK. The blue line corresponds to a 'Rx buffer not empty' flag trigger action.
Picture 1:
Baudrate prescaler 4 is used. Bytes are written after 'Tx buffer empty' flag triggers. All three 'Rx buffer not empty' flags trigger.
Picture 2:
Baudrate prescaler 2 is used. Bytes are written after 'Rx buffer not empty' flag triggers and data register has been read out. All three 'Rx buffer not empty' flags trigger.
Picture 3:
Baudrate prescaler 2 is used. Bytes are written after 'Tx buffer empty' flag triggers. Only the first and second 'Rx buffer not empty' flags trigger.
Picture 4:
Baudrate prescaler 2 is used. Bytes are written after 'Tx buffer empty' flag triggers. Now additional delays have been added. All three 'Rx buffer not empty' flags trigger.
