Forum: Mikrocontroller und Digitale Elektronik Externes SRam - Verhalten normal?


von Tilo (Gast)


Lesenswert?

Hallo

Ich verwende einen ADUC7026. Diese MCU hat einen ARM7 Core und ein 
externes 16Bit Speicherinterface. Mittels 4 Selectleitungen können 4 
Adressräume mit 64Kx16 angesprochen werden.

Ich habe ein externes SRam mit 64Kx16 angeschlossen. Dabei ist mir etwas 
aufgefallen. Der Adressraum beginnt bei 0x30000000. Wird in Adresse 
0x30000000 oder 0x300000001 ein Char in C geschrieben, wird dieses auf 
beide Adressen geschrieben. Wird in Adress 0x30000000 ein Short in C 
geschrieben, werden beide Adressen korrekt verarbeitet.

Von der Hardwareseite her leuchtet mir dies ein Stück weit ein. Der 
Zugriff auf das SRam kann immer nur mit 16Bit erfolgen. Sollen nur 8Bit 
gespeichert werden, muss zu erst ein Lesezugriff durchgeführt werden, 
damit die 8Bit die im Speicher bleiben sollen, gelesen werden können und 
im Anschluss in einem einem 2. Schritt dann zusammen mit den neuen 8Bit 
geschrieben werden können.
Muss ich als C Programmierer selbst darauf achten, dass nur 16Bit 
Zugriffe erfolgen, oder übernimmt dies normalerweise der 
Speicherkontroller?
Warum wird das geschriebene Byte gespiegelt?

Aufgefallen ist mir das ganze, als ich einen Bytestream speichern 
wollte. Sah etwas eigenartig aus.

Vielen Dank für eure Tips,

Tilo

von (prx) A. K. (prx)


Lesenswert?

Es ist nicht Sache des Programmes, sondern der korrekten Beschaltung der 
Hardware. Üblicherweise besitzen Speicher und Speicherinterface 
Leitungen, die das jeweils zu schreibende Byte auswählen, so dass bei 
Byteoperationen nur eine dieser beiden Leitungen aktiv ist, bei 
Halbwortoperationen jedoch beide.

Beim ADUC dürften /BHE und /BLE dafür zuständig sein. Den Typ des SRAMs 
hast du nicht genannt, beim erstbesten 64Kx16 gibt es /UB und /LB.

Zugegeben, das Datasheet von Analog Devices ist nicht sehr gesprächig. 
Derart knappe Beschreibungen kenne ich anderswo (STM,NXP) nur als 
Kurzform eines ausführlicheren Reference Manuals - was ich bei AD aber 
noch nicht gefunden habe.

von Tilo (Gast)


Lesenswert?

Ok Danke. Schlatungfehler ;)

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.