• Forumu kullanabilmek için lütfen üye olunuz. 😊

Flash Hafızaya 4 Farklı Byte Kaydetme

Argeolog

Admin
Yetkili
Bilindiği Üzere Nuvoton işlemciler 32 bitliktir ve her bir adres 4 byte'lık veri saklar.
8 bitlik işlemcilerde ise, her bir adrese ayrıca veri yazıp okuyabiliyor idik.

Aşağıdaki kod bloğu ile 1 Adet 4 Byte'lık alanı 4 e bölüp 4 farklı byte yazmaya olanak sağlamış olduk.

Unutmayın, Flash hafızaya veri yazmadan önce yazılacak alanın silinmesi gerekmektedir.
ICP Programing Tool programında gösterilen değer yazdığınız değerin hex karşılığıdır. Yani 255 yazarsanız Hex karşılığı olan 'FF' Değerini göreceksiniz.


// Yazma işleminden önce Flash Hafızayı sil !! SYS_UnlockReg(); FMC_Open(); int EpromAdres=0x7400; unsigned char HexArray[4]; HexArray[0] = 1; HexArray[1] = 2; HexArray[2] = 3; HexArray[3] = 4; uint32_t KaydirilmisBit = (HexArray[3]<<24)|(HexArray[2]<<16)|(HexArray[1]<<8)|HexArray[0]; FMC_Write(EpromAdres,KaydirilmisBit); SYS_LockReg(); FMC_Close();

1673879250513.png
 
Son düzenleme:
  • Beğen
Tepkiler: FMC

FMC

Üye
Genel bir bilgilendirme amacıyla eklemek istiyorum ,tüm flash işlemlerini yapabilmek için
Kod:
SYS_UnlockReg();
FMC_Open();
Bu iki komutu işlemden önce yazmanız ,işlemden sonrada kapatmanız gerekiyor.
 
Son düzenleme:
Banada tam olarak eeprom yazma işlemine ihtiyacım vardı ama bi hayli bilgi kirliliği var ve ben anlayamadım yardımcı olur musunuz
 

FMC

Üye
Banada tam olarak eeprom yazma işlemine ihtiyacım vardı ama bi hayli bilgi kirliliği var ve ben anlayamadım yardımcı olur musunuz

Harici bir eepromdan mı bahsediyorsunuz yoksa Nuvotonun iç yapısında yer alan flashtan mı?
Ne yapmak istediğinizi ve konunun detaylarını paylaşırsanız yardımcı olmaya çalışırız
 
Harici bir eepromdan mı bahsediyorsunuz yoksa Nuvotonun iç yapısında yer alan flashtan mı?
Ne yapmak istediğinizi ve konunun detaylarını paylaşırsanız yardımcı olmaya çalışırız
Nuvotonun iç yapısında yer alan flashtan bahsediyorum MS51FB9AE mikrodenetleyicisi için BSP içerisinde yer alan örnekte 0x380H Adresinden başlayabileceğim söyleniyor ama benim 8 bitlik mikrodenetleyici için bu adresi kaydetmesi için girdiğimde kod satırı Write_DATAFLASH_ARRAY() fonksiyonundan çıkmıyor burada problem oluşuyor yani kod satırlarımın haricinde belirleyeceğim bir bölgeye ihtiyacım var verileri kaydedebileceğim
 

FMC

Üye
BSP deki örneği çalıştırdığındada mı aynı hatayı veriyor?
Birde şöyle bir durum var senin işlemcine uygun mu bilmiyorum ama Data Flash Base Adress var orada bölgeni tanımlayabilirsin. Eğer belirttiğin bölgede problem var ise AAPROM un sonunda bir alan oluşturup oraya yazabilirsin , birde bahsettiğin fonksiyonu bilmiyorum ama o fonksiyonun içerisinde temel FMC komutları var ise onlarla kendin yeniden fonksiyon yazman işini daha garanti hale getirir. Bendeki işlemciler için söylüyorum adreslerde yer alan bilgiler 32 byte lık o yüzden make32 kullanarak elimdeki bilgileri birleştirip öyle yazıyorum sende öyle deneyebilirsin
 
Keil üzerinden Options For Target->Utilities->Use Debug Driver-> Settings-> Chip Setting-> Setting-> Data Flash Enable ayarını yapmayınca verileri kaydetmiyor. Ayarı yapıyorum sonra NuMicro ICP programing üzerinde işlemciyi sıfırlayınca ayar sıfırlanıyor bu ayarı yazılım ile aktif etmenin bir yolu var mı?
 

FMC

Üye
CONFIG AYARLARINDA DATAFLASHA İZİN VERMENİZ GEREKMEKTE YANİ PROGRAMINIZ İÇERİSİNDE CONFIG WORU KONTROL EDİP YENİDEN DÜZENLERSENİZ YARDIMCI OLACAKTIR
 
Üst