Cần một IC bộ nhớ không bay hơi với khả năng hoạt động đọc / ghi gần như không giới hạn


12

Tôi cần một giải pháp bộ nhớ sẽ được sử dụng để theo dõi số lượng tích lũy trong dự án dựa trên bộ điều khiển vi mô.

Theo số lượng tích lũy, tôi muốn nói rằng bộ điều khiển vi mô sử dụng vị trí bộ nhớ này để theo dõi sự xuất hiện của một sự kiện. Số lượng cần phải được bảo toàn trong thời gian mất điện, do đó cần có bộ nhớ KHÔNG ĐIỆN TỬ.

Ngoài ra, sự xuất hiện của sự kiện tăng số lượng là thường xuyên do đó sẽ có rất nhiều ghi vào bộ nhớ do đó tôi ngần ngại sử dụng EEPROM.

Giao diện truyền thông ưa thích sẽ là I2C, nhưng các lựa chọn thay thế khác đều được chào đón.

Ngoài đỉnh đầu, tôi hình dung một IC bộ nhớ dễ bay hơi năng lượng thấp SRAM với tùy chọn được cung cấp năng lượng bởi một pin dự phòng giống như một tế bào đồng xu khi mất điện.


15
Bạn muốn F-RAM.
Nghe

3
... Và câu hỏi là gì?
Sữa đông

2
Bạn sẽ làm gì nếu nguồn điện bắt đầu bị hỏng ở giữa hoạt động ghi I2C? Làm thế nào bạn có thể chắc chắn bạn sẽ không làm hỏng số đếm? Vấn đề này khó khăn hơn bạn nghĩ, trừ khi bạn có thể phát hiện mất điện sắp xảy ra, và trong trường hợp đó, bạn chỉ có thể sao chép bộ đếm cơ sở RAM của mình sang EEPROM điển hình.
Elliot Alderson

5
Làm thế nào 'thường xuyên' là thường xuyên? Đối với một biến duy nhất, ngay cả một EEPROM có kích thước nhỏ cũng sẽ có độ bền khá cao. Bạn cũng sẽ có một bản sao lưu của số x cuối cùng trong trường hợp lần viết cuối cùng của bạn không thành công.
hekete

Tôi nhớ lại một số bộ nhớ EE-FLASH kiểu cũ hứa hẹn chu kỳ 100 triệu.
analogsystemsrf

Câu trả lời:


21

Ba loại bộ nhớ không bay hơi phù hợp với nhu cầu của bạn, theo thứ tự kích thước có sẵn:

  • Mặc EEPROM / FLASH san bằng.
  • Pin dự phòng SRAM.
  • TRÁI CÂY.

Về chi phí, FRAM là tốt nhất. Tất cả bạn cần là bên trong chip, bao gồm các tụ điện dự phòng để hoàn thành việc viết. Tuy nhiên kích thước có sẵn là thấp.
Pin dự phòng SRAM là lớn và tốn kém trong vật liệu.
EEPROM cấp độ hao mòn yêu cầu phần sụn để xử lý việc cân bằng độ mòn.


1
Cảm ơn. Tôi đã kiểm tra FRAM theo đề xuất của @Hearth và tôi nghĩ rằng nó phù hợp nhất với nhu cầu của tôi. Chỉ hy vọng tôi có thể tìm thấy một biến thể I2C. Ngoài ra biến tích lũy chỉ cần dài 32 bit. Vì vậy, kích thước không thực sự là một vấn đề lớn.
Cerezo

3
@GH_eng I²C chip FRAM . Khi bộ nhớ hoạt động khá tốn kém (là một công nghệ tương đối mới), nhưng đối với những gì bạn cần, các giải pháp thay thế có thể sẽ tốn kém hơn.
Nghe

3
Ngoài ra còn có MRAM
DKNguyen

1
@GH_eng TI MSP430FR * đã được xây dựng trong FRAM tôi nghĩ. Mặc dù bạn có thể đã bị hạn chế như MCU của bạn.
gièm pha

