PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche USART to SPI Library mit SD-Card Unterstützung



radbruch
21.02.2016, 18:58
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 (http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf) und in der App-Note 317 (http://www.atmel.com/Images/doc2577.pdf) 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 (http://iot.fkainka.de/der-conrad-iot-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

radbruch
22.02.2016, 16:40
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

radbruch
23.02.2016, 16:49
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:

https://www.roboternetz.de/community/attachment.php?attachmentid=31341&d=1456242168

Gruß

Micha