Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить

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

Пн фев 14, 2022 12:45:32

Добрый день! Попался в руки небезызвестный индикатор на базе TM1637 на 4 цифры. О подключении его к микроконтроллеру статей, примеров полно, да и сам по себе протокол несложный. Веселье началось тогда, когда стал подключать его к честной шине i2c, торчащей из компьютера. Сразу скажу, что удалось. Решение так себе, но работает. Если нужно, решением поделюсь чуть позже (много писать придётся). Пока хотел бы спросить нет ли у кого подобного опыта? Если кто-то сталкивался с такой задачей, то как решили?

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

Вт фев 15, 2022 19:31:44

В стандартном наборе ПК на сегодня легкодостувпен разве что СОМ порт...
И то чаще через мост USB-COM.
Наиболее оптимально поставить простейший преобразователь потока символов и управляющих команд из RS232 в требуемый набор сигналов на малолапом МК.
Преимущество - доступ из любой терминалки без дополнительных затрат на написание программ под ПК.
:roll:

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

Вт фев 15, 2022 20:01:13

Веселье началось тогда, когда стал подключать его к честной шине i2c, торчащей из компьютера.


А где из компьютера торчит i2c? Из моего ничего не торчит.
А вообще существует Ftdi FT260 usb i2c конвертер и драйвер для него.
У меня такого нет, но у кого есть писали что нормально работает.

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

Вт фев 15, 2022 22:25:05

electroget, у всех из компутера "торчит" I2C: на ней висит уйма термодатчиков и т.п. устройств. А в ядре есть их поддержка, при помощи sensors-detect можно шину I2C просканировать на предмет датчиков.
Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться.

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

Ср фев 16, 2022 12:27:52

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 и приходится вот так вот выкручиваться. Может быть подскажете ещё какие-нибудь хитрые финты.

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

Вт май 24, 2022 23:55:51

electroget,
Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться.

Брал i2c из VGA разъёма (тот что самый первый DE-15) от встроенной в материнку видюхи, i2cdetect увидел.
А про TM1637... если на шине кто-то ещё, то по моему лучше через какой нибудь TCA9548 подключить

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

Ср май 25, 2022 06:38:46

simq,
Я не писал "Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться".
Мне бы в голову не пришло что-то припаивать к материнской плате.

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

Пт июл 15, 2022 18:33:48

ну эта шина выведена в тч на модули памяти там висят чипы их конфига
в пустой слот можно сунуть платку от неисправного модуля откуда сдута память да и крабочему модулю в райне 24cxx припаятся не проблема толка зачем??

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

Пт май 19, 2023 14:43:14

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

интереснее понять, как найти адрес устройва и2ц в виндовсе, например в адресном пространстве видеокарты
вга разъем был бы неплохим местом для внешнего подключения
все считывания данных с пзу разных карт идет через драйвер материской платы и только производитель знает адреса, на которых сидит мастер шины

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

Пт май 19, 2023 16:21:46

Другое дело, что эта шина не имеет внешнего разъема, нужно на материнке искать дорожки и к ним подпаиваться.

На старых компах вполне так имелись разъемы шины I2C. На моей первой материнке Abit ST6 два трехконактных разъема I2C было.

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

Чт июл 20, 2023 16:21:25

ну эта шина выведена в тч на модули памяти там висят чипы их конфига
в пустой слот можно сунуть платку от неисправного модуля откуда сдута память да и крабочему модулю в райне 24cxx припаятся не проблема толка зачем??


Есть тестеры для подключения в слот памяти. Показывает напряжения памяти, RESET, а если движения по i2c - CPU прошел инициализации и ищеть какая память подключена.

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

Пн сен 04, 2023 13:02:04

Вот смотрю я в даташит TM1637, и знаете что мне его интерфейс больше всего напоминает? А уж не синхронный ли это UART? :roll: Тот, в котором тактовый сигнал идёт отдельным проводом. Старт-бит, порядок битов от младшего к старшему. Ну вот только в стоп-бит кетайцы влепили что-то типа бита подтверждения, но его, наверно, можно и не учитывать в системе. А чтобы он не мешал - сделать выход Tx по типу как в I2C, с открытым стоком.

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

Пн сен 04, 2023 13:36:17

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

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

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