21

Đây là những gì tôi đã làm trên một sản phẩm vẫn đang được sản xuất hàng loạt.

  • Giữ tất cả các thông số và bộ đếm trong RAM
  • Kết nối một đường dây ngắt với bộ phát hiện ngưỡng điện áp nguồn
  • Khi ngắt kích hoạt, hãy tắt mọi thứ tiêu thụ năng lượng (hầu hết các thiết bị ngoại vi, đèn LED, v.v.) và sao lưu tất cả RAM để flash.

Hóa ra có khoảng 10-20ms thời gian giữa kích hoạt điện áp thấp và thời điểm IC quản lý năng lượng khởi động và tắt tất cả mọi thứ (một cách có trật tự). Việc này có hoạt động hay không phụ thuộc vào bộ lưu trữ năng lượng trong nguồn điện của bạn, nhưng ngay cả một nguồn cung cấp nhỏ cũng có thể làm chậm điều này đủ để bạn có thể viết một tập dữ liệu nhỏ một cách đáng tin cậy.


1
@Hilmer Điều đó khá thông minh! Tốt để biết. Có lẽ một CAP hồ chứa được đặt trước các đầu vào của EEPROM và MCU sẽ làm tăng thêm độ trễ thời gian. Chỉ có nhược điểm có lẽ là nhiều thành phần hơn trên PCB.
Cerezo

Tại thời điểm đó rõ ràng là giải pháp rẻ nhất bao gồm cả bất động sản PCB. Tất nhiên, nó phụ thuộc vào chi tiết cụ thể của bạn: chúng tôi đã có một phụ tùng GPIO dự phòng, vì vậy nó là miễn phí. Phần còn lại chỉ là một vài hạt thạch (các bộ phận nhỏ của SM rẻ tiền)
Hilmar

Bạn có thể có thể kéo dài 10-20ms nếu bạn thực sự phải bằng cách đặt một elcap vào nguồn cung đủ lớn để giúp đỡ và không quá lớn để có tác dụng phụ rắc rối.
Cột

@Mast: điều đó có thể quá đắt và bạn có thể tốt hơn với một giải pháp thay thế
Hilmar

6

Toggle MRAM (RAM từ tính) được khẳng định là có độ bền ghi vô hạn hiệu quả (họ không nhận thức được bất kỳ cơ chế nào có thể khiến chữ viết bị hao mòn). Tuy nhiên, tôi không biết về bất kỳ con chip nào nói I2C, vì vậy bạn phải giải quyết SPI. Đây là một phần như vậy: https://www.digikey.com/product-detail/en/everspin-technology-inc/MR25H256ACDF/819-1064-ND/8286370


5

Âm thanh như bạn chỉ có thể sử dụng một chip đồng hồ hoặc mô-đun RTC. Chúng có pin dự phòng, SRAM bổ sung cho dữ liệu người dùng và đi kèm với giao diện I2C.

Hoặc chỉ sử dụng MCU với SRAM được hỗ trợ bằng pin để bắt đầu, do đó không cần các thành phần bên ngoài.


Ví dụ DS1307, DS1338.
filo

