Sınırsız okuma / yazma işlemi kapasitesine sahip kalıcı bir bellek IC'sine ihtiyacınız var


12

Mikrodenetleyici tabanlı bir projede birikmiş sayımı takip etmek için kullanılacak bir bellek çözümüne ihtiyacım var.

Birikmiş sayımla, mikro denetleyicinin bir olayın gerçekleşmesini saymak için bu bellek konumunu kullandığını söylemek istiyorum. Elektrik kesintileri sırasında sayımın korunması gerekir, bu nedenle VOLATILE olmayan belleğe ihtiyaç vardır.

Ayrıca sayım artışı olayının sık görülmesi dolayısıyla belleğe çok sayıda yazım olacağından EEPROM'u kullanmaktan çekiniyorum.

Tercih edilen iletişim arayüzü I2C olacaktır, ancak diğer alternatifler de açıktır.

Başımın üstünde, bir SRAM düşük güçlü uçucu bellek IC'yi, güç çıkışlarında bir bozuk para hücresi gibi bir yedek pil ile çalıştırılma seçeneği ile hayal ediyorum.


15
F-RAM istiyorsun.
Hearth

3
... ve soru nedir?
Lor

2
I2C yazma işleminin ortasında güç kesilirse ne yapacaksınız? Sayıyı bozmayacağınızdan nasıl emin olabilirsiniz? Bu sorun, yaklaşan güç kaybını tespit edemediğiniz sürece düşündüğünüzden daha zordur ve bu durumda RAM-baz sayacınızı tipik bir EEPROM'a kopyalayabilirsiniz.
Elliot Alderson

5
Ne sıklıkta görülür? Tek bir değişken için küçük boyutlu bir EEPROM bile oldukça aptalca yüksek dayanıklılığa sahip olacaktır. Ayrıca, son yazmanızın başarısız olması durumunda, son x sayılarının yedeğini alırsınız.
hekete

100 milyon devir vaat eden eski tip FLASH olmayan EE anılarını hatırlıyorum.
analogsystemsrf

Yanıtlar:


21

Kullanılabilir boyut sırasına göre üç kalıcı bellek türü ihtiyaçlarınızı karşılar:

  • Düzleştirilmiş EEPROM / FLASH kullanın.
  • Pil yedeklemesi SRAM.
  • FRAM.

Maliyet açısından, FRAM en iyisidir. Yazmayı tamamlamak için yedek kapasitörler de dahil olmak üzere ihtiyacınız olan tek şey çipin içinde. Ancak mevcut boyutlar düşüktür.
Pil yedeklemesi SRAM büyük ve masraflıdır.
Aşınma seviyesi EEPROM, aşınma seviyesini ayarlamak için ürün yazılımı gerektirir.


1
Teşekkürler. @ Kalp tarafından önerilen olarak çerçeveyi teslim ve en iyi benim ihtiyaçlarına uygun olduğunu düşünüyorum. Umarım bir I2C varyantı bulabilirim. Ayrıca akümülatör değişkeninin sadece 32 bit uzunluğunda olması gerekir. Yani boyut gerçekten büyük bir sorun değil.
Cerezo

3
@GH_eng I²C FRAM cips . Bellek ilerledikçe oldukça pahalı (nispeten yeni bir teknoloji olmak), ancak ihtiyacınız olan alternatifler için muhtemelen daha pahalıya mal olacaktır.
Hearth

3
Ayrıca MRAM
DKNguyen

1
@GH_eng TI MSP430FR * sanırım FRAM inşa edilmiştir. MCU'nuz için zaten kısıtlanmış olmanıza rağmen.
detly

21

İşte hala seri üretimde olan bir üründe yaptığım şey.

  • Tüm parametreleri ve sayaçları RAM'de saklayın
  • Bir kesme hattını bir güç kaynağı voltaj eşik dedektörüne bağlayın
  • Kesme tetiklendiğinde, güç tüketen her şeyi (çoğu çevre birimi, LED vb.) Kapatın ve tüm RAM'leri yanıp sönmeye yedekleyin.

Düşük voltaj tetiği ile güç yönetimi IC'nin her şeyi başlattığı ve kapattığı zaman (düzenli bir şekilde) arasında yaklaşık 10-20 ms zaman olduğu ortaya çıkıyor. Bunun işe yarayıp yaramayacağı güç kaynağınızdaki enerji deposuna bağlıdır, ancak küçük bir güç kaynağı bile bunu yavaşlatabilir, böylece küçük bir veri kümesini güvenilir bir şekilde yazabilirsiniz.


1
@Hilmer Oldukça akıllı! Bunu bildiğim iyi oldu. Muhtemelen EEPROM ve MCU girişlerinden önce yerleştirilen bir rezervuar CAP, zaman gecikmesini daha da artıracaktır. Sadece olumsuz muhtemelen PCB üzerinde daha fazla bileşen.
Cerezo

O zaman açıkça PCB gayrimenkul de dahil olmak üzere en ucuz çözüm oldu. Tabii ki özelliklerinize bağlı: yedek bir GPIO hattımız vardı, bu yüzden ücretsizdi. Gerisi sadece birkaç jöle fasulye (küçük ucuz SMD parçaları)
Hilmar

Muhtemelen 10-20 ms uzatabilirsiniz, eğer bir elcap'ı sadece yardımcı olacak kadar büyük ve zahmetli yan etkilere sahip olmak için çok büyük değil.
Mast

