M95320-RMB3/
AI

The **M95320-RMB3** is a high-performance, 32-Kbit (4 Kbyte) Electrically Erasable Programmable Read-Only Memory (EEPROM) manufactured by STMicroelectronics. It is designed for low-voltage applications and communicates via the Serial Peripheral Interface (SPI) bus.
---
### 1. Key Technical Specifications
| Feature | Specification |
| :--- | :--- |
| **Memory Size** | 32 Kbit (4,096 bytes) |
| **Interface** | SPI (Mode 0 and Mode 3) |
| **Operating Voltage (Vcc)** | 1.8V to 5.5V |
| **Max Clock Frequency** | 20 MHz (at 4.5V - 5.5V) |
| **Page Size** | 32 Bytes |
| **Operating Temperature** | -40°C to +125°C |
| **Write Cycles** | More than 4 million cycles |
| **Data Retention** | 200 Years |
---
### 2. Functional Components
The device consists of several critical electronic blocks that manage data storage and retrieval:
* **Memory Array:** Organized as 4096 words of 8 bits each.
* **Status Register:** Controls the Write Inhibit features and indicates whether a Write cycle is in progress.
* **Control Logic:** Decodes the 8-bit instructions sent via the SPI bus (e.g., READ, WRITE, WREN).
* **Output Buffer:** Drives the Serial Data Output (Q) pin during read operations.
* **Charge Pump:** An internal voltage multiplier that generates the high voltage required to program/erase the EEPROM cells from the low-voltage supply.
---
### 3. Pin Configuration and Package
The **RMB3** suffix specifically refers to the **UFDFPN8 (MLP8)** package, which is an ultra-thin, fine-pitch dual flat no-lead package (2x3 mm).
| Pin | Name | Description |
| :--- | :--- | :--- |
| 1 | **S#** | Chip Select (Active Low) |
| 2 | **Q** | Serial Data Output |
| 3 | **W#** | Write Control (Hardware protection) |
| 4 | **Vss** | Ground |
| 5 | **D** | Serial Data Input |
| 6 | **C** | Serial Clock |
| 7 | **HOLD#** | Pause communication without deselecting |
| 8 | **Vcc** | Supply Voltage |
---
### 4. Application Logic (Pseudo-code Example)
To read data from the M95320 using an MCU, you would typically follow this SPI sequence:
```cpp
// Example: Reading a byte from address 0x01FF
void read_eeprom(uint16_t address) {
digitalWrite(CHIP_SELECT, LOW); // Select device
SPI.transfer(0x03); // Send READ instruction
SPI.transfer((address >> 8) & 0xFF); // Send High Address Byte
SPI.transfer(address & 0xFF); // Send Low Address Byte
uint8_t data = SPI.transfer(0x00); // Clock out the data
digitalWrite(CHIP_SELECT, HIGH); // Deselect device
}
```
---
- ⤷What is the difference between the M95320-R and the M95320-W variants?
- ⤷ How does the 'Hold' pin function during an active SPI transmission?
- ⤷ What are the recommended decoupling capacitor values for the Vcc pin in this package?