Suche USART to SPI Library mit SD-Card Unterstützung
Hallo
Da ich inzwischen (wohl altersbedingt) zum Arduino-Schlaffi mutiert bin, suche ich eine SD-Card-Library mit USART to SPI Unterstützung für einen Nano 3.0. Wie im Datenblatt des mega328 und in der App-Note 317 beschrieben kann man auch den USART als Hardware-SPI nutzen. Blöderweise finde ich aber keine passende Library die eine SD-Card (und möglichst auch ein TFT dazu) unterstützt.
Anwenden möchte ich das auf dem Pretzelboard (bzw. C-Control IoT WIFI Board), einem Nano 3.0 mit angebautem Esp8266, auch bekannt als NanoESP aus dem 2016er Adventskalender. Das eigentlich recht schicke Board hat aus meiner Sicht einen gravierenden Designmangel: Der Software-Usart, der zur Kommunikation zwischen Nano und ESP verwendet wird, belegt die Pins des Hardware-SPI des Nano. Weil die Hardware des NanoESP das so vorgibt, und ich das auf dem SMD-Board vorerst auch nicht ändern kann, ist mir ein gleichzeitiger Betrieb der Wifi-Funktion zusammen mit SPI-Erweiterungen nicht möglich. Die Verwendung von Software-SPI oder das Umschalten zwischen USART- und SPI-Funktion scheint mir aus Geschwindigkeitsgründen nicht sinnvoll, das habe ich deshalb auch noch nicht ausprobiert.
Weil ich aber auf die Ausgaben des USART während des Programmlaufs verzichten kann, würde sich dessen USART to SPI Fähigkeit geradezu aufdrängen um meine SPI-Erweiteung daran zu betreiben. Aber leider fehlt es eben im Moment noch an einer passenden Library dafür. Und weil ich das Rad nicht neu erfinden möchte suche ich auf diesem Wege nach einem guten Tipp. O:)
Gruß
Micha
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Es war doch nicht so kompliziert wie ich vermutete. In der SD-Library des Arduino sind glücklicherweise drei SPI-Betriebsarten vorgesehen. Neben Software- und Hardware-SPI mit der SPI-Library ist noch die direkte SPI-Ansteuerung ohne Library vorgesehen. Diese habe ich durch die Ansteuerung des USART ersetzt. Und siehe da, es funzt. Die Infos und das Setup des USART habe ich von hier: http://www.gammon.com.au/forum/?id=10892&reply=3#reply3
Meine geänderte SD-Library habe ich angehängt. Das Pinout:
NANO 3.0 -- SD-Card
D0 (MOSI) - MOSI (SD-DI) : SPI Master out Slave in
D1 (MISO) - MISO (SD-DO) : SPI Master in Slave out
D2 -------- CS (SD-CS) : Chipselect for TF Card,
D4 (SCK) -- CLK (SD-Clock): SPI Clock
Wobei das Chipselect frei wählbar ist und beim Start der Library als Parameter übergeben wird.
Der USB-Chip auf dem Nano dürfte wohl keinen Schaden nehmen, weil zwischen Mega328 und USB-Chip in den Rx/Tx-Leitungen je ein 1K-Widerstand eingebaut ist.
Vielleicht kann das ja mal jemand gebrauchen.
Gruß
Micha
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo
Das klappt ja wunderbar:
https://www.youtube.com/watch?v=FXZbwSxtvBA
Das TFT und die SD-Karte werden nun über den USART angesteuert. Die geänderte Adafruit-Library ist im Anhang. Das Pinout:
Bild hier
Gruß
Micha