Адаптер usb i2c – FT200XD (CJMCU-200) — адаптер-конвертер интерфейсов USB / I2C купить в Москве с доставкой по России и СНГ

Адаптер USB to USART & SPI & I2C — Меандр — занимательная электроника

Читать все новости

Все началось с того, что мне надо было подключиться к одному устройству по USART. Я сразу взял адаптер USB to UASRT (ибо в ноутбуке COM порт не предусмотрен) на AtTiny2313 (рекламой заниматься не буду, схема легко находится в интернете), подключил, запустил и внезапно понял, что у адаптера фиксированная скорость 9600, а у девайса, к которому требовалось подключиться, скорость 57600. Дело, естественно, было поздним вечером, и купить что-нибудь вроде FT232 возможности не было. Поэтому после непродолжительного раздумья, было решено изменить скорость UASRT в адаптере обычной перепрошивкой. В итоге соединение было успешно налажено. Но согласитесь — это ведь не выход, программатора может под рукой не оказаться, да и неудобно каждый раз с прошивкой шаманить. В следствие этого я серьезно задумался о создании нормального адаптера, с регулируемой скоростью (и не только).

Конечно, самый простой вариант – купить FT232, но сравнив ее стоимость со стоимостью Mega8, я пришел к выводу, что этот вариант мне не подходит. Поэтому было решено сделать адаптер на МК. А раз он на МК, то делать только USART как-то не рационально. Поэтому неплохо было бы в этот адаптер засунуть еще несколько интерфейсов, если уж делать, то что-то универсальное и полезное. Почти сразу в памяти всплыли “приятные” воспоминания об установке драйверов для адаптера на Tiny2313 (для Windows7 x64 это довольно мучительно). А это значит, что от устройства “виртуальный COM” придется отказаться, следовательно, надо будет написать программу для ПК, иначе работа с устройством будет невозможна. В общем, после обдумывания в течение некоторого времени, сформировалась окончательная идея девайса. Функционал получился вот таким:

  • адаптер USB->USART;
  • адаптер USB->SPI;
  • адаптер USB->I2C;
  • при этом устройство должно быть HID (Human Interface Device), чтобы не морочить голову с установкой драйверов.

Объектом издевательств стал МК Mega8, т.к. в TQFP корпусе он занимает совсем мало места (намного меньше, чем AtTiny2313) и обладает целыми 8 Кб. памяти. Сначала планировалось сделать все интерфейсы программными, но после разводки платы пришлось отказаться от аппаратного I2C, т.к. на односторонней плате вывести его никак не получалось (в будущем все-таки надо будет решить этот вопрос, может отдельно вывести сбоку платы). Поэтому его функциональность несколько ограничена, но USART и SPI остались полнофункциональными. Для связи с ПК была применена библиотека V-USB.

Схема устройства получилась вот такой:

Как видно, ничего сложного в ней нет. МК питается напряжением 5 В., согласование уровней для USB выполнено при помощи делителей напряжения резистор 68 Ом. + стабилитрон 3.3 В.. Тактовая частота МК – 12 МГц. Это минимальная частота для работы с шиной USB. Так же в схеме присутствуют три светодиода для индикации режимов работы. Один из светодиодов показывает, какй режим работы включен, а два других индицируют прием/передачу данных. Никаких кнопок и переключателей в устройстве не предусмотрено, и все настройки выполняются программно, прямо с ПК. Да, на все выводы, используемые для работы интерфейсов включены резисторы на 68 Ом. для защиты МК от КЗ. Как уже было отмечено выше, устройство представляется ПК как HID и не требует установки драйверов. VID и PID были выбраны из предоставляемых V-USB: VID — 0x16c0, PID — 0x05df. В противном случае пришлось бы отдать кругленькую сумму за покупку индивидуального идентификатора для USB устройства. Но т.к. проект Open Source и некоммерческий, совершенно свободно можно использовать идентификаторы, предложенные V-USB.

Плата получилась вот такая:

А в спаянном виде:

Это был тестовый образец да еще и разведенный с ошибками. Я почему-то посчитал, что вывод CE выводить не стоит. Ну ничего, все уже исправлено и к статье приложена правильная плата.

Итак, со схемой все понятно, он простая до предела и паяется за один вечер. Но, как было сказано выше, получившееся устройство определяется ПК как HID, т.е. ОС подбирает под него драйвер из своей базы. Проще говоря, Windows думает, что работает с устройством ввода. Это делает возможным работу на любом ПК без мороки с драйверами. Но с этим связана одна небольшая проблема, ни одна из существующих программ для обмена данными через USART работать с этим устройством не будет. А значит нужна какая-то специальная программа для работы с модулем, иначе он никакой ценности из себя не представляет. Поэтому я открыл свой любимый C++ Builder (нынче его обозвали CodeGear RAD Studio, что в прочем не меняет смысла), версия 2007, и написал вот такую программу:

Ничего особо сложного в ней нет, для каждого интерфейса присутствует некоторое количество настроек. Да, одновременно несколько интерфейсов работать не могут, только по одному. Работает все это дело очень просто, при подключении устройства к ПК в окне программы активизируются кнопки, нажатие на которые запускает соответствующий интерфейс. Потом достаточно написать данные в поле ввода в определенном формате и нажать кнопку «Send». Для каждого интерфейса свой формат данных. Сейчас рассмотрим их более подробно:

USART: (прием данных идет все время, пока активен режим, так сказать, на автомате)

  • отправка нескольких  HEX чисел, просто пишем их через пробел в неограниченном количестве, например: 01 05 fa aa …
  • отправка строки (текст, числа и т.п.). Тут уже в начале строки пишется   идентификатор S (s), например: s www.cxem.net

SPI:

  • для отправки данных устройству формат строки такой: Адрес (кому передавать и в какую ячейку памяти) А (а) и Данные D (d). Например: aa3 dfa;
  • для запроса данных с устройства: Адрес (от кого принимать и из какой ячейки памяти) и идентификатор чтения R (r). Например: aa3 r

I2C:

  • для отправки данных устройству: Адрес устройства (бит чтения в 0) А (а) Адрес ячейки памяти M (m) Данные D (d). Например аа2 m03 d15
  • запрос данных выглядит вот так: Адрес устройства (бит чтения в 0) А (а) Адрес ячейки памяти M (m) Адрес устройства (бит чтения в 1) А (а) Идентификатор чтения с количеством ячеек памяти для чтения R (r). Например: aa2 m03 aa3 r1

​Для SPI  в режиме Slave никаких команд не предусмотрено, просто сидим и ждем, пока нам что-нибудь пришлют. Для работы с девайсом подключаем его к ПК, ждем некоторое время, пока ОС не сообщит, что драйвера успешно найдены и установлены, запускаем программу и начинаем обмен данными. Все предельно просто, ведь простота и была одним из критериев при создании устройства.

Да, кстати, программа совместима со всеми версиями Windows, начиная с Windows XP и заканчивая Windows 8, и не требует для работы различной экзотики, типа NetFramework и т.п. Как, впрочем, и сам модуль.

Вот, собственно, и все, программа, плата и исходники прилагаются.

Фьюзы выставляются для работы от внешнего кварца с высокой частотой. Выглядят вот так:

На картинке LOW фьюзы в 1, когда не отмечены, и в 0, когда отмечены. HIGH фьюзы наоборот. В шестнадцатеричном виде это выглядит вот так: HIGH: D9, LOW: FF.

Ну и конечно же видео, т.к. лучше один раз увидеть, чем…


Прикрепленные файлы:

Возможно, Вам это будет интересно:

meandr.org

Преобразователь USB — I2C/SPI/GPIO интерфейсы на Atmel AT90USB647 / Блог им. dr-mobius / Сообщество EasyElectronics.ru

Описание

userial — проект, позволяющий создать свободный мост между USB и устройствами использующими I2C/SPI/GPIO интерфейсы, на основе процессора фирмы Atmel AT90USB647. Аппаратное и программное обеспечение реализовано в соответствии с Общедоступной лицензией ( Open Source licence ).

Поддерживаются следующие интерфейсы:

* 1 × интерфейс USB (последовательная эмуляция)
* 1 × JTAG интерфейс
* 1 × I2C (TWI)
* 1 × SPI
* 8 × цифровых вводов/выводов
* 4 × Аналога к цифровым конвертерам

Устройство общается с главным компьютером, используя CDC (коммуникационный класс устройства USB).

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

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

Схемы и программное обеспечение распространяются свободно.

