Наш магазин на eBay Наш канал в telegram

101 применение шлюза UART-to-I2C/SPI/1W (RH-0004). Часть 8. USB программатор микросхем с интерфейсом 1-Wire

Так уж сложилось, что программы для работы через шлюз с I2C и SPI микросхемами сразу были рассчитаны на работу с большим количеством чипов, а если нужно было добавить возможность программировать ещё какую-то микросхему, то я просто расширял функционал этих программ. В то же время ситуация с программированием через шлюз 1-Wire микросхем развивалась иначе, — для каждой конкретной микросхемы я писал отдельную программу.

У такого решения было несколько причин:

  • Во-первых, устройства 1-Wire гораздо сильнее отличаются друг от друга по функционалу и набору команд, чем устройства SPI и I2C.
  • Во-вторых, изначально я полагал, что люди сами будут писать программы для работы со шлюзом, а я только покажу пару примеров. Для этого я полностью открыл API, написал DLL-ку, однако… почему-то не все вокруг оказались программистами (хм, неожиданно).

В общем, в итоге я оказался неправ, люди хотели не писать программы, а пользоваться готовыми. Ну, ок, пусть будет так. Cегодня я представляю вашему вниманию единую программу для работы через шлюз с микросхемами 1-Wire. То есть теперь шлюз RH-0004 можно будет использовать как полноценный USB-программатор различных устройств с интерфейсом 1-Wire.

С точки зрения железа всё стандартно и аналогично USB-программаторам I2C и SPI. Нам понадобится сам шлюз RH-0004 + конвертер USB-to-UART RH-0003. UART-разъём конвертера — это ответная часть UART-разъёма шлюза, поэтому для их соединения вам не придётся ничего изобретать. Конвертер позволяет не только организовать обмен данными между шлюзом и компьютером, но и запитать шлюз (причём любым напряжением: +3,3В или +5В, оба они присутствуют на разъёме конвертера как раз в нужных местах). Всё вместе это выглядит вот так:

USB-программатор 1-Wire

Теперь переходим к программной части.

Во-первых, нужно установить на компьютер драйвера для USB-to-UART конвертера. Конвертер сделан на базе чипа cp2102 фирмы silabs, дрова для него (VCP Drivers) можно скачать на их официальном сайте, вот по этой ссылке.

После установки драйверов на USB-to-UART конвертер у вас на компьютере появляется виртуальный com-порт, через который специально написанная программа может общаться со шлюзом. Эта программа сама устанавливает нужный для данного чипа режим 1-Wire и реализует нужные для работы с чипом алгоритмы. Ссылки для скачивания смотрите в конце статьи).

Окно программы показано на картинках ниже.

программа для работы с USB-программатором 1-Wire
программа для работы с USB-программатором 1-Wire

Работать с программой достаточно просто, — выбираем com-порт, выбираем чип, вводим ROM, подключаемся и можем c этим чипом работать. Либо просто запускаем поиск, который найдёт и отобразит в специальном окне все подключенные к шлюзу устройства 1-Wire, а нам останется только выбрать нужное устройство, щёлкнув по нему правой кнопкой мыши и подтвердив выбор во всплывающем контекстном меню. Для удобства в правом верхнем углу программы отображается схема подключения шлюза к выбранному чипу (к каким ногам что подключать).

Через верхнее меню доступны сохранение / загрузка данных памяти в файлы форматов bin и hex, сохранение логов работы в текстовые файлы, выбор языка (пока только английский и русский). Кроме того, специально добавил возможность ручного ввода ROM, на случай, если вдруг у чипа он окажется нестандартным (я такого ни разу не видел, но пользователи писали, что такое бывает).

Если нужного чипа нет в списке — можно написать на форум или в личку админу (rhf-admin) письмо с указанием того, какой чип вы хотели бы добавить. Если интересно — можете попробовать добавить нужный чип сами, программа выложена с исходниками на C++ Builder.

Протокол 1-Wire подробно описан вот здесь.

Список функций и регистров шлюза можно посмотреть здесь.

Программа Исходники Описание (поддерживаемые чипы, изменения в коде и т.д.) Поддержи- ваемые ОС
1-Wire Programmer v.3.0 v.3.0 sources DS1425, DS1427, DS18B20, DS18S20, DS1822, DS1963L, DS1991, DS1992, DS1993, DS1994, DS1995, DS1996, DS2405, DS2415, DS2417, DS2423, DS2430A, DS2431, DS24B33, DS2890 Windows XP, Windows Vista, Windows 7, Windows 8
1-Wire Programmer v.3.1 v.3.1 sources Update 14.05.2020

  • Добавлена возможность работы с ключами RW1990
  • Добавлена кнопка расчёта CRC для произвольного ROM
  • -/-
    1-Wire Programmer v.3.2 v.3.2 sources Update 29.06.2020

  • Добавлены чипы: DS1920, DS1961S, DS1971, DS2404, DS2432, DS28E05, DS28E07, DS1982*, DS2502*
  • Добавлены ключи: AN1990*, TM2004*
  • Добавлена документация (pdf) на большинство чипов
  • -/-
    1-Wire Programmer v.3.3 v.3.3 sources Update 14.11.2020

  • Исправлена ошибка при работе с чипами DS1982*, DS2502* (Ошибка в алгоритмах записи приводила тому, что при нажатии на кнопки Write Data*, Write Status Bytes* производилась запись только младших байт соответствующих областей данных).
  • -/-
    1-Wire Programmer v.3.4 v.3.4 sources Update 27.11.2020

  • Исправлена ошибка при работе с чипами DS1994, DS2404, DS1427, DS2404S, DS1963L, DS2423, DS1993, DS1995, DS1996, DS24B33 (Ошибка в алгоритмах приводила к некорректной работе с областями, имеющими адреса старше 0x100, адрес при записи сдвигался на 1)
  • -/-
    1-Wire Programmer v.3.5 v.3.5 sources Update 20.08.2021

  • Исправлена ошибка при определении типа питания (внешнее / паразитное). (Ошибка в обработке результатов команды 0xB4 для поддерживающих эту команду чипов приводила к неверному определению типа питания)
  • Добавлены чипы: MAX31826 (подробности — на форуме, вот в этой теме)
  • -/-
    1-Wire Programmer v.3.6 Duo v.3.6 Duo sources Update 14.05.2022

  • Добавлена возможность работы со шлюзом RH-0010
  • Изменён интерфейс (теперь схема подключения открывается в отдельном окне)
  • -/-

    Для полнофункциональной работы через шлюз RH-0004 с чипами и ключами, помеченными в программе знаком *, нужно использовать специальную дополнительную схему формирователя импульсов повышенного напряжения, например вот такую.

    Архив документации на поддерживаемые программой чипы можно скачать здесь. Для того, чтобы документация на нужный чип открывалась прямо из программы — распакуйте этот архив и поместите папку с документацией (она обязательно должна называться pdf) в папку с программой.

    P.S. Меня также просили сделать поддержку чипов DS2432 и я её обязательно сделаю, как только до меня доедут заказанные в Китае чипы (ещё зимой заказывал, но из-за пандемии первый заказ отменили, а второй вроде выслали, но он всё никак не может до меня добраться).

    P.P.S. Наконец-то дошли чипы DS2432 с алишки. Как и обещал, выкладываю новую версию программы (3.2), в которую добавлена возможность работы с этими крипточипами. Чуть позже будет видос по работе с DS2432 и некоторыми другими чипами.

    P.P.P.S. Вот и обещанное видео.

    А вот видео по работе с микросхемами DS24B33.

    1. Часть 1. USB программатор микросхем EPROM с интерфейсом I2C
    2. Часть 2. USB программатор микросхем EPROM с интерфейсом SPI
    3. Часть 3. USB-термометр на DS18B20 с передачей данных по сети
    4. Часть 4. USB программатор микросхем EPROM DS2430
    5. Часть 5. USB-программатор микросхем EPROM DS24B33
    6. Часть 6. Подключение 3-осевого гироскопа/акселерометра MPU6050 к компьютеру
    7. Часть 7. USB-программатор микросхем EPROM DS2431
    8. Часть 8. USB-программатор микросхем 1-Wire
    9. Часть 9. USB программатор SPI-flash серии W25Qxx
    10. Часть 10. USB программатор для микроконтроллеров AVR (последовательное программирование через SPI)

    Комментарии 9

    • Добрый день!
      При установке одной и той-же версии программатора (DS2431 v2.0) и драйверов к нему (устанавливал с сайта Silabs) на стационарный ПК и на ноутбук, на первом чип DS2431 читается всегда без проблем, на втором — не читается никогда. Пробовал несколько ноутбуков — результат тот же. Все ПК с WIN10.
      Пробовал еще софт «1-Wire Programmer v3-6_Duo» — аналогично: на ноутах чип не читается — выдает ошибку «считаны две единицы», кажется.
      В чем может быть проблема?

      • Хм, а на ноутах тоже Win10? Нужно всё таки точно узнать что за ошибка возникает. Первое, что приходит на ум — это в настройках управления питанием USB-концентратора проверить галочку, разрешающую отключение устройства для экономии энергии. На ноутах она обычно включена. Если так, то её нужно отключить и перезагрузить ноут.

    • Добрый день!
      Да. На ноутах Win10. Ошибка «Ошибка. С шины считаны две единицы».
      Галочки в настройках USB концентратора снял, перезагрузился.
      Поведение немного изменилось: раньше прогресс-бар при нажатии Scan появлялся буквально на мгновение и сразу — сообщение об ошибке. Теперь прогресс доходит до ~50% и снова сообщение об ошибке.

      • Я сегодня пробовал на ноуте с Win7 — всё работает нормально, но обратил внимание на одну вещь, — даже когда снята галочка управления питанием, пока в программе порт не откроешь — светодиод на USB-UART периодически гаснет, то есть ноут всё равно вырубает питание, когда портом не пользуешься (хотя ему вроде как запретили). Как только порт в проге открываешь — светодиод на USB-UART постоянно горит и не вырубается, пока порт не закроешь. В результате всё работает (ну потому что во время работы порт не отрубается).
        Обратите внимание на поведение светодиода в Win10, не гаснет ли он при открытом в программе COM-порте (особенно в момент возникновения ошибки). Если гаснет, то это проблема, это означает, что питание на шлюз пропадает уже после его настройки (которая происходит как раз при открытии виртуального com-порта).
        Нет ли возможности попробовать на ноуте с WinXP, Win7 или Win8 ?
        И ещё, если не сложно, снимите пожалуйста видео на телефон, посмотреть как это выглядит (можно отправить видео на pochta@radiohlam.ru, или на яндекс.диск залить и ссылку на почту отправить).
        И да, софтину лучше последнюю брать: «1-Wire Programmer v3-6_Duo»

    • Добрый день!
      Светодиод загорается при подключении устройства к USB на несколько секунд, затем гаснет.
      При запуске программы программатора и нажатии «Connect» загорается постоянно.
      При сканировании шины продолжает гореть и, при возникновении ошибки, гаснет.
      На других версиях Win попробовать возможности нет.
      От версии софта программатора поведение не зависит.

      • Ну тогда я попробую ноут с десяткой найти. Подозреваю, что дело именно в этом. На стационарном же ПК всё норм и никаких сбоев не возникает, значит дело скорее всего в оси. Точнее даже в сочетании оси и того, что это ноут. А вы пока попробуйте вот это почитать (может что-то из этого поможет): https://nastroisam.ru/usb-ports-trouble-solution/?ysclid=l5i3elg8v5190725268

      • Нашёл ноут, ProBook 6570b на Intel Core i3-3120M с Windows 10 Домашняя, версии 21H1, сборка 19043.1766 апдейтнутая с Win8. Чип CP2102 определился, но дрова автоматом не встали. Накатил универсальный драйвер, вот отсюда: https://www.silabs.com/documents/public/software/CP210x_Universal_Windows_Driver.zip (через обновление драйверов и автоматический поиск подходящего драйвера в указанном месте) и всё заработало. Тестил с DS2431 и прогой 1-Wire Programmer v3-6_Duo. Драйвер для cp2102 установился версии 6.7.3.350 от 28.03.2016, в управлении питанием галочку «разрешить отключение устройства для экономии энергии» не убирал.
        В связи с этим вопросы:
        1) Какой у вас ноут (модель)? И вы вроде говорили, что на нескольких ноутах пробовали, они все одной модели?
        2) Какие у вас установились драйвера для cp2102 (версии)? Они автоматом встали после подключения устройства или вы их руками ставили?
        3) Какая версия Windows 10 на ноутах и на стационарных компах?
        4) На стационарных компах точно всегда работает? То есть прямо из ноута, где не работает, вынимаем, втыкаем в стационарный комп и оно работает?

    • Здравствуйте..Очень впечатлила Ваша работа..)
      Хотелось бы увидеть поддержку ds2401 и хоть какую-нить информацию о совместимости или взаимозаменяемости микросхем и ключей..если это возможно.

      • Здравствуйте. Посмотрел доку, DS2401 — это же просто ключ, аналог DS1990. Какая там может быть поддержка, он же даже не прошиваемый и функций там никаких нету? Цепляйте его на шину, программа его найдёт, просто не опознает. Хотя можно конечно и добавить, чтобы опознавался.
        А про взаимозаменяемость микросхем и ключей, что имеется ввиду? Какие из далласов можно друг с другом заменить?

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