I2C программатор: CH341A, USB-UART-конвертер и I2C/SPI-программатор за $5 / Хабр

Содержание

Программатор SPI и I2C микросхем памяти Ch441A Mini Programmer

  Микросхемы памяти серий 24хх (EEPROM), 25хх (Serial Flash) широко используются в электронике. Такие чипы присутствуют в составе практически любой конструкции современной бытовой и промышленной аппаратуры, где есть процессоры и/или микроконтроллеры. Данный программатор имеет возможность работы с обоими типами памяти.


  В комплект поставки входят сам программатор и переходная плата с двумя посадочными местами под микросхемы памяти в SOIC корпусе.

  Они дублируют имеющиеся на нижней стороне платы программатора, и если на плату программатора микросхемы памяти нужно обязательно припаивать, на переходнике можно попробовать прижать микросхему прищепкой или держателем для бумаг.

  Так-же на переходнике есть посадочное место для разьема PLD-8 (в комплект не входит, я впаял 2хPLS-4), предназначенного для подключения прищепки или шлейфа программирования.

Аппаратная часть (Hardware).

  Программатор выполнен на базе микроконтроллера «USB Bus Convert Chip» серии Ch441A. Он рассчитан на физическое подключение к порту USB 2.0 компьютера, при подключении через хаб-удлиннитель программатор у меня работал с ошибками (может у меня хаб такой). Модуль программирования памяти собран на плате размерами 63х27мм (без учета USB разьема, с разьемом 84х27мм) из черного стеклотекстолита.

Схема программатора:

  В распоряжении автора есть два экземпляра этого программатора, приобретенные в разное время, визуально их можно отличить по названию, один (более ранний) называется «Ch441A Mini Programmer«, второй «Ch441A MinProgramment«. Схемы одинаковые, различаются только цветом светодиода «RUN«. На первом зеленый, на втором желтый.
  Некоторые схемные обозначения на конкретном программаторе могут немного отличаться, например самовосстанавливающийся предохранитель F1 (

fuse) может обозначаться как R1. В инете встречались упоминания, что в эту позицию иногда ставят резистор нулевого сопротивления т.е. перемычку. У меня как и положено на обоих стоят предохранители ~400mA, сопротивление 0,92Ом, маркировка на корпусе «5». Также на плате часто отсутствует схемное обозначение резисторной сборки PR1. Более грамотное обозначение схемных элементов программатора можно посмотреть на изображении верхней стороны платы от магазина WAVGAT (на AliExpress):

  Особых отличий от даташита схема не имеет, разве что на блокировочных конденсаторах по питанию сильно экономили. Питание 5V от USB подается на вывод 28, на выходе 9 внутреннего стабилизатора блокировочный конденсатор.

  Т.к. на выводах ввода/вывода напряжение соответствует 5V уровням, в основном это устройство на 5V, правда в инете много упоминаний и о программировании им микросхем на 3.3V без каких либо ошибок и отрицательных последствий. Выход отдельного стабилизатора

AMS1117-3.3 в схеме не задействован и просто выведен на выходной ZIF разьем и на контакт боковой гребенки SPI.
  В даташите указан способ сделать уровни на выходах совместимыми с 3.3V. Для этого необходимо соединить выводы 28 и 9 и подать на них 3.3V, при этом внутренний стабилизатор просто не используется. Но при этом 3.3V уровни также будут на на переходнике USB <-> RS232, что иногда не приемлемо. Также на Ali сушествует другая версия этого программатора, скомпонованная немного по другому и выполненая на зеленом текстолите. Читал, что там на вывод 28 подается 3.3V от внешнего стабилизатора, но выводы 28 и 9 не соединены, и это нормально работает. В любом случае, уровни на переходнике USB <-> RS232 и здесь будут 3.3V.
  Если планируется программирование флешек 1.8V через основной разьем необходимо дополнительно приобрести модуль 1.8V-adapter. Бонусом является то, что переделать его для поддержки и уровней 3.3V несложно, надо лишь закоротить вход/выход стабилизатора 1.8V дополнительным джампером.

  Теперь при наличии джампера адаптер работает с логическими уровнями 3.3V, при отсутствии — 1.8V.
Минус тут в том, что стоимость адаптера не намного меньше, чем самого программатора. Но если он уже есть, почему бы его не использовать по полной?

  Если для программирования будет использована боковая гребенка SPI, можно поступить проще. На Ali много предложений 4-канального двунаправленного преобразователя уровней на МОП транзисторах за очень небольшие деньги.

  Работа этого преобразователя подробно описана в статье «Согласование логических уровней 5В и 3.3В устройств». Схема отличается от рассмотренной в статье только номиналами резисторов (сопротивление меньше — увеличено быстродействие и энергопотребление). За счет добавления дополнительных джампера J1 и двух кремниевых диодов, можно будет программировать как 3.3V, так и 1.8V флешки.

  Резисторы 2,2 кОм отделяют выводы #WP и #HOLD флешки от шины питания. Светодиод — индикатор наличия напряжения.

Программная часть (Software), драйвер.

  Перед применением программатора необходимо инсталировать в Windows его драйвер(а), легко находятся в инете, я брал из архива программы AsProgrammer. Программатор поддерживает два режима, они переключаются аппаратно джампером J1. Применен интересный прием, при переключении джампера у чипа меняется Device ID на шине USB. Это вынуждает Windows найти подходящий по VID/PID драйвер и подключить его.
  При джампере в положении «1-2» по VID_1A86&PID_5512 подгружается драйвер «USB-EPP/I2C… Ch441A«. Он создает в диспетчере устройств раздел «Interface» в который и устанавливается.

  В этом случае чтение, верификация, запись чипов памяти должны осуществляться непосредственно через

ZIF-панель программатора Ch441A или через боковой разьем Р2 с интерфейсом SPI.

  При джампере в положении «2-3» по VID_1A86&PID_5523 подгружается драйвер «USB-SERIAL Ch441A«. В диспетчере устройств найти его можно в разделе «Порты (COM и LPT)«. Там же можно посмотреть и номер присвоенного СОМ порта.

  При этом программирование может производиться только через интерфейс RS232 TTL на разьеме Р1 (там же где и джампер), если целевое устройство поддерживает такой способ (встроенный загрузчик или монитор).

Программная часть (Software), программа прошивальщик.

  С программатором Ch441A на программном уровне обычно рекомендуется китайский (есть русификация) родственный софт «Ch441A — USB Programmer». Но в то-же время в инете достаточно много жалоб на его глючность и нестабильность, особенно версий выше 1.18. Ch441A — USB Programmer версий 1.30, 1.29 не может нормально работать (читать и записывать) с чипами памяти объемом более 8MByte/64MBit. Примерно после адреса 0800000 начинают сыпаться хаотичные ошибки.

  Поэтому я не стал наступать на эти грабли повторно, и с самого начала использовал программу «AsProgrammer» от участника сообщества Tifa, последняя версия 1.4.0. Скачать можно на форуме, топик форума показывается в лог-окне программы при запуске. Если кто-то захочет полазить в исходниках, проект есть на GitHub (если правильно понял, проект на Free Pascal, Lazarus).
  Кроме поддержки 24 и 25 серий микросхем памяти, программа работает и c 45 серией, поддерживает серию ST M95 и память microwire (только для данного программатора). Все схемы подключения есть в архиве программы. Полный список поддерживаемых микросхем памяти можно посмотреть в каталоге программы в файле chiplist.xml.

  Программа не требует установки, включает в архив драйверы для обоих режимов программирования

СН341А.
Log-файл работы программы с флешкой W25Q128FW, 16Мб, 1.8V через «1.8V-adapter«:



Используется программатор: Ch441
Sreg: 00000000(0x00), 00000010(0x02), 01100000(0x60)


Используется программатор: Ch441
Читаю флэшку…
Готово
Время выполнения: 0:02:49


Используется программатор: Ch441
Стираю флэшку…
Готово
Время выполнения: 0:01:03


Используется программатор: Ch441
Записываю флэшку с проверкой…
Готово
Время выполнения: 0:24:45


За все время работы с данной программой (прошивал ~5 вариантов BIOS) ни одного сбоя или ошибки.

  Линуксоидам использовать стороннюю программу нет необходимости, стандартный прошивальщик Flashrom полностью поддерживает данный программатор (должен быть собран с поддержкой ключа «-ch441a»).

Доработка 1. Подтяжка сигналов

#WP и #HOLD.

  В программаторе линии сигналов #WP и #HOLD посажены непосредственно на шину питания. Это мешает сбросить/установить бит QE во втором регистре статуса (25хх). В даташитах на микросхемы памяти есть предупреждения по этому поводу, вот из даташита на W25Q128FW:

WARNING: If the /WP or /HOLD pins are tied directly to the power supply or ground during standard SPI or Dual SPI operation, the QE bit should never be set to a 1.

  Для исправления этого недостатка надо отсоединить ноги #WP (pin 3) и #HOLD (pin7) от VCC и подключить их к VCC через резисторы 2.2-4.7 кОм.
  На «чёрном программаторе» советуют это делать так (привязка к схеме, нумерация контактов относительно ZIF разьема), дорожка между контактами 11-12 перерезается (#HOLD), между контактами впаивается резистор, дорожка от 11 контакта ведущая к 7 (#WP) перерезается у 11 контакта, проводок напаивается с 12 контакта к отрезанной дорожке, та же дорожка перерезается перед 7 контактом, поверх разреза напаивается резистор:

  Как по мне, проще сделать это на переходнике 1.8V-adapter, если задействовать его вторую незанятую половину разьема. Тем более при применении адаптера переделка на плате программатора становится бесполезной, порты у трансмиттера используются как однонаправленные.

Доработка 2. Увеличение кол-ва блокировочных конденсаторов по питанию.

  Участник сообщества «AlexX1810» предложил добавить на плату программатора три блокировочных конденсатора 0.1 мкФ. По его словам улучшается стабильность работы программатора.
Если ориентироваться по схеме, первый конденсатор между 6-7 контактами разьема Р1 (5V), второй между 5-6 контактами разьема Р2 (3.3V), третий между 15-16 контактами ZIF панельки (7-8 контакты разьема I2C, 3.3V). Все впаяны со стороны контактов.

У меня во время использования программатора сбоев не было, но хуже во всяком случае не будет.

Ch441A программатор EEPROM с USB (UART, I2C, SPI) в наборе

Нередко в современной жизни бывает нужно перепрограммировать какую-либо микросхему памяти, например, в картридже принтера; простой программатор можно собрать и из Arduino, но если вы хотите поддержки программой на ПК и удобной работы – программатор на Ch441A – Ваш выбор!

Ch4241A – микросхема-преобразователь USB в UART, I2C, SPI и EPP. В режиме UART доступны все выводы обычного COM-порта, что позволяет подключать любые стандартные устройства вроде модема.

SPI и I2C выведены прямо в панельку с нулевым усилием подсоединения (ZIF) для быстрой прошивки микросхем памяти серий 24 и 25. Кроме этого, SPI выведен также на гребёнку для использования с внешними устройствами.

Режим EPP реализует поддержку LPT-порта для печати через LPT-принтеры. Полная совместимость с LPT не гарантируется.

На плате есть один переключатель режимов – джампер, который можно установить в две позиции – либо «USB-UART», либо «USB-EPP, IIC, SPI».

Вся наплатная электроника питается от стабилизатора AMS1117, выдающего 3.3 В / 750 мА. Не перегружайте преобразователь внешними устройствами!

Основные достоинства:

  • подключить DIP-микросхемы можно без порчи ножек, а SMD можно прижать к футпринту на плате;
  • имеется светодиод питания и индикации процесса;
  • плата экранирована по краю для защиты от высокочастотных помех.

Примеры использования:

  • прошивка микросхем BIOS;
  • прошивка EEPROM и Flash для ремонта и восстановления бытовой техники;
  • адаптер для принтера для печати без дополнительных драйверов.

Характеристика:

Вес: 26 г;

Габариты: 94×28×15 мм;

Микросхема: Ch441A;

Напряжение питания: 3.3 В;

Потребляемый ток: 750 мА;

Разъем: ZIF8;

Поддерживаемые интерфейсы: USB, UART, I2C, SPI, EPP, RS232.

В комплекте:

1) Программатор Ch441A — 1 шт;

2) Четырехпиновые гребенки — 2 шт;

3) Переходная плата — 1 шт;

4) Клипса для USB программатора — 1 шт;

5) Адаптер-плата — 1 шт;

6) 45-сантиметровый соединительный кабель — 1 шт.

Внимание! (Характеристики и внешний вид товара могут отличаться от описания, представленного на сайте)

Flash Programmer для I2C EEPROM AT24C64D | dsp

Драйвер Flash Programmer для среды IDE VisualDSP++ [1] для поддержки программирования микросхем последовательной памяти EEPROM с интерфейсом I2C (TWI) AT24C64D.

За основу был взят драйвер для микросхем Serial Flash M25P16 для компании Micron, исходный код которого поставлялся вместе с VisualDSP++ 5.0 (находится в каталоге Blackfin\lib\src\drivers\flash\M25P16\). Возможности и особенности драйвера:

1. Запись и чтение осуществляется блоками размером до страницы (1 .. 32 байт).

Примечание: поскольку в микросхеме AT24C64D находится 256 мелких страниц по 32 байта, и нет физического деления на секторы, в драйвере реализовано логическое деление всей памяти на секторы, в каждом из которых находится по 16 страниц. Благодаря логическому делению на секторы удалось ускорить операции стирания, осуществляемые по командам API Flash Programmer.

2. Для упрощения кода удалена поддержка записи и чтения данных с интервалом (величина параметра Stride может быть только равной 1).

3. Для отладки добавлена возможность вывода сообщений в порт UART0 (макрос umsg).

Микросхема EEPROM подключается к порту TWI0. Драйвер тестировался на микросхеме AT24C64D [2] и процессоре ADSP-BF538F. Драйвер может быть легко адаптирован под другие микросхемы I2C EEPROM и другие процессоры Blackfin.

Схема подключения EEPROM к процессору через порт TWI0:

[Что еще можно улучшить в драйвере]

1. Микросхеме AT24C64D требуется определенное время (до 5 мс) для записи страницы. Есть возможность опроса готовности (окончания внутреннего процесса программирования страницы) по возвращаемому биту ACK/NACK в ответ на выдачу по шине адреса устройства. Это позволило бы сократить время программирования каждой страницы. В настоящий момент такой опрос заменен простой задержкой на 5.2 мс.

2. Можно перейти на повышенную скорость обмена по шине (Fast Mode) со скоростью 400 кГц. Пока работа ведется на стандартной скорости 100 кГц.

3. Вернуть поддержку интервалов адреса (stride) при работе с памятью.

Исходный код и исполняемый DXE-файл драйвера можно скачать по ссылке [4].

[Ссылки]

1. VisualDSP API программирования FLASH для процессоров Blackfin.
2. AT24C64: Serial EEPROM с интерфейсом I2C (TWI).
3. ADSP-BF538: контроллеры интерфейса TWI (I2C).
4. 190207FlashProgrammer-AT24Cxx.zip — исходный код и исполняемый файл драйвера (Debug\FlashDriver_AT24Cxxx.dxe).

Программатор I2C | Festima.Ru — Мониторинг объявлений

Пpограммaтop PIС-контроллeрoв и I2С (IIC) EEPROM EXTRA-PIC Пpограммaтop ЕХTRA-PIС пpeдназнaчен для программировaния PIC-контроллеpoв фирмы МICRОCНIP, а такжe микpоcxем памяти EРROМ. Список пoддepживaeмых микросхем, при использовании с программой IС-РRОG v1.05D: РIС-контроллеры фирмы Мiсrосhiр: РIС12С508, РIС12С508А, РIС12С509, РIС12С509А, РIС12СЕ518, РIС12СЕ519, РIС12С671, РIС12С672, РIС12СЕ673, РIС12СЕ674, РIС12F629, РIС12F675, РIС16С433, РIС16С61, РIС16С62А, РIС16С62В, РIС16С63, РIС16С63А, РIС16С64А, РIС16С65А, РIС16С65В, РIС16С66, РIС16С67, РIС16С71, РIС16С72, РIС16С72А, РIС16С73А, РIС16С73В, РIС16С74А, РIС16С74В, РIС16С76, РIС16С77, РIС16F72, РIС16F73, РIС16F74, РIС16F76, РIС16F77, РIС16С84, РIС16F83, РIС16F84, РIС16F84А, РIС16F88, РIС16С505*, РIС16С620, РIС16С620А, РIС16С621, РIС16С621А, РIС16С622, РIС16С622А, РIС16СЕ623, РIС16СЕ624, РIС16СЕ625, РIС16F627, РIС16F628, РIС16F628А, РIС16F630*, РIС16F648А, РIС16F676*, РIС16С710, РIС16С711, РIС16С712, РIС16С715, РIС16С716, РIС16С717, РIС16С745, РIС16С765, РIС16С770*, РIС16С771*, РIС16С773, РIС16С774, РIС16С781*, РIС16С782*, РIС16F818, РIС16F819, РIС16F870, РIС16F871, РIС16F872, РIС16F873, РIС16F873А, РIС16F874, РIС16F874А, РIС16F876, РIС16F876А, РIС16F877, РIС16F877А, РIС16С923*, РIС16С924*, РIС18F242, РIС18F248, РIС18F252, РIС18F258, РIС18F442, РIС18F448, РIС18F452, РIС18F458, РIС18F1220, РIС18F1320, РIС18F2320, РIС18F4320, РIС18F4539, РIС18F6620*, РIС18F6720*, РIС18F8620*, РIС18F8720* Примечание: Микроконтроллеры, отмеченные звёздочкой (*) подключаются к программатору только через разъём IСSР. Последовательная память ЕЕРRОМ I2С (IIС): Х24С01, 24С01А, 24С02, 24С04, 24С08, 24С16, 24С32, 24С64, АТ24С128, М24С128, АТ24С256, М24С256, АТ24С512. Особенности программатора ЕХТRА-РIС: Функционально совместим с П.О (Программным Обеспечением) программаторов JDМ, но в отличие от них, благодаря более качественному схемотехническому решению, а также использованию внешнего источника напряжения питания: Работоспособен с любыми СОМ-портами, как стандартными (+/-12v; +/-10v) так и с нестандартными СОМ-портами некоторых моделей современных ноутбуков, имеющих пониженные напряжения сигнальных линий, вплоть до +/-5v. Не перегружает по току СОМ-порт компьютера, так как использует стандартный формирователь интерфейса RS232 (МАХ232 или аналогичный), и при правильной эксплуатации не представляет опасности для СОМ-порта. Имеет разъём внутрисхемного программирования (IСSР — In Сirсuit Sеriаl Рrоgrаmming). Поддерживается распространёнными программами IС-РRОG, Роny Рrоg и другими, как программатор JDМ. Программатор подключается к СОМ-порту компьютера, через стандартный кабель-удлинитель СОМ-порта (DВ9М — DВ9F). Кабель приобретается отдельно. Для питания программатора должен использоваться стабилизированный источник питания напряжением от +15,5v до +24,0v или от +13,0v до +14,0v. Источник питания должен быть оборудован стандартным разъёмом «Jасk», центральный «+», толщина центрального вывода На плате программатора имеются: Светодиоды, указывающие режим работы программатора (РОWЕR, VРР). Встроенные интегральные стабилизаторы напряжений +5v(VDD) и +13,5v(VРР). Разъём внутрисхемного программирования (IСSР). Панельки для установки микросхем в распространённых корпусах DIР8, DIР18, DIР28, DIР40 (микросхемы в других корпусах поключаются через разъём IСSР). Программатор предназначен для эксплуатации без корпуса. Проводники печатной платы защищены механически и электрически прочной, диэлектрической паяльной маской (обычно зелёного цвета). К набору прилагаются качественные схемы (принципиальная электрическая, монтажная, быстрая монтажная), а также, краткая инструкция по эксплуатации на русском языке. Бесплатное Программное Обеспечение для Win95/98, Win2000, WinХР прилагается на СD-RОМ, имеющемся в комплекте.

Комьютерные аксессуары и комплектующие

Программатор SERP для I2C и Microwire (24CXX и 93CXX) — Записи обо всём

В связи с тем, что сайт на котором всегда располагался данный проект на данный момент недоступен, я собрал всё, что у меня было и выложу здесь.

SERP — Serial EEPROM Programmer for 24CXX/93CXX для Linux и Windows 2000/XP

SERP — Serial EEPROM ProgrammerПрограмматор SERP(СЕРП) предназначен для программирования микросхем памяти серий 24CXX и 93CXX, т.е. с шинами i2c и microwire. Целью создания этого программатора послужила периодическая необходимость в программировании только этих типов микросхем памяти, которые встречаются, чуть ли не во всех бытовых радиоустройствах, автомобильной электронике, в сетевом оборудовании и т.д. Программатор был разработан таким образом, что бы его мог собрать любой начинающий радиолюбитель, т.к. он практически не содержит радиодеталей, и относится к разряду «low cost» устройств «наколенного» типа. Подключается такой программатор к параллельному порту компьютера. К тому же, его можно собрать не полностью, а под конкретную серию микросхем памяти, что еще более упрощает его сборку. Что бы добиться такой простоты и работоспособности программатора СЕРП, соответственным образом был написан необходимый для него софт, который предназначен для работы в консольном режиме.

Схема подключения микросхем к порту (для двух типов микросхем):

SERP — Serial EEPROM ProgrammerКак видно из схемы, для сборки СЕРПа вам понадобятся следущие детали:

- Разъем DB-25 "папа".
- Две цанговых панельки DIP8, но можно и одну на DIP16, только главное запомните,      
  что куда вставлять.
- Один любой кремневый диод, например КД522А и любой электролитический конденсатор, 
  можно и керамический, но не ниже 0,1 Мкф.
- Если у вас есть желание контролировать процесс подачи напряжения питания на   
  микросхемы, то вы можете дополнить программатор индикацией, для этого вам  
  понадобятся светодиод из серии АЛ307А или подобного типа с подходящими размерами, 
  а так же резистор с номиналом в пределах от 510 Ом до 1.5 Ком, однако, это не 
  обязательная часть программатора и ее можно не собирать.

Вместо питания от контактов 6 и 18 LPT лучше использовать внешнее питание с БП компьютера. Длина проводов от LPT до микросхемы должны быть минимальна. Светодиод с резистором служат для индикации питания, можно обойтись без них. Диод служит для защиты от переполюсовки, если вы уверены, что подключили все правильно, можно обойтись без него. Конденсатор служит для предотвращения возможного возбуждения микросхемы, с большой натяжкой можно обойтись без него, но длина проводов от порта до микросхемы должна быть минимальной. Таким образом с некоторыми оговорками аппаратная часть программатора представляет собой только провода от порта LPT до микросхемы соответствующего типа.

SERP — Serial EEPROM ProgrammerПОДДЕРЖИВАЕМЫЕ ТИПЫ EEPROM:
i2c: 24C01,24C02,24C04,24C08,24C16,24C32,24C64,24C128,24C256.
microwire: 93C06,93C46,93C56,93C66,93C76,93C86,93C96.

SERP — Serial EEPROM ProgrammerУСТАНОВКА ПРОГРАМНОГО ОБЕСПЕЧЕНИЯ:

ОБЩЕЕ:
Как уже говорилось выше, что данный программатор подключается к параллельному порту компьютера, но для правильной его работы, вам необходимо выставить режим порта в BIOS’е как стандартный, обычно эта опция называется — «SPP», и крайне редко «Normal». Все это необходимо для работы i2c шины, т.е. для программирования микросхем серии 24CXX, если вам нужна работа только microwire EEPROM 93CXX, то в BIOS’е можно ничего не менять.
ПРИМЕЧАНИЕ: Параллельный порт(порт принтера) самая не защищенная часть в ПК, поэтому следуют помнить, что любые неправильные действия по отношении к нему, могут привести к выходу его из строя, т.е. его можно очень легко спалить. После сборки устройства, нужно очень тщательно проверить все соединения по нескольку раз и не в коем случае не допустить коротких замыканий между контактами панелек, если они не предусмотрены схемой, а так же контактов на самом разъеме DB-25. Смену микросхем в панельках рекомендуется производить после запуска программы программатора.

Windows 2000/XP/2003:
В DOSе и Windows’95/98/Me к параллельному порту можно было обращаться на прямую из программы, для этого не требовалось каких либо драйверов или еще что то, однако в Windows NT/2000/XP/2003 напрямую к порту обращаться нельзя из-за защищенного режима, для этого требуется установка специальных драйверов. При написании программы был выбран драйвер и API PortTalk’а — http://www.beyondlogic.org, на этом сайте вы можете найти его описание, исходники и полную документацию. Установка драйвера очень проста, для этого вам необходимо иметь права администратора и просто скопировать драйвер porttalk.sys в директорию WINDOWS(WINNT)\system32\drivers. Все остальные действия работы с этим драйвером возьмет на себя программа — serp.exe. Сразу после ее запуска появится приглашение:

serp>

Для получения справки можно ввести «?» или «h» или «H»:

serp> ?

Commands:

q Exit from programm

? This usage message

i Select i2c EEPROM mode for 24CXX

m Select microwire EEPROM mode for 93CXX


Допустим, что нам надо запрограммировать микросхему 93C56 с организацией памяти 8
бит:

serp> m

93C46 16bit> ?

Commands:

q Quit

c Full erase EEPROM

? This usage message

d Dump EEPROM, as hex

D Dump EEPROM, as hex

e Edit EEPROM, write value to address

f Erase EEPROM, filling with value

r Dump EEPROM into raw binary file

w Program EEPROM from raw binary file

t Set EEPROM device type (as 93C), default 46

b Set bit organization 8 or 16, default 16


В начале выберем нужный нам тип микросхемы:

93C46 16bit> t 56

93C56 16bit>


Установим режим 8 бит:

93C56 16bit> b 8

93C56 8bit>


Теперь необходимо считать данные из файла для прошивки и загрузить их в микросхему:

появится стандартное окно для выбора загружаемых файлов, выберем нужный нам файл и нажмем «OK»

programmed 256 bytes

verify EEPROM…OK!

93C56 8bit>


Можно просмотреть листинг кода в микросхеме

93C56 8bit> d

0x0000: FF FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF …………….

0x0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x0020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x0030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x0040: FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF FF …………….

0x0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x0060: FF FF FF FF 01 FF FF 01 FF FF FF FF FF FF FF FF …………….

0x0070: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x0080: FF FF FF FF FF FF 01 FF FF FF FF FF FF FF FF FF …………….

0x0090: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x00A0: FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF FF …………….

0x00B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x00C0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x00D0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

0x00E0: FF FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF …………….

0x00F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF …………….

93C56 8bit>


Если нам нужно считать данные из микросхемы в файл, то надо дать команду r, появится окно для сохранения файлов, введем имя и нажмем «OK». Все создаваемые файлы для чтения и записи имеют расширение BIN. Для 16-ти битного режима, все будет выглядеть аналогично, как и для 8-ми битного, делалось это для простоты редактирования и привычного чтения. Далее заострять внимание на работу с программой не имеет смысла, т.к. все можно понять из справки, которая выдается по команде «?» или «h» или «H».
Linux:

В начале соберем программу из исходников:


Далее необходимо получить доступ к параллельному порту, если вы будете использовать программу от root’а, то можете сразу подключить программатор к ПК и запустить программу, если нет, то вам понадобится настроить sudo, включить туда программу serp и тем самым разрешить доступ пользователю к порту. Все работает аналогично, как в примере, описанном выше, однако, с командами r и w нужно указывать имена файлов:

93C46 16bit> ?

Commands:

q Quit

c Full erase EEPROM

? This usage message

d Dump EEPROM, as hex

D Dump EEPROM, as hex

e Edit EEPROM, write value to address

f Erase EEPROM, filling with value

r Dump EEPROM into raw binary file

w Program EEPROM from raw binary file

t Set EEPROM device type (as 93C), default 46

b Set bit organization 8 or 16, default 16

SERP for Windows

SERP for Linux

SERP for Source

I2C программатор для компьютера. Заправка картриджей SAMSUNG CLP-300

Для заправки чипованных картриджей samsung clp-300 необходимы перепрограммируемые чипы памяти I2C, программатор и тонер. Принтер запоминает установленные в принтер картриджи — в каждом картридже установлен чип памяти I2C с уникальным индетификатором ID.


Чип картриджа CLP-300

Чипы 34С02 картриджа прошиты разовой прошивкой, для «новой» прошивки необходимо заменить чип на 24С02 (с питанием 2.8-5.5В), либо изготовить чип самостоятельно. Например в статье http://www.startcopy.ru/repair/chip_clp300.htm описан метод изготовления чипа. Для каждого из 4-х цветов изготовляется свой чип. После изготовления такой чип устанавливается вместо контактной площадки в картридже. Крепится либо на клей, либо желательно 2-хсторонним скотчом.


Выломать контактную площадку, установить «новый» чип в соответствии с выводами.

Для программирования чипа необходим I2C-программатор. Например EXTRAPIC. Либо самостоятельно изготовить простейший программатор. Схема «облегченного» программтора от EW3CS:


Схема программатора I2C (JDM программатор)

Детали: MAX232CPE, вместо 74LS00 использован К555ЛА3 (К155ЛА3). Вмещается в коробку с размерами 65мм на 45мм.


Фото программатора с креплением

Вместе с со всеми деталями программатор собран за пол дня, приблизительная стоимость — почти 300 р. Если чип приклеен к картриджу, то нужно изготовить контактную площадку. Обычно, чипы крепятся на 2-хсторонний скотч.

