STM32F302, SPI und ILI9341

Gast #4727590
Lesenswert?

Hi,

hab folgendes Problem mit einem STM32F302, der Standardlibrary und einem 
Display mit ILI9341 Controller.

Beim Start stell ich den Multiplikator auf 9, bei einem Quarz mit 8MHz 
-> 72Mhz.

Die SPI Schnittstelle stelle ich mit folgenden Werten ein.
1
    display_spi.SPI_FirstBit = SPI_FirstBit_MSB;
2
    display_spi.SPI_CPHA = SPI_CPHA_1Edge;
3
    display_spi.SPI_CPOL = SPI_CPOL_Low;
4
    display_spi.SPI_CRCPolynomial = 7;
5
    display_spi.SPI_Mode = SPI_Mode_Master;
6
    display_spi.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
7
    display_spi.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
8
    display_spi.SPI_NSS = SPI_NSS_Soft;

Soweit so gut, das ganze läuft also mit 36MHz SPI Takt. Jetzt hab ich im 
Laufe der Validation meiner Software gesehen, dass im Datenblatt auf 
Seite 238 fiolgendes steht.
(http://www.displayfuture.com/Display/datasheet/controller/ILI9341.pdf)

Serial clock cycle (Write) 100 - ns

Also ist laut Datenblatt die maximale Frequenz auf 10MHz festgesetzt.

Ich habe also den SPI Vorteiler auf 8 gesetzt -> 9MHz. Und jetzt kommt 
ein Phänomen mit dem ich nicht gerechnet hätte. Erstens geht es nicht 
und zweitens scheint der Displaycontroller plötzlich Daten auf der SDO 
Leitung rauszugeben (mit Oszi gerpüft). Hatte heute keine Zeit mehr 
diese auszuwerten.
Gut dachte ich mir, versuchste mal die Controller-Frequenz herunter zu 
setzen. Hab den Multi auf 3 gesetzt (24MHz) und den SPI Vorteiler zurück 
auf 2 und plötzlich geht es.

Jetzt ist es zwar schön das es geht, aber ich verstehe nicht warum. 
Könnte mir jemend dabei helfen dieses Phänomen zu verstehen bzw. einen 
Hinweis geben wo ich eine Erklärung dazu finden kann? Wäre über jede 
Hilfe dankbar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren