I2C шлюз для компьютера (через com-порт) на ATTiny2313

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

Для экспериментов был выбран микроконтроллер ATTiny2313. Выбран он был за достаточно быстрое ядро AVR, возможность подключения 20 МГц кварца, приличное количество ног и низкую стоимость.

Далее была собрана вот такая схемка:

I2C шлюз для компьютера

Детали:

  1. R1 — 1..10 кОм
  2. R2, R3 — 4,7 кОм
  3. C1..C5 — 0,1 мкФ
  4. C6,C7 — 15 пФ
  5. кварц 20 МГц
  6. + преобразователь интерфейсов MAX232, контроллер ATTiny2313, 3 джампера и несколько разъёмов.

Джамперы (перемычки) JP1, JP2 позволяют организовать подтяжку линий Clock и Data к питанию, если это не сделано на плате к которой вы подключаетесь (для чего нужна такая подтяжка — смотрите в описании интерфейса I2C).

Джампер JP3 позволяет запитать подключаемое устройство от шлюза.

разъём molex, мама

разъём molex, папа

Сам шлюз можно запитать прямо от компьютера, через стандартный разъём питания (как на рисунке справа), которых в любом компе с избытком. В этом разъёме нам нужно только два провода — красный (+5В) и чёрный (общий). На стороне шлюза нам, естественно, нужен ответный разъём, — как на рисунке слева.

Для возможностей внутрисхемного программирования (ICSP) контроллера, на разъёмы выведены ноги интерфейса SPI (Clock, MOSI, MISO) и нога reset.

Готовое устройство выглядит вот так:

фото i2c-шлюза

На фотке экспериментальная модель, поэтому внимательный читатель может заметить, что она не совсем совпадает с выложенной схемой и разводкой, но это мелочи (просто в девайсе на фотке предполагалось, что вместо джамперов будут транзисторы, которыми также будет рулить контроллер, однако транзисторов под рукой не оказалось + в экспериментальной модели не впаяны разъёмы для внутрисхемного программирования).

Скачать печатную плату (DipTrace2.2)

Ну вот, с аппаратной частью разобрались, однако, пока в контроллере нет прошивки, наш девайс — просто кусок железа. Исходники программ и готовые прошивки, наделяющие это чудо разными полезными свойствами, можно найти и скачать по приведённым ниже ссылкам:

Программа, позволяющая из терминалки общаться с I2C устройствами в режиме мастера (ради чего всё и затевалось).

Программа, позволяющая из терминалки общаться с I2C устройствами в режиме слэйва (или работать шлюзу в качестве сниффера).

В подразделе «Полезные программы для ПК» можно скачать простенькую терминалку RH_Com, умеющую работать в HEX-режиме, (с исходниками).

Update. Если кому лень собирать — подобный шлюз можно заказать на сайте. Принцип работы этой версии абсолютно тот же, но в ней реализованы сразу 3 интерфейса (I2C, SPI и 1-Wire) + возможность управлять тремя выводами GPIO (ну и система команд, естественно, отличается).

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