К сожалению данный вид программатора не работает с некоторыми USB-COM переходниками. С помощью программы PonyProg2000 сработался только с Prolific USB-to-Serial Comm да и то на очень низкой скорости. На компьютерах со встроеным COM-портом перепрограммирование происходит мгновенно. Уровни сигналов шины I2C выглядят следующим образом:


График уровней сигналов шины I2C (SDA и SCL)

Использую следующие прошивки CLP-300. Для каждого картриджа свой дамп. После выбора устройства программирования 24xx AUTO, необходимо открыть файл-дамп.

Для того чтобы сделать прошивку уникальной и принтер принимал картридж как «новый» необходимо выбрать прошивку, изменить 1-2 байта в двух местах прошивки следующим образом: установить галочку в понипрог меню Edit -> Edit buffer enabled. В строчке с ID картриджа изменить последние 1-2 байта (строка «CRUM-06071642755»):

Записать текущий дамп в чип, установить чип в картридж. При следующей заправке ID необходимо изменить.


Тонеры для заправки картриджей CLP-300

Для заправки тонером картриджей сбоку проделывается отверстие, куда засыпается тонер и закрывается скотчом в 2-3 слоя. Либо открыть верхнюю крышку картриджа засыпать тонер. Крышка приклеивается.

Установленый картридж принимается как «новый» с полным уровнем тонера 🙂

 

Art!P

Новое. Микроконтроллеры на интернет-аукционе Au.ru

Собран на основе чипа Ch441A.

ДРАЙВЕРА И СОФТ В КОМПЛЕКТ НЕ ВХОДЯТ и скачиваются САМОСТОЯТЕЛЬНО.

Ищём в google.com по запросу «Программатор Ch441A».

Поддержка микросхем:

AMIC:

A25L05P,A25L10P,A25L20P,A25L40P,A25L80P,A25L16P

ATMEL:

AT25DF041A,AT25DF321,AT25F004,AT25F512A,AT25F2048,AT25F4096, AT25F1024A,AT25FS010,AT25FS040,AT26DF081A,AT26DF161A, AT26DF321,AT26F004

EON:

EN25B05,EN25P05,EN25B10,EN25P10,EN25BF20,EN25P20, EN25F20,EN25B40,EN25P40,EN25F40,EN25B80,•EN25P80, EN25F80, EN25T80,EN25B16,EN25P16,EN25B32,EN25P32, EN25B64,EN25P64

Excel Semiconductor Inc.

ES25P10,ES25P20,ES25P40,ES25P80,ES25P16,ES25P32

ST:

M25P05A,M25P10A,M25P20,M25P40,M25P80,M25P16, M25P32,M25P64,M25PE10,M25PE20,M25PE40,M25PE80, M25PE16,M25PE32,M45PE10,M45PE20,M45PE40,M45PE80, M45PE16,M45PE32

MXIC:

MX25L512,MX25L1005,MX25L2005,MX25L4005,MX25L8005,MX25L1605, MX25L3205,MX25L6405

NexFlash:

NX25P80,NX25P16,NX25P32

Chingis Technology Corporation

Pm25LV512,Pm25LV010,Pm25LV020,Pm25LV040,Pm25LV080,Pm25LV016, Pm25LV032,Pm25LV064

Saifun Semiconductors

SA25F005,SA25F010,SA25F020,SA25F040,SA25F080,SA25F160,SA25F320,

Silicon Storage Technology SST

SST25VF512A,SST25LF010A,SST25VF010A,SST25LF020A,SST25VF020, SST25LF040A,SST25VF040B,SST25LF080A,SST25VF080B,SST25VF016B,SST25VF032B

WINBOND

W25P10,W25X10,W25Q10,W25P20,W25X20,W25Q20,W25P40,W25X40, W25Q40,W25P80,W25X80,W25Q80,W25P16,W25X16 24CXX 24LCXX 24C01, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, 24C128, 24C256, 24C512, 24C1024. 24LC01, 24LC02, 24LC04, 24LC08, 24LC16, 24LC32, 24LC64, 24LC128, 24LC256, 24LC512, 24LC1024

AVR

ATMEGA8 ATMEGA16 ATMEGA32 ATMEGA64 ATMEGA128 ATMEGA8515 ATMEGA8535ATMEGA48ATMEGA88 ATMEGA168 AT89S51 AT89S52

STC series chip 3.3V and 5V

STC89C51RC, STC89C52RC, STC89C53RC, STC89C54RD +, STC89C55RD +, STC89C58RD +, STC89C510RD +, STC89C512RD +, STC89C513RD +, STC89C514RD +, STC89C516RD +, STC89C58RD, STC89C561RD STC12C1052, STC12C2052, STC12C3052, STC12C4052, STC12C5052, STC12C1052AD, STC12C2052AD, STC12C3052AD, STC12C4052AD, STC12C5052AD STC11F01, STC11F02, STC11F03, STC11F04, STC11F05, STC11F01E, STC11F02E, STC11F03E, STC11F04E, STC11F05E STC10F02, STC10F04, STC10F06, STC10F08, STC10F010, STC10F012 STC12C5A60S2 Series STC12C5608AD Series

Программирование I2C с использованием последовательного программатора Xeltek IS01

Последовательные EEPROM подходят, когда в проекте требуется меньший объем энергонезависимой памяти для чтения / записи. Они небольшие и недорогие, что чрезвычайно полезно при использовании минимального количества входов / выходов. Существуют различные типы последовательных устройств EEPROM, которые можно разделить на категории на основе протокола связи, для которого они используются. Программирование ISP.

  • IIC (Интер интегральная схема),
  • SPI (последовательный периферийный интерфейс),
  • МВт (Micro Wire),
  • JTAG (Joint Test Action Group).

В этой статье мы обсудим Программирование EEPROM через интерфейс I²C с использованием программистов ISP, таких как Xeltek IS01.

I²C использует только два двунаправленных линии с открытым стоком, линия последовательной передачи данных (SDA) и последовательная синхронизация (SCL), подтянутые резисторами. Обычно используются напряжения +5 В или +3,3 В, хотя также допускаются системы с другими напряжениями.

24C04serial EEPROM поддерживает протокол I2C. Этот протокол определяет любое устройство, которое отправляет данные на шину как передатчик, и любое устройство, которое считывает данные как приемник.Устройство, которое управляет передачей данных, называется ведущим, а другое — ведомым. Мастер всегда будет инициировать передачу данных и предоставит последовательные часы для синхронизации. 24 / 25×04 всегда являются подчиненными устройствами во всех коммуникациях.

Чтобы программировать любую последовательную EEPROM в схеме, печатная плата должна быть спроектирована так, чтобы иметь возможность последовательного программирования. Следует иметь в виду следующие моменты:

  • Контакты последовательного входа, выхода и синхронизации должны быть отделены от остальной схемы и легко доступны извне.В противном случае сигналы могут конфликтовать, и правильное программирование может оказаться невозможным.
  • Если вывод питания устройства отделен от схемы, то на устройство может подаваться питание программатора. В противном случае на целевую плату необходимо подавать отдельное питание.

Давайте возьмем на примере микросхему M24C04 от Microchip, чтобы понять соединение с ISP-кабелем Xeltek. Суперпро IS01. Вот вывод микросхемы M24C04:

Разъем ISP с цветовой кодировкой, вид спереди Superpro IS01:

Таблица подключения:

Шаги операции программирования следующие:

1.Найдите тип микросхемы, с которой будет работать, в программном обеспечении ISP и просмотрите диалоговое окно «Информация об устройстве».

2. Подключите сигнальные линии (включая GND) к соответствующим интерфейсам Программист ISP с целевой платой.

3. Если должна использоваться вышеуказанная функция «массового производства», необходимо также подключить сигнальные линии TPIN и TPOUT.

4. Рекомендуется, чтобы питание целевой платы подавалось независимо, особенно для целевой платы с высоким энергопотреблением и с несколькими системами питания.Если подтверждается, что питание подается по кабелю ISP программатора, следует подключить VPP.

5. Независимый поставщик электроэнергии Целевая плата включает питание.

6. Запустите операции программирования, такие как стирание / пустая проверка / программа / проверка.

Помимо специализированного ISP-программиста SPIS01, параллельные автономные программисты любят SP6100 и SP611S также можно использовать для программирования ISP с помощью разъема заголовка ISP на сокете Zif48.

У вас есть вопросы?

Спросите нас сейчас

Программирование I2C EEPROM с использованием последовательной платформы Promira и последовательного программного обеспечения Control Center

Программирование I2C EEPROM с использованием последовательной платформы Promira и последовательного программного обеспечения Control Center

Введение

Программирование устройств памяти I2C — распространенный вариант использования платформы Promira с приложением I2C Active Level 1.Есть несколько способов сделать это с помощью платформы Promira, в том числе с помощью Control Center Serial, Flash Center или Promira API. Эта статья посвящена тому, как получить информацию из таблицы данных EEPROM и выполнить команды в Control Center Serial. В этой статье также показано, как настроить платформу Promira для подачи низкого напряжения на I2C EEPROM. Хотя ниже описывается EEPROM Microchip 24FC512 I2C с платой разъемов EEPROM — 10/34, аналогичные шаги можно использовать для других устройств.Цель этой статьи — продемонстрировать, как записать несколько байтов по определенному адресу, а затем прочитать эти байты.

Обзор

В этой статье платформа Promira является ведущим устройством I2C, а EEPROM I2C 24FC512 на плате разъемов EEPROM — 10/34 является ведомым устройством I2C. Платформа Promira подключается к 24FC512 1.8V PDIP-8 в разъеме EEPROM Socket Board — 10/34 через кабель 34-34 I2C / SPI. Платформа Promira подает сигналы I2C 1,8 В и сигнал VDD 1,8 В на I2C EEPROM 24FC512 на плате разъемов EEPROM — 10/34.Для получения дополнительной информации см. Рисунок 1: Блок-схема Promira и 24FC512, а также руководство пользователя платы EEPROM Socket Board 10/34.

Рисунок 1: Блок-схема Promira и 24FC512

24FC512 Детали