@Mast: Bu muhtemelen çok pahalı olurdu ve alternatif bir çözümle daha iyi olabilirsiniz
Hilmar

6

Toggle MRAM'ın ( manyetorezistif RAM) etkili bir şekilde sonsuz yazma dayanıklılığına sahip olduğu iddia edilir (yazmanın yıpranmasına neden olabilecek herhangi bir mekanizmanın farkında değildirler). Bununla birlikte, I2C konuşan herhangi bir çipin farkında değilim, bu yüzden SPI'ye razı olmanız gerekir. İşte böyle bir bölüm: https://www.digikey.com/product-detail/en/everspin-technologies-inc/MR25H256ACDF/819-1064-ND/8286370


5

RTC saat yongasını veya modülünü kullanabilirsiniz. Bunlar pil yedekleme, kullanıcı verileri için ekstra SRAM ve I2C arayüzü ile birlikte gelir.

Veya başlamak için pil destekli SRAM'li bir MCU kullanın, bu nedenle harici bileşenlere gerek yoktur.


Örneğin DS1307, DS1338.
filo

1
Ne yazık ki, kartta kullanılan RTCC bir DS3231M'dir. DS1307 RTCC ile aynı pim yapılandırması ancak dahili yedek veri kaydı yok. Entegre osilatörü nedeniyle bunu seçin. Tam bir devre incelemesi hissediyorum :(!
Cerezo

5

Cypress, kalıcı SRAM dediklerini yapar . Güç kesildiğinde otomatik olarak yedeklenen standart SRAM'dir. Elektrik kesintisinde sadece kalıcı belleğe yazdığı için, potansiyel olarak çok daha fazla dayanıklılığa sahiptir. Seri ve paralel versiyonlarda gelir. En küçüğü 64Kb olduğundan biraz fazla olabilir.

Normal çalışma altında nvSRAM, standart sinyaller ve zamanlama kullanarak geleneksel bir asenkron SRAM gibi davranır. nvSRAM, paralel rasgele erişim okumaları yapar ve 20 ns kadar hızlı yazar.

Elektrik kesintisinde, nvSRAM, SRAM verilerinin bir kopyasını otomatik olarak kalıcı belleğe kaydeder; burada veriler 20 yıldan uzun bir süredir korunur. SRAM ve kalıcı bellek arasındaki aktarım tamamen paraleldir ve işlemin kullanıcı müdahalesi olmadan 8 ms veya daha kısa sürede tamamlanmasını sağlar.

Açılışta nvSRAM, verileri SRAM'a geri döndürür ve sistem çalışması kaldığı yerden devam eder. nvSRAM ayrıca kullanıcı kontrollü yazılım STORE ve RECALL başlatma komutlarının yanı sıra çoğu sürümde kullanıcı kontrollü bir donanım STORE komutu sağlar.

NVSRAM Blok Şeması



bu şeyler harika!
Tomachi

4

Tek bir 4 bayt değişken için EEPROM tamamen iyi olur.

Diyelim ki saniyede bir kez yazıyorsunuz ve tipik bir 32Kb EEPROM'a sahipsiniz ve 100.000 yazma döngüsünün muhafazakar bir dayanıklılığı ile devam ediyoruz.

Net bir işlem yapmadan önce 4 baytınızı 8000 kez yazabilirsiniz. Bu yüzden, muhafazakar bir tahmin kullanarak bile yazabileceğiniz 800 milyon kez olmalıdır.

Şimdi yılda sadece 31,5 milyon saniye var, bu yüzden bir saniyede EEPROM dayanıklılığının düşük tahminine ulaşmak 25 yıl alacaktı.


1
Tabii ki, EEPROM'a yazmak oldukça yavaştır (milisaniye), bu yüzden OP'nin "sık yazımları" daha hızlı bir çözüme ihtiyaç duyabilir ... saniyede bir kez varsaydınız, ancak OP bizi bu noktada karanlıkta bıraktı. Ve EEPROM'u "temizlemek" gerçekten çok, çok uzun zaman (saniye) alacaktır. Silmek yerine eski değerlerin üzerine yazabileceğinizi varsayalım, ancak sayım değerleri kesinlikle sıralı değilse, hangi değerin yazılan son değer olduğunu anlamak zor olacaktır.
Elliot Alderson

@ElliotAlderson Muhtemelen en yüksek değerin ne olduğunu, son değer olacağını varsayabilirsiniz. Bu durumda saniyede bir kez 'sık' sayılırsa veya sayılmazsa hiç bir fikrim yok. Sadece 1 saniyeden fazla yazma frekansları için, EEPROM'un hala tamamen geçerli olduğunu belirtmek gerekir.
hekete

0

Burada birçok seçenek var, ancak asıl sorun verilerin bozulmasını engelliyor. Yazma sırasındaki güç kaybı verileri bozabilir. I2C bundan kaçınmak için iyi bir seçenektir, çünkü örneğin SPI ile 32 bitlik bir kelimenin 4 baytını güncelleyerek yarıya kadar tamamlamak için (belleğin bakış açısından) bir yazı göründüğünü görebilirsiniz. I2C biraz daha sağlam, ama sadece biraz.

Benim tavsiyem, değerin 4 kopyasını saklamak olacaktır. Bu şekilde yazma kesintiye uğrasa bile, ikisi her zaman eşleşecektir.

FRAM veya benzeri muhtemelen en iyi seçenektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.