DS2430A: работа с EEPROM по шине 1-Wire Печать
Добавил(а) microsin   

Компания Dallas Semiconductor выпускает энергонезависимые микросхемы памяти, в которых для доступа используется популярная однопроводная шина 1-Wire [1]. В этой статье описывается работа с такой микросхемой из программы для AVR (макетная плата AVR-USB-MEGA16, микроконтроллер ATmega32A, кварц 12 МГц).

[Микросхема памяти DS2430A, обзор]DS2430A-packages

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. 

DS2430A-avr-usb-mega16-sch

Сигналы 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-AVR-USB-MEGA16-pinout

Для работы с микросхемой DS2430A предназначено простейшее меню: Read (чтение данных микросхемы в буфер) Write (запись буфера в микросхему), Edit (редактирование содержимого памяти). По пунктам меню осуществляется навигация в виде курсора из символов квадратных скобок. Кнопка ENTER запускает выполнение пункта меню.

DS2430A-reader-IMG 1561 DS2430A-reader-IMG 1559 DS2430A-reader-IMG 1562

О состоянии операции чтения/записи выводятся соответствующие сообщения (READ OK, WRITE OK). Если нет доступа к микросхеме DS2430A (например, она не подключена или неисправна), то выдается сообщение об ошибке (NO IC).

DS2430A-reader-IMG 1571 DS2430A-reader-IMG 1572 DS2430A-reader-IMG 1574

Шестнадцатеричный редактор памяти (режим Edit) устроен очень просто - содержимое буфера распечатывается на экране в виде HEX-дампа, и текущий редактируемый байт показывается мигающим курсором. Кнопки UP и DOWN меняют содержимое байта (его данные), а кнопки LEFT и RIGHT меняют адрес редактируемого байта. Кнопка ENTER служит для выхода из режима редактирования буфера. После того, как буфер отредактирован, его можно записать в микросхему памяти DS2430A операцией Write.

DS2430A-reader-IMG 1570

Исходный код проекта можно скачать в архиве по ссылке [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

DS2430A-reader-20121108 120407

[Ссылки]

1. iButton: описание протокола, электронный замок на ключах-таблетках.
2. Исходный код DS2430A-reader, проект для AVR Studio, документация.
3Макетная плата AVR-USB-MEGA16.