EEPROM 24FC512 I2C на Socket Board EEPROM 10/34 имеет конфигурируемый аппаратно целевой адрес I2C. Целевой адрес I2C по умолчанию — 1010000b, то есть 0x50. В этой статье используется целевой адрес I2C по умолчанию 0x50.Для получения дополнительной информации см. Рисунок 2: Формат управляющего байта 24FC512 и статью в базе знаний 7-битная, 8-битная и 10-битная адресация ведомого устройства I2C.

Рисунок 2: 24FC512 Формат управляющего байта

Здесь используется операция записи 24FC512 — запись страницы. Операция записи страницы в 24FC512 требует 7-битного адреса устройства, двухбайтового адреса памяти и двух или более байтов данных памяти. Для выполнения операции записи в память требуется одна команда от платформы Promira и Control Center Serial.В этом случае команда «Master Write» последовательного интерфейса Control Center включает адрес устройства (0x50), адрес памяти (0x0008) и данные памяти (0x0A 0x0B 0x0C).

Рисунок 3: Запись страницы 24FC512

Здесь используется операция чтения 24FC512 — последовательное чтение. Операция последовательного чтения 24FC512 сначала выполняет запись I2C с 7-битным адресом устройства, двухбайтовым адресом памяти и без остановки. Затем операция последовательного чтения 24FC512 выполняет чтение I2C с 7-битным адресом устройства, двумя или более байтами данных памяти и останавливается.Для выполнения операции чтения из памяти требуется одна команда от Promira Platform and Control Center Serial. В этом случае команда «Чтение главного регистра» последовательного интерфейса Control Center включает адрес устройства (0x50), адрес памяти (0x0008), ширину адреса (2 байта) и количество байтов данных (3). Для получения дополнительной информации см. Техническое описание 24FC512.

Рисунок 4: 24FC512 Последовательное чтение

Конфигурация платформы Promira

I2C EEPROM на плате разъемов EEPROM 10/34 принимает подтягивающие I2C, 1.Питание 8 В и сигналы I2C 1,8 В с платформы Promira. Для подачи подтягивающих сигналов I2C, питания 1,8 В и сигналов I2C 1,8 В в EEPROM I2C на плате разъемов EEPROM — 10/34, платформа Promira и последовательный порт Control Center должны быть настроены на включение подтягиваний I2C, Целевая мощность (контакты 4,6) в положение «Выкл.», Питание ввода-вывода (контакты 22,24) включено и сдвиг уровня на 1,8 В. Для получения дополнительной информации см. Руководство пользователя платформы Promira, руководство пользователя Control Center Serial и руководство пользователя EEPROM Socket Board 10/34.

Рекомендации по письму и чтению

      1. Подключите USB-разъем платформы Promira к USB-разъему ПК.
      2. Следуйте инструкциям в Разделе 3.2 «Возможности подключения» руководства пользователя платформы Promira для настройки интерфейса Ethernet через USB.
      3. Загрузите и разархивируйте последнюю версию Control Center Serial. (?)
      4. Подключите разъем I2C / SPI платформы Promira к разъему Promira Socket Board 10/34 с помощью кабеля 34-34, как показано на рисунке 6.На плате разъемов EEPROM 10/34 установите перемычки на VDD SOURCE: VLvl, J3 и J4: 1 и 2. На Socket Board EEPROM 10/34 установите провода на (?):
        1. J6 — 3 к J5 — 2 (белый, GND)
        2. J6 — 2 — J5 — 3 (фиолетовый, заземление)
        3. J6 — 1 до J5 — 4 (синий, заземление)
        4. J7 — 3 до J5 — 5 (зеленый, заземление)
        5. J6 — 4 — J5 — 1 (желтый, заземление)
        6. J10 — 1 до J7 — 4 (оранжевый, VDD)
        7. J9 — от SDA к J7 — 1 (красный, SDA)
        8. J9 — SCL к J7 — 2 (коричневый, SCL)
      5. Launch Control Center Serial.(?)
      6. Подключите Control Center Serial к платформе Promira. (?)
        1. Щелкните «Адаптер» и выберите «Подключиться».
        2. Выберите платформу Promira.
        3. Щелкните OK, чтобы подключиться к платформе Promira.
      7. Щелкните «Адаптер» и выберите «I2C + SPI».
      8. Нажмите «Адаптер», включите подтягивания I2C, отключите целевую мощность (контакты 4,6), включите мощность ввода-вывода (контакты 22,24) и настройте сдвиг уровня на 1.8В.
      9. Настройте адаптер как мастер I2C с помощью панели управления I2C. (?)
        1. Щелкните вкладку Master.
        2. Введите 1000 в прямоугольнике Bitrate и нажмите Set.
        3. Введите 0x50 в поле Slave Address. (?)
        4. Отключить 10-битный адрес и без остановки.
      10. Запишите 0A 0B 0C в 24FC512 по адресу памяти 00 08.
        1. Введите 00 08 0A 0B 0C в поле «Сообщение» и нажмите Master Write.
      11. Чтение 0A 0B 0C из 24FC512 в адресе памяти 00 08.
        1. Введите 0x0008 в адрес регистра
        2. Выберите 2 байта в ширине адреса
        3. Введите 3 в число байтов данных
        4. Щелкните «Чтение главного регистра» и убедитесь, что прочитанные данные — 0A 0B 0C.

Рисунок 5: Программы Promira 24FC512

Рисунок 6: Система программирования

Рисунок 7: Разъемная плата EEPROM

Банкноты

Для получения дополнительной информации см. Руководство пользователя платформы Promira, руководство пользователя Control Center Serial и руководство пользователя платы разъемов EEPROM — 10/34.

iBurner I2C Bus EEPROM Программатор Программное обеспечение

iBurner I2C Bus EEPROM Программатор
iBurner I 2 Программатор EEPROM шины C (V3.0)
Представляем iBurner V3.0 , наш бесплатно I 2 C Программирование EEPROM пакет программного обеспечения. Нажмите Скачать


Настройка программирования EEPROM iBurner

iBurner — это наш I 2 C Bus Serial Программный пакет EEPROM Programmer, который обеспечивает быстрый и простой способ Пустая проверка, программирование, чтение и проверка большого количества I 2 C EEPROM шины.iBurner включает библиотеку устройств со многими популярными I 2 C EEPROM устройства и поддерживает добавление ваших собственных дополнительных устройств.

iBurner V3.0 добавляет:

  • Поддержка нашего адаптера шины i2cStick I 2 C.
  • iBurner Script Engine Код выхода (0 = успех, -1 = сбой).
  • Пересмотренный графический интерфейс пользователя и пользовательский интерфейс Script Creator.
  • Механизм сценариев Внимание (звуковой сигнал) Операция .
  • Механизм сценариев Примеры автоматизации .
Поддерживается I 2 C Bus EEPROM База данных устройств (База данных устройств iBurner).

iBurner совместим с интерфейсом MCC ASCII на основе I 2 C Адаптеры шинного хоста, включая iPort / AI, iPort / AFM, iPort / USB и i2cStick. Системные требования включают Windows XP, Vista или 7 и Microsoft .NET. Framework V2.0 или выше.

ОСОБЕННОСТИ ПРОДУКТА
  • Проверка пропусков, программирование, чтение и проверка практически любой шины I 2 C EEPROM с вашего ПК.
  • Включает поддержку автоматизации программирования с помощью нашего инструмента Script Builder.
  • Поддерживает форматы файлов Hex, S-Record и Binary.
  • Поддерживает 7-битную адресацию в стандартном (100k) и быстром (400k) режимах I 2 C Автобусная деятельность.
  • Поддерживает внутрисистемное программирование на активной шине (с несколькими ведущими).
  • Поддерживает настраиваемый размер банка EEPROM, страницы и адреса слова.
  • Поддерживает настраиваемую тактовую частоту шины I 2 C.
  • Контрольные суммы CRC-16.
  • Встроенный I 2 C База данных устройства EEPROM.
  • Добавьте ваши устройства EEPROM в базу данных устройств.
  • Импорт или экспорт описаний устройств.
  • Автоматический журнал операций программирования.
  • Совместимость с MCC iPort / AI, iPort / AFM, iPort / USB и хостом i2cStick переходники.

Руководство пользователя (PDF)

V3.0 Редакции:

  1. Добавлена ​​поддержка адаптера шины i2cStick I2C Bus.
  2. Добавьте код выхода iBurner Script Engine (0 = успех, -1 = сбой).
  3. Сделайте поле счетчика адреса подчиненного устройства стрелкой вверх для увеличения адреса подчиненного устройства.
  4. Измените графический интерфейс и пользовательский интерфейс Script Creator.
  5. Добавьте операцию Beep в Script Creator.
  6. Добавить примеры автоматизации движка сценариев.
V2.2 Редакции:
  1. Улучшение проверки механизма сценариев, обработки ошибок и ведения журнала.
  2. Немедленное прекращение обработки скрипта при обнаружении ошибки команды. Выйти из команды принято, но больше не требуется.
  3. Правильная генерация смещения команды Script Creator Load.
  4. Добавить скрипт * команду звукового сигнала (звуковой сигнал компьютерного динамика).
  5. Добавить скрипт * команду настроек (записывать текущие настройки устройства).
  6. Оптимизация генерации скриптов Script Creator.
  7. Установите начальный буфер загрузки / сохранения и папку со сценариями.
V2.1 Редакции:
  1. Правильный доступ к регистру адреса многобайтовой (более 256 байт) EEPROM.
V2.0 Редакций:
  1. Поддержка автоматизации программирования с помощью инструмента Script Builder.
  2. Автоматически настраивает оптимальные параметры связи.
  3. Расширенная контрольная сумма EEPROM / буфера (CRC-16).
  4. Дополнительные определения устройств I2C EEPROM.
  5. Аудит операций с помощью встроенных средств ведения журнала.
Поддерживаемые хост-адаптеры: Обновление Распространение / лицензирование:
    Этот продукт, защищенный авторским правом, предлагается бесплатно нынешним владельцам наших iPort / AI, iPort / AFM, iPort / USB и i2cStick I 2 C Адаптеры хоста шины.Его использование регулируется Лицензионным соглашением с конечным пользователем MCC. включены в загружаемый пакет ниже.
