Problem mit SPI Pin

Hallo,

ich habe ein Problem mit einem Projekt. Ich versuche einen CAN Adapter via SPI anzusprechen, habe aber das Problem, dass der SPI ready Pin manchmal Low bleibt.

Für mein (beschränktes) Verständnis, setze ich den SPI_PIN (dass ich den Bus benutze) auf high, sende Daten und danach den PIN wieder auf LOW und warte ab. Lese nur vom Bus, wenn der SPI_Ready Pin auf Low ist.

In meinem Fall lese ich im Sketch also mit digitalread vom SPI_PIN_READY - wenn dieser auf low ist. Bevor ich auf den Bus sende, setze ich via digitalwrite den SPI_PIN_CS auf high.

Jetzt habe ich das Problem, dass der SPI_PIN_READY oft nicht mehr low wird, wenn er einmal high war. Liegt das am "Nachbargerät" oder habe ich irgendetwas falsch verstanden.

Hier noch mein gesamter Sketch zur leichteren Verständnis:

Der Fehler wird hauptsächlich in evReceive() sichtbar, da ich dort warte bis ich Daten zurück kriege.

Abhilfe schafft dann ein reset des ESP32 - dann ist wieder alles gut (bis sicher Bus wieder aufghängt)
Hardware ist ein ESP32 (fix verlötet auf einem freematics One+ (Freematics – Freematics ONE+ Model A)

Danke euch

Hallo,

üblich ist den Slave Select Pin im Ruhezustand auf High zu legen. Wenn man vom Device etwas möchte dann legt man ihn auf LOW und wenn man fertig ist zurück auf High.