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.