Forum: Mikrocontroller und Digitale Elektronik TC1797 SPI (SSC) AT25256 EEPROM


von Joey T. (j0sef)


Angehängte Dateien:

Lesenswert?

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
von holger (Gast)


Lesenswert?

>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.
von Joey T. (j0sef)


Lesenswert?

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
Noch kein Account? Hier anmelden.