Guten Abend zusammen, ich bin derzeit dabei die SPI-Schnittstelle(SSC) des TriCore TC1797 inbetrieb zu nehmen, um damit dann den EEPROM von Atmel AT25256 (256kB) zu implementieren. Leider will das irgendwie noch nicht so richtig. Eigentlich müssten die Konfigurationen des TriCores soweit stimmen, ich hoffe zumindestens, dass die defines, die ich für die Beschreibung des SSC0.Konfigurationsregisters des TCs ausreichen, um sagen zu können, ob das so an sich okay ist. Mein eigentliches Problem ist, dass wenn ich diesen SPI_Write-Befehl ausführe, leider nur 4 Bytes gesendet bekomme, aber laut Datenblatt des ATs (http://pdf1.alldatasheet.com/datasheet-pdf/view/56074/ATMEL/AT25256.html) es 5 sein müssten. Nur die Frage ist, wieso es nur 4 sind? Weitere Infos: - Versorgung läuft über 3,3V - Clock-Frequenz ist ca. 80kHz - WP = dauerhaft high - Das Statusregister konnte ich schon auslesen, folgende Bitreienfolge lag dann vor: B[7:0]=> 0b00000010. Dies müsste heißen, dass der AT bereit ist und auch Schreibfähig ist. Außerdem sagt mir Bit 2 und 3(BP0 und 1=0) dass keine Feldadresses geschützt sind. Was aber wiederum komisch ist, dass mit Bit 7 (WPEN=0) und Bit 1 (WEN = 1) alle Adressfelder schreibbar sind, außer der geschütze Block. Ich hoffe ich habe euch ausreichend Informaionen gegeben, wenn euch nochirgendetwas fehlt, meldet euch und ich werde euch die entsprechnden Infos dazu geben. Danke schon einmal im Voraus. MfG, Joey
>Mein eigentliches Problem ist, dass wenn ich >diesen SPI_Write-Befehl ausführe, leider nur 4 Bytes gesendet bekomme, >aber laut Datenblatt des ATs Das EEPROM sendet dir nur soviele Bytes wie DU DER MASTER abholst. Du holst also nur 4 Bytes ab. Basta. Erweitere auf 5 Bytes und gut.
holger schrieb: > Das EEPROM sendet dir nur soviele Bytes wie DU DER MASTER > abholst Sendet der EEPORM nicht eigentlich nichts wenn ich den beschreibe?! Da wird doch nur SCK und MOSI vom Master aus entsprechend gesetzt?! Neija, wie ich schon geschrieben habe, ist dass Problem, dass beim Beschreiben des EEPORMs (Slave) nur 4 Bytes geschrieben werden, obwohl es eigentlich 5 sein müssten. Realisiert habe ich das mit einer if/else-Bedingung. Als erstes wird der EEPROM write-enabled durch das WREN-Instruktor-Byte in der Write-Funktion ganz am Anfang. Danach gibt es ein paar Wertezuweisungen, wie die Adresse(2 Bytes) und so. Dann wird das 2te Byte gesendet, der Write-Instruktor. Danach sollte eigentlich die Adresse(2 Bytes) in jeweils einem Byte getrennt übermittelt werden, mit dem MSB First sprich, zu erst kommt D15 bis D8, danach kommen D7 bis D0. Und genau da macht das Programm anscheinend nicht, dass was es eigentlich soll. Auf dem Oszilloskop sehe ich nämlich die Reihenfolge WREN-Instruktor, Write-Instruktor, Adresse D[7-0](!?!), Datenbyte. Jedoch laut meinem Programm darf er dies garnicht tun, weil ja in dem "txBuf"-Array zunächst die Adresse D[15:8] und dann die Adresse D[7:0] übergeben wird. Gruß, Joey
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.