Программируемое оборудование выпущено в соответствии с лицензией Массачусетского технологического института ( MIT license), аппаратные средства реализованы в соответствии с (Creative Commons Attribution-Share Alike 3.0 Unported License).

Документация

* Руководство пользователя в формате HTML
* Руководство пользователя в Формате PDF

Загрузка

* Firmware (v1.9, совместимое с userial аппаратными средствами v1.0 и Bumble-B board )
* Схема в PDF (v1.0)
* Схема в PNG (v1.0)
* Исходные файлы для Eagle (v1.0)
* файлы для Gerber (v1.0)

Если Вам не хочется создавать свои собственные аппаратные средства, то Вы можете поискать Bumble-B от Fletchtronics. Это — довольно недорогое устройство, основанное на чипе AT90USB162, поддерживаемое программным обеспечение userial, начиная с версии 1.9.

Fletchtronicsc продает готовые устройства названные Bumble-B с перенесенным userial на процессоре AT90USB162.

.

Все новости могут быть прочитаны в userial news archive…

Перевод с английского dr-mobius
Оригинал статьи на английском.

we.easyelectronics.ru

Адаптер USB to USART & SPI & I2C — 4 Декабря 2013

Все началось с того, что мне надо было подключиться к одному устройству по USART. Я сразу взял адаптер USB to UASRT (ибо в ноутбуке COM порт не предусмотрен) на AtTiny2313 (рекламой заниматься не буду, схема легко находится в интернете), подключил, запустил и внезапно понял, что у адаптера фиксированная скорость 9600, а у девайса, к которому требовалось подключиться, скорость 57600. Дело, естественно, было поздним вечером, и купить что-нибудь вроде FT232 возможности не было. Поэтому после непродолжительного раздумья, было решено изменить скорость UASRT в адаптере обычной перепрошивкой. В итоге соединение было успешно налажено. Но согласитесь — это ведь не выход, программатора может под рукой не оказаться, да и неудобно каждый раз с прошивкой шаманить. В следствие этого я серьезно задумался о создании нормального адаптера, с регулируемой скоростью (и не только).

Конечно, самый простой вариант – купить FT232, но сравнив ее стоимость со стоимостью Mega8, я пришел к выводу, что этот вариант мне не подходит. Поэтому было решено сделать адаптер на МК. А раз он на МК, то делать только USART как-то не рационально. Поэтому неплохо было бы в этот адаптер засунуть еще несколько интерфейсов, если уж делать, то что-то универсальное и полезное. Почти сразу в памяти всплыли «приятные” воспоминания об установке драйверов для адаптера на Tiny2313 (для Windows7 x64 это довольно мучительно). А это значит, что от устройства «виртуальный COM” придется отказаться, следовательно, надо будет написать программу для ПК, иначе работа с устройством будет невозможна. В общем, после обдумывания в течение некоторого времени, сформировалась окончательная идея девайса. Функционал получился вот таким:

  • адаптер USB->USART;
  • адаптер USB->SPI;
  • адаптер USB->I2C;
  • при этом устройство должно быть HID (Human Interface Device), чтобы не морочить голову с установкой драйверов.

Объектом издевательств стал МК Mega8, т.к. в TQFP корпусе он занимает совсем мало места (намного меньше, чем AtTiny2313) и обладает целыми 8 Кб. памяти. Сначала планировалось сделать все интерфейсы программными, но после разводки платы пришлось отказаться от аппаратного I2C, т.к. на односторонней плате вывести его никак не получалось (в будущем все-таки надо будет решить этот вопрос, может отдельно вывести сбоку платы). Поэтому его функциональность несколько ограничена, но USART и SPI остались полнофункциональными. Для связи с ПК была применена библиотека V-USB.

Схема устройства получилась вот такой:

Как видно, ничего сложного в ней нет. МК питается напряжением 5 В., согласование уровней для USB выполнено при помощи делителей напряжения резистор 68 Ом. + стабилитрон 3.3 В.. Тактовая частота МК – 12 МГц. Это минимальная частота для работы с шиной USB. Так же в схеме присутствуют три светодиода для индикации режимов работы. Один из светодиодов показывает, какй режим работы включен, а два других индицируют прием/передачу данных. Никаких кнопок и переключателей в устройстве не предусмотрено, и все настройки выполняются программно, прямо с ПК. Да, на все выводы, используемые для работы интерфейсов включены резисторы на 68 Ом. для защиты МК от КЗ. Как уже было отмечено выше, устройство представляется ПК как HID и не требует установки драйверов. VID и PID были выбраны из предоставляемых V-USB: VID — 0x16c0, PID — 0x05df. В противном случае пришлось бы отдать кругленькую сумму за покупку индивидуального идентификатора для USB устройства. Но т.к. проект Open Source и некоммерческий, совершенно свободно можно использовать идентификаторы, предложенные V-USB.