1
Thật không may, RTCC được sử dụng trên bảng là DS3231M. Cấu hình pin giống như DS1307 RTCC nhưng không có thanh ghi dữ liệu dự phòng nội bộ. Chọn điều này vì bộ dao động tích hợp của nó. Tôi cảm thấy một đánh giá mạch hoàn chỉnh :(!
Cerezo

5

Cypress tạo ra cái mà họ gọi là SRAM không biến đổi . Đó là SRAM tiêu chuẩn tự động sao lưu khi mất điện. Vì nó chỉ ghi vào bộ nhớ không bay hơi khi mất điện, nên nó có khả năng độ bền cao hơn nhiều. Nó có phiên bản nối tiếp và song song. Nó có thể là một chút quá mức, vì cái nhỏ nhất là 64Kb.

Trong hoạt động bình thường, nvSRAM hoạt động như một SRAM không đồng bộ thông thường sử dụng tín hiệu tiêu chuẩn và thời gian. nvSRAM thực hiện truy cập ngẫu nhiên song song đọc và ghi nhanh như 20 ns.

Khi bị mất điện, nvSRAM sẽ tự động lưu một bản sao dữ liệu SRAM vào bộ nhớ không biến đổi, trong đó dữ liệu được bảo vệ trong hơn 20 năm. Việc chuyển đổi giữa SRAM và bộ nhớ không biến đổi là hoàn toàn song song, cho phép hoạt động hoàn thành trong 8 ms hoặc ít hơn mà không cần bất kỳ sự can thiệp nào của người dùng.

Khi bật nguồn, nvSRAM trả lại dữ liệu về SRAM và hoạt động của hệ thống tiếp tục từ nơi nó rời đi. nvSRAM cũng cung cấp các lệnh khởi tạo STORE và RECALL phần mềm do người dùng kiểm soát, cũng như lệnh STORE phần cứng do người dùng kiểm soát trong hầu hết các phiên bản.

Sơ đồ khối NVSRAM



những thứ đó thật tuyệt vời
Tomachi

4

Đối với một biến 4 byte đơn, EEPROM sẽ hoàn toàn ổn.

Giả sử bạn đang viết thư cho nó một lần mỗi giây và bạn có EEPROM 32Kb điển hình và chúng tôi đi với độ bền bảo thủ là 100.000 chu kỳ ghi.

Bạn có thể viết 4 byte 8000 lần trước khi bạn cần làm rõ. Vì vậy, đó phải là 800 triệu lần mà bạn có thể viết nó ngay cả khi sử dụng ước tính bảo thủ.

Bây giờ chỉ có 31,5 triệu giây trong một năm, vì vậy, trong một lần viết một giây, phải mất 25 năm để đạt được ước tính thấp về độ bền của EEPROM.


1
Tất nhiên, viết thư cho EEPROM khá chậm (mili giây) vì vậy "viết thường xuyên" của OP có thể cần một giải pháp nhanh hơn ... bạn đã giả định một lần mỗi giây nhưng OP lại khiến chúng tôi chìm trong bóng tối. Và "xóa" EEPROM sẽ thực sự mất một khoảng thời gian rất dài (giây). Tôi cho rằng bạn chỉ có thể ghi đè các giá trị cũ thay vì xóa, nhưng nếu các giá trị đếm không theo trình tự nghiêm ngặt, thật khó để tìm ra giá trị nào là giá trị cuối cùng được viết.
Elliot Alderson

@ElliotAlderson Có lẽ bạn có thể cho rằng giá trị cao nhất là gì, sẽ là giá trị cuối cùng. Rõ ràng là không biết nếu một lần mỗi giây được tính là 'thường xuyên' hay không trong trường hợp này. Chỉ cần chỉ ra rằng để ghi tần số cách nhau hơn 1 giây, EEPROM vẫn hoàn toàn khả thi.
hekete

0

Có rất nhiều tùy chọn ở đây, nhưng vấn đề thực sự là ngăn dữ liệu bị hỏng. Mất điện trong khi ghi có thể làm hỏng dữ liệu. I2C là một lựa chọn tốt để tránh điều này, vì ví dụ với SPI, bạn có thể thấy rằng một ghi xuất hiện (từ quan điểm của bộ nhớ) để hoàn thành một nửa thông qua việc cập nhật 4 byte của một từ 32 bit. I2C mạnh hơn một chút, nhưng chỉ một chút.

Lời khuyên của tôi sẽ là lưu trữ 4 bản sao của giá trị. Bằng cách đó ngay cả khi văn bản bị gián đoạn, hai sẽ luôn luôn khớp.

FRAM hoặc tương tự có lẽ là lựa chọn tốt nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.