Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

На сьогоднішній день карти пам'яті SD (microSD) стали дуже дешевими і доступними, є хорошим варіантом для збільшення пам'яті в своїх проектах на мікроконтролерах і вбудованих системах. У цьому проекті ми розглянемо методи підключення даних типів карт до мікроконтролерів AVR ATmega8. ATmega32 компанії Atmel. Основною метою є вивчення інтерфейсу SD карт і розуміння процесу передачі даних в «сирому» (без специфікації) форматі і у форматі файлової системи FAT32.

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Як відомо, карти пам'яті SD сумісні з інтерфейсом SPI, тому їх легко можна підключити до мікроконтролеру і налагодити з ними обмін даними. Адаптери для карт типу microSD також є доступними, з такого адаптера ми можемо виготовити слот для карти microSD для нашого макета. На фотографіях нижче показаний зовнішній вигляд виготовленого адаптера для підключення до макетної платі.

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8
Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

У проект спочатку використовувалася карта пам'яті microSD об'ємом 1 Гбайт. Мікроконтролер - ATmega8 або ATmega32, що працює на частоті 8 МГц від внутрішнього RC осцилятора. Крім того, для підключення макета до персонального комп'ютера для моніторингу даних використовувався інтерфейс RS-232. Для перетворення логічних рівнів інтерфейсу використовується мікросхема MAX232. Для живлення схеми необхідний стабілізований джерело живлення 3.3 В (мікросхема MAX232 розрахована на напругу живлення 5 В, проте, як показала практика, зберігає працездатність при 3.3 В). Підключення карти пам'яті по 7-провідній схемі, згідно терморегулятори (див. Рис).

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Принципова схема для мікроконтролера ATmega8.

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Натисніть для збільшення

Підтягує резистори R1, R2 номіналом 51 кОм інтерфейсу SPI надають кращу стабільність при роботі з різними картами. Стабілітрони D1, D2 призначені для захисту карти пам'яті при роботі внутрисхемного вибору програм (ISP). Висновки мікросхеми MAX232 VCC і GND на схемах не вказані, але їх необхідно подклічіть до відповідних точок схеми.

Принципова схема для мікроконтролера ATmega32

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Натисніть для збільшення

Принципова схема для мікроконтролера ATmega32 (додані годинник реального часу на мікросхемі DS1307)

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Натисніть для збільшення

Як ви помітили, харчування останнього варіанту пристрою здійснюється від джерела 12 В, а на платі встановлені два регулятора напруги 5.0 В (LM7805) і 3.3 В (LM1117-3.3). Для харчування інтерфейсу SD карту, Вам потрібно 3.3 В, вся інша частина схеми харчується від джерела 5.0 В. Мікросхема годин реального часу DS1307 в стандартному включенні і підключена до інтерфейсу I2C мікроконтролера.

Після вдалої реалізації обміну даними без специфікації, карта пам'яті була відформатована (FAT32) в операційній системі Windows XP, потім на карту були записані декілька текстових файлів, директорій і інші типи файлів (в кореневу директорію карти). Після цього були написані підпрограми і функції по роботі з файловою системою FAT32 для читання файлів, для отримання списку файлів на карті пам'яті (з використанням HiperTerminal), для отримання інформації про повне і вільному обсязі пам'яті.

Вид вікна програми HiperTerminal з функціями по роботі з картою пам'яті SD:

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Користувачеві пропонуються понад 10 опцій по роботі з картою пам'яті (для варіанту з годинником).

Опції 0 - 4 - це низькорівневі функції. Gосле використання опцій 0 - 3 Вам необхідно переформатувати карту перед використанням FAT32 підпрограм.
Опції 5 - 9 - відносяться до файлової системи FAT32. На даний момент підтримуються тільки короткі імена файлів (8 Байт - ім'я файлу, 3 Байта - розширення файлу). Якщо будуть записані файли з довгими іменами, то вони будуть відображені в термінальній програмі в короткому форматі. Для тестування цих опцій не забудьте відформатувати карту в файлової системі FAT32, записати кілька директорій і текстових файлів.

Примітка. Тут функції роботи з декількома блоками (опції 3 і 4) відключені через брак пам'яті мікроконтролера ATmega8, оскільки ці функції не потрібні для тестування файлової системи FAT32. Для включення цих опцій необхідно видалити макрос в файлі SD_routines.h (#define FAT_TESTING_ONLY). І, якщо Ви використовуєте ATmega8, на час тестування опцій 3 і 4 бібліотека FAT32 може бути видалена з метою звільнення пам'яті мікроконтролера.

5 - Get File List - відображає список доступних директорій і файлів з займаним ними обсягом пам'яті (в кореневій директорії карти);
6 - Read File - читання зазначеного файлу і відображення вмісту у вікні термінальної програми;
7 - Create File - створити / додати файл із зазначеним ім'ям;
8 - Delete File - видалити всі файли файл з вказаним ім'ям;
9 - Read SD Memory Capacity - інформація про повне і вільному обсязі карти пам'яті (використовується FSinfo сектор SD карти).

В термінальній програмі послідовний порт налаштовується на швидкість обміну 19200 бод, без контролю потоку і без перевірки парності.

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Для версії з годинником реального часу (DS1307) на мікроконтролері ATmega32 властивості створюваних або оновлюваних файлів прив'язуються до дати і часу (дата створення / зміни), ці властивості прописуються в файлової таблиці і можуть бути перевірені за допомогою комп'ютера, а також годинник можуть бути корисні при зборі даних. В меню опцій в термінальній програмі додані три опції:

a - Show DateTime - по цій команді в вікні термінальної програми відображається поточна дата і час;
b - Update Date - оновити дату;
з - Update Time - оновити час.

Також у верхній частині відображається інформація про певну карті пам'яті:

Підключення sd і sdhc карт пам'яті до мікроконтролерів atmega8

Версія 2.1 для мікроконтролера ATmega8, без підтримки SDHC:

Версії 2.3, 2.4 тестувалися на мікроконтролері ATmega32, але можуть бути адаптовані під будь-який контролер з пам'яттю SRAM не менше 1 КБ і Flash-пам'яттю програм не менше 16 КБ.

Схожі статті