TM1637 к I2C шине компьютера

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5748
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

TM1637 к I2C шине компьютера

Сообщение >TEHb< »

Добрый день! Попался в руки небезызвестный индикатор на базе TM1637 на 4 цифры. О подключении его к микроконтроллеру статей, примеров полно, да и сам по себе протокол несложный. Веселье началось тогда, когда стал подключать его к честной шине i2c, торчащей из компьютера. Сразу скажу, что удалось. Решение так себе, но работает. Если нужно, решением поделюсь чуть позже (много писать придётся). Пока хотел бы спросить нет ли у кого подобного опыта? Если кто-то сталкивался с такой задачей, то как решили?
"Привет!" - соврал он.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15583
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: TM1637 к I2C шине компьютера

Сообщение BOB51 »

В стандартном наборе ПК на сегодня легкодостувпен разве что СОМ порт...
И то чаще через мост USB-COM.
Наиболее оптимально поставить простейший преобразователь потока символов и управляющих команд из RS232 в требуемый набор сигналов на малолапом МК.
Преимущество - доступ из любой терминалки без дополнительных затрат на написание программ под ПК.
:roll:
Реклама
Аватара пользователя
electroget
Друг Кота
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Re: TM1637 к I2C шине компьютера

Сообщение electroget »

[uquote=">TEHb<",url="/forum/viewtopic.php?p=4180793#p4180793"]Веселье началось тогда, когда стал подключать его к честной шине i2c, торчащей из компьютера.[/uquote]

А где из компьютера торчит i2c? Из моего ничего не торчит.
А вообще существует Ftdi FT260 usb i2c конвертер и драйвер для него.
У меня такого нет, но у кого есть писали что нормально работает.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: TM1637 к I2C шине компьютера

Сообщение Eddy_Em »

electroget, у всех из компутера "торчит" I2C: на ней висит уйма термодатчиков и т.п. устройств. А в ядре есть их поддержка, при помощи sensors-detect можно шину I2C просканировать на предмет датчиков.
Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5748
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: TM1637 к I2C шине компьютера

Сообщение >TEHb< »

electroget писал(а):Из моего ничего не торчит.
Если не нужно, то и не торчит. Мне же нужно (smbus, pmbus), я себе высунул.

Добавлено after 2 hours 5 minutes 2 seconds:
Итак, всё-таки распишу как выкручиваюсь сейчас и почему. Во-первых, у меня таки есть преобразователь USB-I2C, который видится системой как полноценная шина. Только она не внутри, а "на улуицу", но это системе без разницы. Проект открытый, деталей мало, собирается легко, работает замечательно. Ну и приспичило мне пригородить к нему вот этот вот TM1637 индикатор. Почему? Да потому что на столе лежит и2ц шина и циферки, с типа и2ц интерфейсом (нет). Довольно хорошо как им управлять написано вот тут.
Подробно описывать что к чему не буду, это уже сделано за меня. Если вкратце, то всё в итоге сводится к трём шагам:
Во-первых, включение-инициализация. Нужно сформировать последовательность 0b111 1 000 1. Для индикатора это означает
111 - три бита, отвечающие за яркость
1 - включить отображение
000 - так надо
1 - тоже всегда предписано быть единицей.
Хорошо, допустим. Но что это значит с точки зрения и2ц? 0b1111000 1, где
1111000 - адрес ведомого (0х78)
1 - означает, что сейчас мы будем с него читать.
Итак, проблема номер один. Одни и те же последовательности для двух устройств означают немного разное. Например, адрес ведомого 0х78 как бы не может существовать. Запрешён он. Во-вторых, если мы хоть один байт вычитаем с него, то получим последовательность 0хFF. Индикатор-то линию вниз не тянет, ему не надо. Более того, воспринимает эту последовательность как команду, что всё портит. Ну да и ладно, значит нужно считать 0 байт. Хорошо. Видно, что осциллограф из-за адреса не может воспринять это как корректную и2ц последовательность и отказывается её расшифровывать.
Изображение
Во-вторых, перевод индикатора в конкретное состояние приёма данных. Нам нужна последовательность 0b0 0 0 0 0010, где
0 - так предписано, что всегда 0 без вариантов
0 - сейчас будет запись данных для отображения
0 - данные пойдут пачкой сразу для всех знакомест
0 - нормальный режим (хз что это)
0010 - тоже так надо.
Для и2ц это 0b0000001 0, где
0b0000001 - адрес ведомого 0х01
0 - запись.
Ну отлично, по старой схеме пишем 0 байт в адрес 0х01. И вот теперь-то индикатор ждёт данные для отображения. Всего в контроллере предусмотрено управление шестью сегментами, но часто распаяно лишь 4. Это не принципиально. Можно уже отображать что-нибудь.
Изображение
В третьих, нужно установить адрес и гнать данные. В качестве команды установки адреса нужно отправить 0b00000011, короче чтение 0 байт из 0х01. Адрес установили, можно писать.
Изображение
Но! Запись-то начинается с адреса! Вот тут не могу сказать точно как конкретно оно работает, но работает. Я просто пишу 6 байт по адресу 0х01, что сначала формирует команду, аналогичную пункту 2, а потом уже засылает что нужно для отображения.
Изображение
Вот вроде и работает, но как-то всё на костылях. Конечно, лучше было бы реализовать что-то менее китайское, но работает же! Несмотря на то, что этим я планирую пользоваться почти каждый день, интерес всё же больше академический. Всё-таки и2ц это вовсе не GPIO и приходится вот так вот выкручиваться. Может быть подскажете ещё какие-нибудь хитрые финты.
"Привет!" - соврал он.
Реклама
simq
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт фев 06, 2015 07:13:23