Системные требования:
  • Windows XP, Vista или 7.
  • MS.NET Framework V2 или выше.
  • MCC iPort / AI, iPort / AFM, iPort / USB и i2cStick I 2 C Bus host адаптер.
Инструкции по загрузке и установке:

Чтобы установить эту версию iBurner на свой компьютер, выполните следующие действия. инструкции:

  1. Щелкните ссылку «Загрузить» ниже и сохраните файл в папке для загрузки или во временном хранилище. папку на вашем компьютере под управлением Windows.
  2. После завершения загрузки дважды щелкните файл, который нужно установить. Следовать на экране инструкции.
  3. После установки нажмите Пуск | Программы | iBurner | iBurner для запуска программа.
  4. Дополнительные инструкции см. В Руководстве пользователя.
Нажмите, чтобы загрузить iBurner 3.0 (1,3 МБ, iBurner + Руководство пользователя)

Считаете ли вы iBurner полезным? Нам нужны ваши Отзыв .



Ch441A Программатор USB в UART Конвертер IIC SPI I2C Параллельный порт Преобразователь Встроенный индикатор работы Модуль платы: Amazon.com: Industrial & Scientific


В настоящее время недоступен.
Мы не знаем, когда и появится ли этот товар в наличии.
  • Убедитесь, что он подходит, введя номер своей модели.
  • Товар хорошего качества.Проверено перед отправкой. Вес упаковки: Вес: 0,017 кг (0,04 фунта)
  • Мы проверим продукт перед отправкой. Расчетный срок доставки: 6-24 дня (отслеживаемый) —— Мы обеспечиваем ускоренную доставку: 2-7 дней. (без учета времени обработки) .Если сумма заказа превышает 120 долларов США, мы бесплатно воспользуемся услугой ускоренной доставки.
  • Мы — профессиональный дистрибьютор электронных компонентов. Мы также продаем другие виды продукции.просто найдите номер модели в нашем магазине.
  • Мы делаем все возможное, чтобы предоставить клиентам удовлетворительное обслуживание. Любой вопрос, пожалуйста, свяжитесь со мной.
]]>
Спецификации для этого элемента
Фирменное наименование Paialu
Ean 4552302206155
Номер детали paiModule_10574
paiModule_10574 9048

I2C EEPROM Программирование с использованием пакетного режима адаптера Aardvark

Программирование и чтение устройств памяти I2C — это распространенный вариант использования хост-адаптера Aardvark I2C / SPI.Есть несколько способов сделать это с адаптером Aardvark, в том числе с помощью Control Center, Flash Center или API Aardvark. В этой статье основное внимание уделяется тому, как получить информацию из таблицы данных EEPROM и выполнить команды в пакетном режиме Control Center. Хотя ниже описывается EEPROM AT24C02 I2C, установленная на плате активности I2C / SPI, аналогичные шаги можно использовать для других устройств. Цель этой статьи — продемонстрировать, как записать несколько байтов по определенному адресу, а затем прочитать эти байты.

Адаптер Aardvark является мастером I2C, а Atmel I2C EEPROM AT24C02 на плате активности I2C / SPI является ведомым устройством I2C.

AT24C02 Подробный

Сигналы SCL (последовательный тактовый вход) и SDA (последовательные данные) AT24C02 подключаются к сигналам SCL и SDA адаптера Aardvark соответственно. Сигналы AT24C02 A0 — A2 (ввод адреса), WP (защита от записи) и GND (земля) соединены с землей. Сигнал AT24C02 VCC (источник питания) подключен к напряжению 3,3 В.

Распиновка AT24C02

EEPROM I2C AT24C02 на плате активности имеет настраиваемый аппаратно целевой адрес I2C. Целевой адрес I2C по умолчанию — 1010000b, то есть 0x50. В этой статье используется целевой адрес I2C по умолчанию 0x50. Для получения дополнительной информации см. Статью базы знаний 7-битная, 8-битная и 10-битная адресация ведомого устройства I2C.

AT24C02 на плате активности I2C / SPI получает подтягивающие сигналы I2C и питание от адаптера Aardvark.Для подачи подтягивающих сигналов I2C и целевой мощности на плату Activity, адаптер Aardvark и Центр управления настраиваются с помощью пакетной команды «configure» в режим I2C / SPI (i2c = «1» spi = «1» gpio = «0»), подтяжки I2C включены (pullups = «1») и целевая мощность включена (tpower = «1»). Для получения дополнительной информации см. Руководство пользователя платы активности I2C / SPI.

Здесь используется операция записи AT24C02 — запись страницы. Операция записи страницы в AT24C02 требует 7-битного адреса устройства, одного байта адреса памяти и двух или более байтов данных памяти.Для выполнения операции записи в память с адаптером Aardvark требуется одна команда от адаптера и Центра управления. В этом случае пример пакетного режима Центра управления «i2c-eeprom-write» используется для выполнения 256 команд «i2c_write» данных 0x00 — 0xFF по адресам памяти от 0x00 до 0xFF с адресом устройства I2C 0x50. Например, взгляните на первую и последнюю команды i2c_write.

00 00
FF FF

Первая команда включает адрес устройства (addr = «0x50»), количество байтов данных (count = «2»), формат данных (radix = «16»), адрес памяти (0x00) и данные памяти (0x00). .В то время как последняя команда «i2c_write» включает адрес устройства I2C (addr = «0x50»), количество байтов данных (count = «2»), формат данных (radix = «16»), адрес памяти (0xFF) и память данные (0xFF).

AT240C Запись страницы

Операция чтения AT240C, используемая здесь, — это последовательное чтение. Операция последовательного чтения AT240C сначала выполняет запись I2C с 7-битным адресом устройства, однобайтовым адресом памяти и без остановки. Затем операция последовательного чтения AT240C выполняет чтение I2C с 7-битным адресом устройства, двумя или более байтами данных памяти и останавливается.Для выполнения операции чтения из памяти с помощью адаптера Aardvark требуются две команды от адаптера и пакетный режим Control Center. В этом случае пример пакетного режима Центра управления «i2c-eeprom-read» используется для выполнения чтения 256 байтов с адреса 00 с адресом устройства I2C 0x50. В этой статье операция чтения памяти включает следующие две команды для адаптера Aardvark и пакетного режима Control Center:

00

  1. Первая команда — «i2c_write», включая адрес устройства I2C (addr = «0x50»), количество байтов данных (count = «1»), формат данных (radix = «16»), адрес памяти (0x00), без остановки (nostop = «1»).Эта команда записи предназначена для настройки внутреннего счетчика адреса слова данных на определенный адрес (0x00).
  2. Вторая команда — это «i2c_read», включая адрес устройства I2C (addr = «0x50») и количество байтов данных (count = «256»). Эта команда чтения предназначена для чтения данных, начиная с адреса 0x00.

Для получения дополнительной информации см. Техническое описание AT24C02.

Рисунок 3: Последовательное чтение AT240C

Рекомендации по письму и чтению

  1. Загрузите и запустите последнюю версию установщика Total Phase USB Drivers Installer.
  2. Загрузите и разархивируйте последнюю версию Control Center.
  3. Подключите адаптер Aardvark к ПК через разъем USB.
  4. Подключите адаптер Aardvark к плате активности I2C / SPI через разъем I2C / SPI.
  5. Центр управления запуском.
  6. Подключитесь к адаптеру Aardvark.
    1. Щелкните «Настроить адаптер Aardvark».
    2. Выберите адаптер Aardvark.
    3. Нажмите ОК, чтобы подключиться к адаптеру.
  7. Щелкните Aardvark и выберите Batch Mode.
  8. Запись в память
    1. Щелкните Загрузить и выберите i2c-eeprom-write.
    2. Щелкните «Открыть» и «Выполнить».

Адаптер Aardvark записывает 256 байтов в AT24C02

9. Считать из памяти (?)

Щелкните Загрузить и выберите i2c-eeprom-read.
Щелкните «Открыть» и «Выполнить».


Адаптер Aardvark считывает 256 байтов с AT24C02

I2C Часть 4 Программирование I²C с Python с Raspbian Linux на Raspberry Pi

Как начать программировать I²C с помощью Python


Создано: 05.09.2020 | Последнее обновление: 22.05.2021

Это руководство является четвертым в серии из четырех частей, посвященных протоколу связи I²C; объясняя, что это такое, как оно работает и как вы можете использовать его на своем Raspberry Pi.
Для просмотра других руководств этой серии щелкните по ссылкам ниже.

Python — один из самых популярных языков программирования на Raspberry Pi, который используется для широкого спектра приложений, от управления оборудованием до веб-разработки. В этом руководстве мы рассмотрим, как вы используете Python для управления устройством, подключенным к шине I²C Raspberry Pi.

Устройство, которым мы будем управлять, — это контроллер ввода-вывода MCP23017 от Microchip. Это популярный интерфейс ввода-вывода с 16 контактами GPIO, который используется на наших платах расширения IO Pi Plus и IO Pi Zero.Хотя это руководство предназначено для MCP23017, те же принципы применимы почти ко всем доступным устройствам I²C.

Код этого руководства можно найти в нашем репозитории GitHub.

The MCP23017 — Краткий обзор

Вы можете загрузить техническое описание MCP23017 от Microchip по адресу http://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf

MCP23017 имеет 16 контактов двунаправленного ввода-вывода, разделенных на два 8-битных порта с именами Port A и Port B. Порт A управляет контактами с 1 по 8, а порт B — с контактами с 9 по 16.

Управление этими выводами ввода / вывода осуществляется путем чтения и записи в регистры внутри микросхемы. Регистр — это часть памяти размером 8 бит, доступ к которой можно получить по указанному адресу. В MCP23017 есть 21 регистр, 10 из которых связаны с портом A, 10 — с портом B, а также регистр управления, который используется совместно обоими портами. Мы более подробно рассмотрим, как работают некоторые регистры позже в руководстве, но вы можете найти список регистров и их функций на странице 17 в таблице данных.

В шестнадцатеричном формате

