Компания Dallas Semiconductor выпускает энергонезависимые микросхемы памяти, в которых для доступа используется популярная однопроводная шина 1-Wire [1]. В этой статье описывается работа с такой микросхемой из программы для AVR (макетная плата AVR-USB-MEGA16, микроконтроллер ATmega32A, кварц 12 МГц).
[Микросхема памяти DS2430A, обзор]
DS2430A представляет собой энергонезависимую память (nonvolatile EEPROM) на 256 бит. DS2430A уже немного устарела, и производитель рекомендует её заменить на более современную - DS2431 1024-Bit 1-Wire EEPROM. Основные возможности DS2430A:
- 256 бит памяти организованы как одна страница из 32 байт с произвольным доступом по адресу к каждому байту.
- Кроме 256 бит памяти EEPROM, имеется 64-битный нестираемый идентификатор микросхемы, который прописан на заводе. Этот идентификатор состоит из 8 бит кода семейства, 48 бит серийного номера, и для их проверки имеется 8 бит CRC (контрольная сумма для проверки достоверности данных). 8-битный код семейства указывает для управляющего микроконтроллера тип подключенной микросхемы. 48-битный идентификатор уникален для каждого экземпляра микросхемы, и благодаря ему можно несколько микросхем подключить параллельно к шине 1-Wire, и осуществлять к ним раздельный доступ.
- В микросхему встроен специальный multidrop контроллер, который обеспечивает совместимость по шине с другими продуктами стандарта MicroLAN.
- Микросхема подключается и питается через один единственный провод шины 1-Wire.
- Микросхему можно подключить напрямую к ножке порта любого микроконтроллера, и передавать данные памяти со скоростью 15.3 килобита в секунду.
- Детектор присутствия (presence detector) выдает подтверждение, когда устройство чтение подает питание на микросхему через шину 1-Wire.
- Микросхема поставляется в недорогих корпусах TO-92 (3 вывода) или TSOC и UCSP (6 выводов, для одностороннего монтажа). Для всех корпусов вывод 1 земля (общий провод, GND), а вывод 2 шина 1-Wire (по ней одновременно передается питание и передаются данные).
- Напряжение питания для чтения и записи лежит в широком диапазоне 2.8 .. 5.25V, допустимый температурный диапазон от -40 до +85 oC.
Более подробную информацию можно получить из даташита на микросхему (можно взять из папки doc архива по ссылке [2]).
[Проект DS2430A-reader]
Вся система состоит из LCD-индикатора SC2004ASLT-EH-G (20x4 символов, нерусифицированный), и нагрузочного резистора 4.7 кОм для шины 1-Wire (через которую подключена микросхема DS2430A). Индикатор подключен по четырехпроводной шине данных, к старшей тетраде 8-битной шины индикатора. На схеме показано подключение индикатора и микросхемы DS2430A к макетной плате AVR-USB-MEGA16.
Сигналы LCD_D4, LCD_D5, LCD_D6, LCD_D7 подключены к шине данных индикатора, LCD_E подключен к выборке индикатора, LCD_RS сигнал для переключения данные/команда, сигнал LCD_RW переключает режим чтение или запись. Сигнал MEM_B1 - шина 1-Wire, по которой микросхема DS2430A получает питание и обменивается данными (питание обеспечивает нагрузочный резистор 4.7 кОм). К ножкам BTN_UP, BTN_DOWN, BTN_LEFT, BTN_RIGHT, BTN_ENTER подключена 5-кнопочная клавиатура (простые замыкатели на землю GND). На рисунке показана разводка всех сигналов к портам макетной платы AVR-USB-MEGA16.
Для работы с микросхемой DS2430A предназначено простейшее меню: Read (чтение данных микросхемы в буфер) Write (запись буфера в микросхему), Edit (редактирование содержимого памяти). По пунктам меню осуществляется навигация в виде курсора из символов квадратных скобок. Кнопка ENTER запускает выполнение пункта меню.
О состоянии операции чтения/записи выводятся соответствующие сообщения (READ OK, WRITE OK). Если нет доступа к микросхеме DS2430A (например, она не подключена или неисправна), то выдается сообщение об ошибке (NO IC).
Шестнадцатеричный редактор памяти (режим Edit) устроен очень просто - содержимое буфера распечатывается на экране в виде HEX-дампа, и текущий редактируемый байт показывается мигающим курсором. Кнопки UP и DOWN меняют содержимое байта (его данные), а кнопки LEFT и RIGHT меняют адрес редактируемого байта. Кнопка ENTER служит для выхода из режима редактирования буфера. После того, как буфер отредактирован, его можно записать в микросхему памяти DS2430A операцией Write.
Исходный код проекта можно скачать в архиве по ссылке [2]. Назначение папок архива:
В корневой папке лежат все файлы исходного кода проекта (AVR Studio ver. 4.19). bin готовые скомпилированные прошивки (формат HEX) для различных частот кварца. debug - в эту папку попадает скомпилированный объектный код и двоичный код отладочной конфигурации. Там же находится соответствующий makefile проекта. doc различная документация. release - в эту папку попадает скомпилированный объектный код и двоичный код конфигурации релиза. Там же находится соответствующий makefile проекта.
Скомпилировать проект можно из среды AVR Studio любой версии начиная с ver. 4.19 через меню Build -> Rebuild All, а также из командной строки с помощью утилиты make. Для этого перейдите в папку debug или release и выполните команды наподобие следующих (на примере release):
make --makefile=Makefile.release clean make --makefile=Makefile.release
[Ссылки]
1. iButton: описание протокола, электронный замок на ключах-таблетках. 2. Исходный код DS2430A-reader, проект для AVR Studio, документация. 3. Макетная плата AVR-USB-MEGA16. |