Re: TM1637 к I2C шине компьютера

Сообщение simq »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4181929#p4181929"]electroget,
Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться.[/uquote]
Брал i2c из VGA разъёма (тот что самый первый DE-15) от встроенной в материнку видюхи, i2cdetect увидел.
А про TM1637... если на шине кто-то ещё, то по моему лучше через какой нибудь TCA9548 подключить
Реклама
Аватара пользователя
electroget
Друг Кота
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Re: TM1637 к I2C шине компьютера

Сообщение electroget »

simq,
Я не писал "Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться".
Мне бы в голову не пришло что-то припаивать к материнской плате.
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: TM1637 к I2C шине компьютера

Сообщение musor »

ну эта шина выведена в тч на модули памяти там висят чипы их конфига
в пустой слот можно сунуть платку от неисправного модуля откуда сдута память да и крабочему модулю в райне 24cxx припаятся не проблема толка зачем??
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: TM1637 к I2C шине компьютера

Сообщение kalobyte »

ch341a usb->i2c,spi
я с ней работал в шарпе

интереснее понять, как найти адрес устройва и2ц в виндовсе, например в адресном пространстве видеокарты
вга разъем был бы неплохим местом для внешнего подключения
все считывания данных с пзу разных карт идет через драйвер материской платы и только производитель знает адреса, на которых сидит мастер шины
тематические ответы только в форуме, в приват не пишите
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6435
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: TM1637 к I2C шине компьютера

Сообщение Asmodey »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4181929#p4181929"]Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться.[/uquote]
На старых компах вполне так имелись разъемы шины I2C. На моей первой материнке Abit ST6 два трехконактных разъема I2C было.
Астролябия-сама меряет, было бы что мерять!!!
Аватара пользователя
Игор Иванов
Родился
Сообщения: 12
Зарегистрирован: Чт авг 13, 2020 15:52:12
Откуда: Бургас, Болгария
Контактная информация:

Re: TM1637 к I2C шине компьютера

Сообщение Игор Иванов »

[uquote="musor",url="/forum/viewtopic.php?p=4260109#p4260109"]ну эта шина выведена в тч на модули памяти там висят чипы их конфига
в пустой слот можно сунуть платку от неисправного модуля откуда сдута память да и крабочему модулю в райне 24cxx припаятся не проблема толка зачем??[/uquote]

Есть тестеры для подключения в слот памяти. Показывает напряжения памяти, RESET, а если движения по i2c - CPU прошел инициализации и ищеть какая память подключена.
Аватара пользователя
ejsanyo
Встал на лапы
Сообщения: 129
Зарегистрирован: Чт апр 28, 2016 22:33:47
Откуда: ARPA Internet

Re: TM1637 к I2C шине компьютера

Сообщение ejsanyo »

Вот смотрю я в даташит TM1637, и знаете что мне его интерфейс больше всего напоминает? А уж не синхронный ли это UART? :roll: Тот, в котором тактовый сигнал идёт отдельным проводом. Старт-бит, порядок битов от младшего к старшему. Ну вот только в стоп-бит кетайцы влепили что-то типа бита подтверждения, но его, наверно, можно и не учитывать в системе. А чтобы он не мешал - сделать выход Tx по типу как в I2C, с открытым стоком.
Хоронили кваку - порвали три Rocket Launcherа.©
veso74
Поставщик валерьянки для Кота
Сообщения: 1915
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: TM1637 к I2C шине компьютера

Сообщение veso74 »

Инфо: A comparison of the TM1637 protocol with I2C protocol

Oбсуждали включение TM1637 к I2c в другой теме:
Светодиодный индикатор на базе ТМ1637.

Уже использую ТМ1637 только по I2c управления: без адреса, данные передаются в обратном порядке. Из китайского модуля отпаиваем два конденсатора на SDA и SCL.
Ответить

Вернуться в «Интеграция с ПК»