При работе с таким оборудованием, как шины I²C, вы обычно видите числа в программах и технических данных устройства в шестнадцатеричном формате. Компьютеры обычно работают с числами как с байтами. Байт — это значение размером 8 бит.

Есть несколько способов представления 8-битного числа. Вы можете использовать двоичный код для отображения каждого из 8 бит по отдельности. 10000111. В десятичном формате это же число будет отображаться как 135. В шестнадцатеричном формате число будет отображаться как 87.

Шестнадцатеричный имеет то преимущество, что любое 8-битное число может быть представлено двумя символами, поэтому 11111111 становится 255 в десятичном виде, а FF в шестнадцатеричном. Это позволяет легко увидеть, сколько байтов содержит число, в зависимости от количества символов в номере. Количество байтов — это всегда количество символов, разделенное на два.

  • 00 = 1 байт или 8 бит
  • 0000 = 2 байта или 16 бит
  • 00000000 = 4 байта или 32 бита.

В Python для представления шестнадцатеричного числа в начало числа добавляются символы «0x», например «0xFE».Двоичные числа имеют добавленный «0b» в начало числа, например «0b11111110».

В этом уроке все числа будут показаны в шестнадцатеричном формате. Чтобы помочь вам преобразовать числа между двоичными, десятичными и шестнадцатеричными, у нас есть конвертер на нашем веб-сайте по адресу https://www.abelectronics.co.uk/tools/valueconverter

Начало работы

Прежде чем мы начнем писать код для взаимодействия с шиной I²C, нам понадобится базовый шаблон для программы на Python. Код ниже — это все, что вам нужно для начала.

#! / usr / bin / env python

def main ():
    '' '
    Основная функция программы
    '' '


если __name__ == "__main__":
    главный()

 

Библиотека smbus

Для подключения к шине I²C в Python вам понадобится библиотека, которая занимается деталями взаимодействия с оборудованием Raspberry Pi. В этом руководстве мы будем использовать библиотеку smbus , которая входит в состав Raspbian Linux.

В верхней части программы под первой строкой импортируйте класс SMBus из библиотеки smbus .

из smbus импорт SMBus 

Мы также будем использовать функцию time.sleep , чтобы приостановить программу, поэтому также импортируйте библиотеку времени.

время ввоза 

Класс SMBus включает ряд функций для чтения и записи на шину I²C. Сводка доступных функций приведена ниже.

Функция

Описание

Параметры

Возвращаемое значение

Доступ к SMBus

write_quick (адрес)

Быстрая сделка.

внутренний адрес

длинный

read_byte (адрес)

Чтение байтовой транзакции.

внутренний адрес

длинный

write_byte (адрес, значение)

Запись байта транзакции.

int адрес, char val

длинный

read_byte_data (адрес, cmd)

Транзакция чтения байтовых данных.

int адрес, char cmd

длинный

write_byte_data (адрес, cmd, val)

Запись байтовых данных транзакции.

int адрес, char cmd, char val

длинный

read_word_data (адрес, cmd)

Операция чтения данных Word.

int адрес, char cmd

длинный

write_word_data (адрес, cmd, val)

Запись транзакции данных Word.

int адрес, char cmd, int val

длинный

process_call (адрес, cmd, val)

Обработка транзакции вызова.

int адрес, char cmd, int val

длинный

read_block_data (адрес, cmd)

Транзакция чтения данных блока.

int адрес, char cmd

длинный []

write_block_data (адрес, cmd, vals)

Транзакция записи данных блока.

int addr, char cmd, long []

Нет

block_process_call (адрес, cmd, vals)

Транзакция Block Process Call.

int addr, char cmd, long []

длинный []

I²C Access

read_i2c_block_data (адрес, cmd)

Блокировать транзакцию чтения.

int адрес, char cmd

длинный []

write_i2c_block_data (адрес, cmd, vals)

Блокировка транзакции записи.

int addr, char cmd, long []

Нет

В этом руководстве мы будем использовать следующие функции: write_byte_data () , write_word_data () и read_byte_data () , которые позволяют записывать и читать данные из адресов регистров на устройстве I²C.

Определение регистров

MCP23017 имеет 21 регистр, используемый для управления устройством, пронумерованных от 0x00 до 0x15.Например, чтобы установить направление порта B, вы должны записать в регистр 0x01, чтобы читать из порта A, вы читаете регистр 0x12. Вся программа может быть написана путем чтения и записи в регистры с использованием их пронумерованных адресов, однако это затруднит чтение кода, особенно если вы вернетесь к нему через несколько месяцев и не сможете вспомнить, что означает каждое число. Чтобы упростить задачу, мы дадим каждому регистру имя в зависимости от его функции. В таблице данных MCP23017 есть список имен регистров, поэтому мы будем их использовать.

В большинстве языков программирования есть возможность создавать переменную, доступную только для чтения, называемую константой. Python не имеет возможности определять постоянную переменную, поэтому по соглашению она отображается как только для чтения с использованием всех заглавных букв. Поскольку адреса регистров не изменятся, мы будем использовать имена с заглавной буквы для каждой переменной.

Внутри функции main () добавьте список адресов регистров.

    # Определить значения регистров из таблицы
    IODIRA = 0x00 # направление ввода-вывода A - 1 = вход 0 = выход
    IODIRB = 0x01 # направление ввода-вывода B - 1 = вход 0 = выход
    IPOLA = 0x02 # Полярность входа A
    IPOLB = 0x03 # Полярность входа B
    GPINTENA = 0x04 # Замена прерывания A
    GPINTENB = 0x05 # Замена прерывания B
    DEFVALA = 0x06 # Значение по умолчанию для порта A
    DEFVALB = 0x07 # Значение по умолчанию для порта B
    INTCONA = 0x08 # Регистр управления прерываниями для порта A
    INTCONB = 0x09 # Регистр управления прерываниями для порта B
    IOCON = 0x0A # Регистр конфигурации
    GPPUA = 0x0C # Подтягивающие резисторы для порта A
    GPPUB = 0x0D # Подтягивающие резисторы для порта B
    INTFA = 0x0E # Условие прерывания для порта A
    INTFB = 0x0F # Условие прерывания для порта B
    INTCAPA = 0x10 # захват прерывания для порта A
    INTCAPB = 0x11 # Захват прерывания для порта B
    GPIOA = 0x12 # Порт данных A
    GPIOB = 0x13 # Порт данных B
    OLATA = 0x14 # Выходные защелки A
    OLATB = 0x15 # Выходные защелки B
 

Создание объекта SMBus

Объект SMBus представляет физическую шину I²C на Raspberry Pi.Все команды для отправки и получения данных через шину проходят через объект SMBus, поэтому для того, чтобы наша программа могла получить доступ к шине I²C, нам нужно будет создать экземпляр объекта SMBus.

SMBus принимает единственный параметр, который является идентификатором шины I²C, которую вы хотите использовать. Оригинальные модели Raspberry Pi A и B с 26-контактным разъемом GPIO имели идентификатор шины 0, в то время как более новые модели с 40-контактным разъемом GPIO имели идентификатор шины 1.

Создайте экземпляр объекта SMBus с именем i2cbus в списке адресов регистров.

   i2cbus = SMBus (1) # Создать новую шину I2C 

Адрес устройства

Каждое устройство на шине I²C имеет уникальный 7-битный адрес. Более подробную информацию о том, как работают адреса I²C, можно найти в первой части нашей серии руководств по I²C.

MCP23017 имеет три адресных контакта, которые позволяют пользователю установить адрес I²C из 7 возможных вариантов от 0x20 до 0x27, установив для каждого адресного контакта высокий или низкий уровень. Адрес по умолчанию, когда на всех выводах адреса низкий уровень — 0x20, поэтому в этом руководстве мы будем использовать этот адрес.Если ваше устройство настроено на другой адрес, вы можете использовать это значение.

Создайте переменную i2caddress со значением 0x20.

    i2caddress = 0x20 # Адрес устройства MCP23017 

Регистр управления

Если вы читали техническое описание MCP23017, то, возможно, заметили, что чип имеет два списка адресов регистров. В первом списке регистры, связанные с каждым портом, разделены на разные банки, а во втором списке регистры находятся в одном банке, а адреса являются последовательными.Чтобы гарантировать, что наш список регистровых переменных указывает на правильные адреса, мы должны сообщить MCP23017, какую версию списка регистров мы хотим использовать. Делаем это установкой контрольного регистра.

Регистр управления IOCON имеет размер 8 бит, и каждый бит управляет отдельной частью функций микросхемы. Список битов и их использование показаны ниже.

Бит

Функция

7

