Ich benutze auf einem stm32f103 SPI2 um mit einem EEPROM zu
kommunizieren. Die Chip-Select Leitung steuere ich per "Hand". Mir ist
aufgefallen, dass der Chip entgegen meiner Erwartung disabled wird
(siehe Screenshot).
1 | void SPI_WriteByte (unsigned char Byte) {
|
2 | // enable chip
|
3 | GPIOB->BRR = GPIO_Pin_12;
|
4 | // write data to out-reg
|
5 | SPI2->DR = Byte;
|
6 |
|
7 | //Wait until the transmit buffer is empty
|
8 | while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
|
9 | // disable Chip
|
10 | GPIOB->BSRR = GPIO_Pin_12;
|
11 | }
|
Weiß jemand woran das liegen kann? Ich habe die Vermutung, dass im
Status TXE zu früh zurückgesetzt wird, sobald der STM mit Senden anfängt
und nicht mit Senden fertig ist.