Mar 15, 2025
Использование FT24C32A-ESR-T в Raspberry Pi HAT: Полное руководство
Raspberry Pi HAT (Hardware Attached on Top) — это стандарт для модульных плат, которые подключаются к Raspberry Pi и автоматически распознаются системой благодаря встроенной EEPROM (Electrically Erasable Programmable Read-Only Memory). В этой статье мы подробно рассмотрим микросхему FT24C32A-ESR-T, её подключение, настройку и использование в HAT, а также разберём, как она помогает Raspberry Pi определять и конфигурировать подключённые модули.
1. Что такое FT24C32A-ESR-T?
FT24C32A-ESR-T — это 32-килобитная (4 Кбайт) серийная EEPROM с интерфейсом I²C, выпускаемая компанией Fremont Micro Devices. Она идеально подходит для применения в Raspberry Pi HAT благодаря своей компактности, низкому энергопотреблению и совместимости с I²C-шиной Raspberry Pi.
Основные характеристики:
- Объём памяти: 32 Кбит (4096 байт).
- Организация памяти: 512 страниц по 8 байт (или 256 страниц по 16 байт в зависимости от режима).
- Интерфейс: I²C (до 400 кГц в стандартном режиме, до 1 МГц в быстром режиме).
- Напряжение питания: 1.8V–5.5V (совместимо с 3.3V, используемым в Raspberry Pi).
- I²C-адрес: Базовый адрес 0x50 (1010xxx в бинарном виде), где последние три бита задаются пинами A2, A1, A0.
- Время записи: ~5 мс на страницу.
- Температура эксплуатации: -40°C до +85°C (версия ESR-T — расширенный температурный диапазон).
- Эта микросхема часто используется в HAT для хранения идентификационных данных, которые Raspberry Pi считывает при загрузке.
2. Роль EEPROM в Raspberry Pi HAT
EEPROM в HAT выполняет функцию “цифрового паспорта”, позволяя Raspberry Pi автоматически распознавать подключённый модуль и настраивать его без вмешательства пользователя. Основные задачи:
- Идентификация: Хранит информацию о производителе, модели и версии HAT.
- Конфигурация: Содержит данные о настройке GPIO, загрузке драйверов и Device Tree Overlays (DTO).
- Совместимость: Обеспечивает соответствие стандарту HAT, включая электрические и механические характеристики.
- Защита: После записи данных защита от записи (через пин WP) предотвращает случайное изменение.
Что хранится в EEPROM?
Данные в EEPROM для HAT строго структурированы согласно спецификации Raspberry Pi Foundation. Обычно используется только первые 128–256 байт из доступных 4096 байт. Структура данных включает:
- Заголовок:
- Сигнатура:
0xE0 0xAA
(для распознавания HAT). - Версия формата: Например, 0x01.
- Длина данных: Обычно 128 байт.
- Сигнатура:
- Идентификатор:
- Vendor ID (16 бит): Уникальный код производителя.
- Product ID (16 бит): Код модели HAT.
- Product Version (16 бит): Версия платы.
- Настройка GPIO:
- Информация о пинах GPIO, их режиме (вход/выход) и состоянии по умолчанию.
- Драйверы:
- Указания на модули ядра или DTO (например, dtparam=i2c_arm=on).
- Чековая сумма:
- Для проверки целостности данных.
Raspberry Pi считывает эти данные по I²C-шине (адрес 0x50) при загрузке, после чего автоматически настраивает оборудование.
3. Подключение FT24C32A-ESR-T к Raspberry Pi
Для работы FT24C32A в составе HAT необходимо правильно подключить микросхему к Raspberry Pi. Вот типичная схема:
Схема подключения:
- Pin 1 (A0), Pin 2 (A1), Pin 3 (A2): Адресные пины для задания I²C-адреса. Для HAT обычно подключаются к GND, что даёт адрес 0x50 (1010000).
- Pin 4 (GND): Подключите к общей земле Raspberry Pi.
- Pin 5 (SDA): Линия данных I²C. Подключите к SDA (GPIO 2 на Raspberry Pi).
- Pin 6 (SCL): Линия синхронизации I²C. Подключите к SCL (GPIO 3 на Raspberry Pi).
- Pin 7 (WP): Защита записи. Подключите к GND для разрешения записи или к VCC для блокировки (в HAT обычно переводят в VCC после записи данных).
- Pin 8 (VCC): Подключите к 3.3V через фильтрующий конденсатор 100 нФ (между VCC и GND).
Дополнительно:
- Подтягивающие резисторы: На линиях SDA и SCL должны быть резисторы 4.7kΩ к 3.3V. Raspberry Pi обычно имеет встроенные резисторы (1.8kΩ), но лучше проверить.
- Напряжение: Используйте 3.3V, так как это стандарт для Raspberry Pi.
4. Чтение и запись данных в FT24C32A
FT24C32A взаимодействует с Raspberry Pi через I²C-шину. Для работы с ней можно использовать как командную строку, так и программное обеспечение (например, Python).
Подготовка:
- Включите I²C на Raspberry Pi:
- Выполните sudo raspi-config, выберите “Interface Options” → “I2C” → включите.
- Установите i2c-tools: sudo apt install i2c-tools.
- Проверьте наличие микросхемы:
i2cdetect -y 1
Вы должны увидеть адрес 0x50.
Чтение данных:
- Для чтения одного байта:
i2cget -y 1 0x50 0x00
Здесь 0x00 — адрес памяти для чтения.
- Для чтения всей памяти:
i2cdump -y 1 0x50
Пример на Python:
import smbus
bus = smbus.SMBus(1) # Номер шины I²C
address = 0x50 # Адрес микросхемы
def read_eeprom(address_byte):
return bus.read_byte_data(address, address_byte)
# Чтение байта по адресу 0x00
data = read_eeprom(0x00)
print(f"Прочитано: {data}")
Запись данных:
Для записи необходимо, чтобы WP был подключён к GND.
Запись одного байта:
i2cset -y 1 0x50 0x00 0xAA
Здесь 0xAA — значение, которое записывается по адресу 0x00.
FT24C32A записывает данные постранично (по 8 байт). После каждой записи требуется задержка ~5 мс.
Пример на Python:
import smbus
import time
bus = smbus.SMBus(1) # Номер шины I²C
address = 0x50 # Адрес микросхемы
def write_eeprom(address_byte, data):
bus.write_byte_data(address, address_byte, data)
time.sleep(0.005) # Задержка 5 мс
# Запись байта 0xAA по адресу 0x00
write_eeprom(0x00, 0xAA)
print("Данные записаны")
5. Изменение I²C-адреса
FT24C32A позволяет менять I²C-адрес с помощью пинов A2, A1, A0. Базовый адрес — 0x50 (1010xxx), где последние три бита задаются пинами:
- A2, A1, A0 = 000 → 0x50.
- A2, A1, A0 = 001 → 0x51.
- A2, A1, A0 = 010 → 0x52.
- … до 111 → 0x57.
Для HAT стандартный адрес — 0x50 (все пины на GND). Если вам нужно использовать другой адрес (например, для нескольких устройств на одной шине), измените состояние A2, A1, A0, подключив их к VCC (1) или GND (0). После изменения проверьте новый адрес с помощью i2cdetect -y 1.
6. Создание HAT ID с использованием FT24C32A
Чтобы ваш HAT был распознан Raspberry Pi, нужно записать в EEPROM структурированные данные:
Получите Vendor ID: Зарегистрируйтесь у Raspberry Pi Foundation.
Создайте eeprom.bin:
- Начните с сигнатуры 0xE0 0xAA.
- Укажите Vendor ID, Product ID, Product Version.
- Добавьте настройки GPIO и драйверов.
- Завершите чековой суммой.
Запишите данные:
i2cset -y 1 0x50 0x00 < eeprom.bin
Заблокируйте запись: Переведите WP в VCC.
Проверьте: Перезагрузите Raspberry Pi и выполните:
vcdbg log msg
7. Заключение
Микросхема FT24C32A-ESR-T — это надёжное и простое решение для реализации HAT ID в проектах с Raspberry Pi. Благодаря её поддержке I²C, совместимости с 3.3V и большому объёму памяти (для задач HAT), она идеально подходит для хранения идентификационных данных. Правильное подключение, настройка адреса и запись данных в EEPROM позволяют создать полностью совместимый HAT, который Raspberry Pi распознает автоматически, обеспечивая удобство и функциональность для пользователей.
Если вы разрабатываете свой HAT, FT24C32A станет отличным выбором для хранения конфигурации. Следуйте спецификации Raspberry Pi, и ваш модуль будет работать как официальный HAT!