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
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.
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.