Penyimpanan Data dengan Modul EEPROM AT24CXX pada STM32

3 min read 22-08-2024
Penyimpanan Data dengan Modul EEPROM AT24CXX pada STM32

Pendahuluan

Memori EEPROM (Electrically Erasable Programmable Read-Only Memory) adalah komponen penting dalam sistem embedded. Dengan kemampuannya untuk menyimpan data bahkan saat daya mati, EEPROM sering digunakan untuk menyimpan konfigurasi, parameter, dan data penting lainnya pada perangkat berbasis mikrokontroler. Dalam artikel ini, kita akan membahas cara menyimpan dan mengambil data menggunakan modul EEPROM AT24CXX pada mikrokontroler STM32.

Apa itu EEPROM AT24CXX?

EEPROM AT24CXX adalah salah satu jenis EEPROM yang umum digunakan. Modul ini tersedia dalam berbagai kapasitas, mulai dari 1 Kbit hingga 1 Mbit. Modul ini berfungsi melalui komunikasi I2C, yang membuatnya mudah terintegrasi dengan berbagai mikrokontroler, termasuk STM32.

Kelebihan EEPROM AT24CXX:

  • Persistensi Data: Data tetap tersimpan meskipun daya mati.
  • Kemudahan Komunikasi: Berbasis I2C, sehingga hanya membutuhkan dua kabel untuk komunikasi.
  • Usia Panjang: Biasanya dapat digunakan untuk lebih dari 1.000.000 siklus tulis/baca.

Spesifikasi Modul EEPROM AT24CXX

Sebelum kita melanjutkan, berikut adalah beberapa spesifikasi dari modul EEPROM AT24CXX yang perlu diperhatikan:

  • Tegangan Operasi: 1.8V hingga 5.5V
  • Kecepatan I2C: Up to 1 MHz
  • Standby Current: Sangat rendah, membuatnya ideal untuk aplikasi hemat daya.
  • Data Memory: Tersedia dalam berbagai kapasitas dari 1 Kbit hingga 1 Mbit.

Persiapan Perangkat Keras

Komponen yang Diperlukan:

  1. Mikrokontroler STM32 (misalnya STM32F103C8T6)
  2. EEPROM AT24CXX (misalnya AT24C08)
  3. Kabel Penghubung (Jumper Wires)
  4. Breadboard atau PCB
  5. Power Supply (3.3V atau 5V tergantung modul)

Skema Rangkaian

Berikut adalah skema dasar untuk menghubungkan modul EEPROM AT24CXX dengan STM32:

  • SDA dari EEPROM ke SDA pada STM32.
  • SCL dari EEPROM ke SCL pada STM32.
  • VCC dari EEPROM ke sumber daya (3.3V/5V).
  • GND dari EEPROM ke Ground STM32.

Pengaturan Lingkungan Pengembangan

Untuk mengembangkan proyek ini, Anda akan memerlukan:

  1. IDE: STM32CubeIDE atau Keil uVision.
  2. Library I2C: Library HAL dari STMicroelectronics.
  3. Library EEPROM: Anda mungkin memerlukan library tambahan untuk memudahkan komunikasi dengan EEPROM.

Koding untuk Mengakses EEPROM

Setelah semua komponen terpasang dan lingkungan pengembangan siap, kita dapat mulai menulis kode untuk menyimpan dan mengambil data dari EEPROM.

Inisialisasi I2C

Pertama, kita perlu menginisialisasi komunikasi I2C. Berikut adalah contoh inisialisasi I2C menggunakan STM32 HAL Library:

#include "stm32f1xx_hal.h"

I2C_HandleTypeDef hi2c1;

void MX_I2C1_Init(void) {
    hi2c1.Instance = I2C1;
    hi2c1.Init.ClockSpeed = 100000; // 100 kHz
    hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
    hi2c1.Init.OwnAddress1 = 0;
    hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
    hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
    hi2c1.Init.OwnAddress2 = 0;
    hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
    hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;

    HAL_I2C_Init(&hi2c1);
}

Fungsi untuk Menyimpan Data

Berikut adalah fungsi untuk menulis data ke EEPROM:

#define EEPROM_ADDRESS (0xA0) // Alamat I2C EEPROM AT24CXX

HAL_StatusTypeDef EEPROM_Write(uint16_t MemAddress, uint8_t* pData, uint16_t Size) {
    return HAL_I2C_Mem_Write(&hi2c1, EEPROM_ADDRESS, MemAddress, I2C_MEMADD_SIZE_8BIT, pData, Size, HAL_MAX_DELAY);
}

Fungsi untuk Membaca Data

Untuk membaca data dari EEPROM, kita bisa menggunakan fungsi berikut:

HAL_StatusTypeDef EEPROM_Read(uint16_t MemAddress, uint8_t* pData, uint16_t Size) {
    return HAL_I2C_Mem_Read(&hi2c1, EEPROM_ADDRESS, MemAddress, I2C_MEMADD_SIZE_8BIT, pData, Size, HAL_MAX_DELAY);
}

Contoh Penggunaan

Berikut adalah contoh penggunaannya di dalam fungsi main():

int main(void) {
    HAL_Init();
    MX_I2C1_Init();
    
    uint8_t data[] = "Hello EEPROM";
    uint8_t buffer[20];
    
    // Menyimpan Data
    EEPROM_Write(0x00, data, sizeof(data));
    
    // Membaca Data
    EEPROM_Read(0x00, buffer, sizeof(data));
    
    // Sekarang buffer berisi data yang dibaca dari EEPROM
    while (1) {
        // Loop utama
    }
}

Kesimpulan

Modul EEPROM AT24CXX adalah solusi yang efektif untuk menyimpan data pada aplikasi berbasis STM32. Dengan karakteristiknya yang handal dan kemudahan komunikasi melalui I2C, Anda dapat dengan mudah menyimpan pengaturan dan data penting lainnya. Dalam artikel ini, kita telah membahas cara menghubungkan, menginisialisasi, serta menulis dan membaca data ke dalam EEPROM. Semoga artikel ini bermanfaat sebagai panduan dalam proyek Anda selanjutnya!