Плата получилась вот такая:

А в спаянном виде:

Это был тестовый образец да еще и разведенный с ошибками. Я почему-то посчитал, что вывод CE выводить не стоит. Ну ничего, все уже исправлено и к статье приложена правильная плата.

Итак, со схемой все понятно, он простая до предела и паяется за один вечер. Но, как было сказано выше, получившееся устройство определяется ПК как HID, т.е. ОС подбирает под него драйвер из своей базы. Проще говоря, Windows думает, что работает с устройством ввода. Это делает возможным работу на любом ПК без мороки с драйверами. Но с этим связана одна небольшая проблема, ни одна из существующих программ для обмена данными через USART работать с этим устройством не будет. А значит нужна какая-то специальная программа для работы с модулем, иначе он никакой ценности из себя не представляет. Поэтому я открыл свой любимый C++ Builder (нынче его обозвали CodeGear RAD Studio, что в прочем не меняет смысла), версия 2007, и написал вот такую программу:

Ничего особо сложного в ней нет, для каждого интерфейса присутствует некоторое количество настроек. Да, одновременно несколько интерфейсов работать не могут, только по одному. Работает все это дело очень просто, при подключении устройства к ПК в окне программы активизируются кнопки, нажатие на которые запускает соответствующий интерфейс. Потом достаточно написать данные в поле ввода в определенном формате и нажать кнопку «Send». Для каждого интерфейса свой формат данных. Сейчас рассмотрим их более подробно:

USART: (прием данных идет все время, пока активен режим, так сказать, на автомате)

  • отправка нескольких  HEX чисел, просто пишем их через пробел в неограниченном количестве, например: 01 05 fa aa …
  • отправка строки (текст, числа и т.п.). Тут уже в начале строки пишется   идентификатор S (s), например: s www.cxem.net

SPI:

  • для отправки данных устройству формат строки такой: Адрес (кому передавать и в какую ячейку памяти) А (а) и Данные D (d). Например: aa3 dfa;
  • для запроса данных с устройства: Адрес (от кого принимать и из какой ячейки памяти) и идентификатор чтения R ®. Например: aa3 r

I2C:

  • для отправки данных устройству: Адрес устройства (бит чтения в 0) А (а) Адрес ячейки памяти M (m) Данные D (d). Например аа2 m03 d15
  • запрос данных выглядит вот так: Адрес устройства (бит чтения в 0) А (а) Адрес ячейки памяти M (m) Адрес устройства (бит чтения в 1) А (а) Идентификатор чтения с количеством ячеек памяти для чтения R ®. Например: aa2 m03 aa3 r1

​Для SPI  в режиме Slave никаких команд не предусмотрено, просто сидим и ждем, пока нам что-нибудь пришлют. Для работы с девайсом подключаем его к ПК, ждем некоторое время, пока ОС не сообщит, что драйвера успешно найдены и установлены, запускаем программу и начинаем обмен данными. Все предельно просто, ведь простота и была одним из критериев при создании устройства.

Да, кстати, программа совместима со всеми версиями Windows, начиная с Windows XP и заканчивая Windows 8, и не требует для работы различной экзотики, типа NetFramework и т.п. Как, впрочем, и сам модуль.

Вот, собственно, и все, программа, плата и исходники прилагаются.

Фьюзы выставляются для работы от внешнего кварца с высокой частотой. Выглядят вот так:

На картинке LOW фьюзы в 1, когда не отмечены, и в 0, когда отмечены. HIGH фьюзы наоборот. В шестнадцатеричном виде это выглядит вот так: HIGH: D9, LOW: FF.

Ну и конечно же видео, т.к. лучше один раз увидеть, чем… (USART работает в режиме эхотест (Rx и Tx соединены), а SPI и I2C тестируются с микросхемой PCA2129T, статья о ней тут) 

Взято с http://cxem.net/comp/comp129.php

Прикрепленные файлы:

malatok.at.ua