БАНК: Управляет адресом регистров
1 = регистры, связанные с каждым портом, разделены на разные банки.
0 = регистры находятся в одном банке (адреса идут последовательно

6

ЗЕРКАЛО: INT Пины Зеркало

1 = Контакты INT имеют внутреннее соединение

0 = Контакты INT не подключены. INTA связан с PORTA, а INTB связан с PORTB

.

5

SEQOP: бит режима последовательной работы

1 = Последовательная работа отключена; указатель адреса не увеличивается.

0 = Последовательная работа разрешена; приращение указателя адреса

4

DISSLW: Бит управления скоростью нарастания для выхода SDA

1 = скорость нарастания отключена

0 = скорость нарастания разрешена

3

HAEN: Бит разрешения аппаратного адреса (только MCP23S17)

1 = Включает контакты адреса MCP23S17.

0 = Отключает контакты адреса MCP23S17

2

ODR: Настраивает вывод INT как выход с открытым стоком

1 = Выход с открытым стоком (отменяет бит INTPOL).

0 = Активный выход драйвера (бит INTPOL устанавливает полярность.

1

INTPOL: Этот бит устанавливает полярность вывода INT

.

1 = высокий активный

0 = активный низкий

0

Не реализовано: Читается как «0»

Банки регистров управляются с помощью бита 7, и мы хотим, чтобы адреса регистров были последовательными, поэтому мы установим этот бит в 0.

Использование последовательных адресов регистров дает нам возможность одновременно обновлять оба порта на шине, записывая в два адреса регистров последовательно двумя байтами. Чтобы включить это, нам нужно будет включить последовательный режим работы, установив бит 5 в 0.

По умолчанию, два контакта прерывания установлены на активный низкий уровень, это означает, что два контакта будут выводить мощность, когда функция прерывания не используется. Мы можем отключить контакты по умолчанию, установив бит 1 в 1.

Биты 6, 4, 3, 2 и 0 можно оставить в их состоянии по умолчанию, равном 0, поэтому единственный бит, который необходимо установить в 1, — это бит 1. Это дает нам значение 0b00000010 или 0x02.

Для записи значения в регистр IOCON мы будем использовать функцию write_byte_data (адрес, регистр, значение). write_byte_data принимает три параметра: адрес устройства, регистр для записи и 8-битное значение для записи. Мы хотим записать на адрес I²C, определенный в переменной i2caddress, регистре IOCON и значение 0x02, поэтому мы добавим в программу следующий код.

    i2cbus.write_byte_data (i2caddress, IOCON, 0x02) # Обновить регистр конфигурации 

Установка направления порта

Каждый вывод MCP23017 можно индивидуально настроить как вход или выход. Два регистра управляют направлением портов, IODIRA и IODIRB. IODIRA управляет портом A, контактами с 1 по 8, а IODIRB управляет портом B, контактами с 9 по 16. Чтобы установить контакт в качестве входа, используется значение 1, чтобы установить его в качестве выхода, используется значение 0.

В этом руководстве мы настроим порт A как выходы, а порт B как входы.Мы могли бы сделать это, дважды используя функцию write_byte_data (), чтобы сначала обновить IODIRA, а затем IODIRB, но в регистре управления мы включили последовательную запись, что означает, что мы можем обновить оба регистра направления, записав два байта в устройство. Для этого мы будем использовать функцию write_word_data (адрес, регистр, значение). write_word_data принимает тот же адрес и значения регистра, что и функция write_byte_data, но для своего третьего параметра она принимает 16-битное значение.

Записывая 16-битное значение на шину I²C по адресу регистра IODIRA, MCP23017 обновляет регистр IODIRA младшими 8 битами и регистр IODIRB старшими 8 битами, позволяя нам обновить все 16 контактов за одну операцию. .

Чтобы установить контакты с 1 по 8 в качестве выходов, мы устанавливаем их значения на 0, а чтобы установить контакты с 9 по 16 в качестве входов, мы устанавливаем их значения на 1, поэтому для одновременного обновления всех контактов нам нужно будет записать 0b1111111100000000 или 0xFF00 в регистр ИОДИРА. Добавьте в программу следующий код.

    i2cbus.write_word_data (i2caddress, IODIRA, 0xFF00) # Установить порт A как выходы и порт B как входы 

Чтение и запись в порты

Установив регистр конфигурации и настроив направление порта, мы можем теперь начать чтение и запись в порты.

Сначала создайте цикл while, который будет выполняться вечно.

    в то время как (True): 

Для чтения входных данных порта B мы будем использовать функцию read_byte_data (адрес, регистр). read_byte_data принимает два параметра, адрес устройства и целевой регистр, и возвращает один байт.

Мы устанавливаем порт B в качестве входов, поэтому мы будем читать из регистра GPIOB, сохранять его в переменной с именем portb и выводить эту переменную на консоль.

        портb = i2cbus.read_byte_data (i2caddress, GPIOB) # Прочитать значение порта B
        print (portb) # распечатать значение порта B
 

Чтобы записать значение в порт A, у нас есть два доступных варианта: мы можем записать непосредственно в регистр GPIOA или в выходные защелки, используя регистр OLATA.

Когда вы записываете в регистр GPIO, значение отправляется прямо в порт, обновляя все контакты. Запись в регистр OLAT обновляет только выводы, которые установлены как выходы. Поскольку мы установили все контакты порта A в качестве выходов, разницы между записью в регистры GPIO или OLAT не будет, поэтому мы обновим контакты, записывая данные непосредственно в регистр GPIO.

Чтобы увидеть изменение вывода на мультиметре, осциллографе или логическом анализаторе, мы включим контакт 1, переведем в спящий режим на 500 миллисекунд, выключим контакт 1 и подождем еще 500 миллисекунд. Это даст нам прямоугольную волну длительностью примерно 1 секунду. Это не будет точно 1 секунда, поскольку мы также считываем данные из порта B в каждом цикле, который занимает около 2 миллисекунд, когда тактовая частота I²C составляет 100 кГц.

Мы запишем в регистр GPIOA с помощью функции write_byte_data () значение 0x01, чтобы включить только контакт 1, и запишем значение 0x00, чтобы выключить контакт 1.Функция time.sleep () будет использоваться для ожидания 500 мс между каждым вызовом функции записи.

        i2cbus.write_byte_data (i2caddress, GPIOA, 0x01) # Установить контакт 1 во включенное состояние
        time.sleep (0.5) # Ждем 500 мс

        i2cbus.write_byte_data (i2caddress, GPIOA, 0x00) # Отключить вывод 1
        time.sleep (0.5) # Ждем 500 мс
 

Запуск программы

Ваша программа должна быть завершена и готова к запуску. Полный код показан ниже.

#! / usr / bin / env python

из smbus импорт SMBus
время импорта

def main ():
    '' '
    Основная функция программы
    '' '
    # Определить значения регистров из таблицы
    IODIRA = 0x00 # направление ввода-вывода A - 1 = вход 0 = выход
    IODIRB = 0x01 # направление ввода-вывода B - 1 = вход 0 = выход
    IPOLA = 0x02 # Полярность входа A
    IPOLB = 0x03 # Полярность входа B
    GPINTENA = 0x04 # Замена прерывания A
    GPINTENB = 0x05 # Замена прерывания B
    DEFVALA = 0x06 # Значение по умолчанию для порта A
    DEFVALB = 0x07 # Значение по умолчанию для порта B
    INTCONA = 0x08 # Регистр управления прерываниями для порта A
    INTCONB = 0x09 # Регистр управления прерываниями для порта B
    IOCON = 0x0A # Регистр конфигурации
    GPPUA = 0x0C # Подтягивающие резисторы для порта A
    GPPUB = 0x0D # Подтягивающие резисторы для порта B
    INTFA = 0x0E # Условие прерывания для порта A
    INTFB = 0x0F # Условие прерывания для порта B
    INTCAPA = 0x10 # захват прерывания для порта A
    INTCAPB = 0x11 # Захват прерывания для порта B
    GPIOA = 0x12 # Порт данных A
    GPIOB = 0x13 # Порт данных B
    OLATA = 0x14 # Выходные защелки A
    OLATB = 0x15 # Выходные защелки B

    i2cbus = SMBus (1) # Создать новую шину I2C
    i2caddress = 0x20 # Адрес устройства MCP23017

    i2cbus.write_byte_data (i2caddress, IOCON, 0x02) # Обновить регистр конфигурации

    i2cbus.write_word_data (i2caddress, IODIRA, 0xFF00) # Установить порт A как выходы и порт B как входы

    в то время как (Истина):
        portb = i2cbus.read_byte_data (i2caddress, GPIOB) # Прочитать значение порта B
        print (portb) # распечатать значение порта B

        i2cbus.write_byte_data (i2caddress, GPIOA, 0x01) # Установить контакт 1 во включенное состояние
        time.sleep (0.5) # Ждем 500 мс

        i2cbus.write_byte_data (i2caddress, GPIOA, 0x00) # Отключить вывод 1
        time.sleep (0.5) # Ждем 500 мс


если __name__ == "__main__":
    главный()

 

Сохраните вашу программу python как i2c.py и запустите ее с помощью следующей команды.

Python i2c.py 

Контакт 1 порта A будет выводить прямоугольный сигнал, и значение из порта B должно записываться на консоль каждую секунду в десятичном формате. Если подтянуть контакт к высокому уровню, подключив его к источнику напряжения, это изменит отображаемое число, например, установка высокого уровня вывода 12 будет читаться как 8 или 0b00001000.

Заключение

В этом руководстве мы узнали, как использовать Python для создания объекта I²C SMBus, чтения и записи в регистры устройства. Хотя приведенный здесь код использовался на микросхеме MCP23017, его можно модифицировать для работы со многими устройствами I²C.


Часть 3. Инструменты I²C в Linux

Примечание: для просмотра документов в формате Portable Document Format (PDF) требуется Adobe Acrobat Reader 5.0 или выше, загрузите Adobe Acrobat Reader или другое программное обеспечение для чтения PDF на свой компьютер или мобильное устройство.

Оценочная плата

USB-I2C_LIN-CONV-Z | Аналоговые устройства

{{#each ModelList}} {{#ifCond ModelName ../ModelName}} {{#if PDNInfoModelList}} {{#ifCond PDNInfoModelList.length 0}} {{else}}
{{../../../../PDNSectionTitleTranslation}}
{{#each PDNInfoModelList}} {{/каждый}}

{{../../../../PDNNumberTitleTranslation}}

{{../../../../PCNPDNTitleTranslation}}

{{../../../../PCNPDNPublishDateTranslation}}

{{ProductChangeNo}} {{#ifCond IsApplicable false}}
{{/ ifCond}}
{{Title}} {{PublishDate}}
{{/ ifCond}} {{/ if}} {{/ ifCond}} {{/ each}} {{#each ModelList}} {{#ifCond ModelName../ModelName}} {{#if PCNPDNInfoModelList}} {{#ifCond PCNPDNInfoModelList.length 0}} {{else}}
{{../../../../PCNPDNSectionTitleTranslation}}
{{#each PCNPDNInfoModelList}} {{/каждый}}

{{../../../../PCNPDNNumberTitleTranslation}}

{{../../../../PCNPDNTitleTranslation}}

{{../../../../PCNPDNPublishDateTranslation}}

{{ProductChangeNo}} {{#ifCond IsApplicable false}}
{{/ ifCond}}
{{Title}} {{PublishDate}}
{{/ ifCond}} {{/ if}} {{/ ifCond}} {{/ each}} .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *