№ 3152 В разделах: Electronics
Programming
от July 30th, 2011,
Как-то мучился я с одним I2C датчиком. Пока мучился пришла в голову идея собрать специальную железку для отладки I2C устройств + софтинку для управления с компьютера по UART.
Идея такова: есть некий микроконтроллер с I2C шиной, который через UART-USB адаптер подключен к компьютеру, где специальная программа по своему протоколу дает МК команды и читает ответы. МК передает эти команды в шину для отлаживаемых I2C устройств и принимает ответы, отправляя назад в UART.
Первое, что необходимо сделать это протокол работы программы. Необходимо принять некоторые условности, описанные ниже. Протокол I2C состоит из 4 функций с кучей всевозможных состояний. Мы не будем заходить слишком глубоко и я опишу самые простые случаи.
Правила, которые мы примем для протокола:
Примем следующую таблицу передаваемых последовательностей через UART к MK:
Последовательность | Функция I2C | Описание |
---|---|---|
0x00 0xA0 | Start и Send SLA+R\W | Посылка стартовой последовательности с указанием адреса назначения |
0x10 0x01 | Send 0x01 | Посылка байта 0x01 |
0x20 0x00 | Receice & ACK | Принять байт и сказать ACK – продолжить приём |
0x20 0x01 | Receice & NACK | Принять байт и сказать NACK – прервать приём |
0x30 0x00 | Stop | Стоповая последовательность. Второй байт игнорируется. |
Примем следующую таблицу передаваемых последовательностей через UART к компьютеру:
Последовательность | Функция I2C | Описание |
---|---|---|
0x01 0x00 | ACK | Сказать мастеру ACK и содержимое регистра состояния |
0x02 0x01 | NACK | Сказать мастеру NACK и содержимое регистра состояния |
0x20 0x07 | Send 0x07 | Послать мастеру байт 0x07 |
Сама схема отладчика предельно проста и доходчива:
Микроконтроллер можно взять самый простой с памятью от 4 Кб и частотой не менее 12 МГц. На схеме mega48. Я использую mega8 на частоте 16 МГц. Схема подключения к USB вполне традиционная и ее можно спокойно брать из проекта подключения LCD дисплея через USB:
Далее после подключения к USB нам понадобятся всего 2 ножки: SCL, SDA. Это и есть шина I2C, куда надо подключать ваши отлаживаемые устройства (можно несколько, если их адреса разные). Не забудьте линию подтянуть к плюсу через резисторы на 4.7 кОм! На схеме это не показано!
Думаю, что идея передана достаточно подробно. Ждите удобненькую программу и прошивку для МК. К середине августа точно будет 😉
Fortune cookie: "The primary tool of science is skepticism, whose light shrivels unquestioning faith." [Mike Huben]
А где Софтина и прошивка?
нету пока. работы много работаю и поэтому постоянно откладываю. может к нг будет.
Очень жду…
Как будет время попробую написать что нибудь. Какие требования к интерфейсу? Вопросы на мыло ibiza11@rambler.ru поскольку сюда попал из поисковика и не появлюсь больше.
Как-то починял магнитолку алпайн, в ней от конденсата сгнил радиомодуль. Вот там как раз помогло бы такое устройство, жаль в руках не нашлось ничего подходящего. Чем закончилась ваша история с устройством?
собрал. лежит где-то. но десктопную прогу так и не написал. через консольку все смотрел.