RTL8710 & Arduino & библиотеки & i2c

nhknhk

New member
Попробуйте tm1637 и RTL запитать вместе от 3...3.6
не пойдет судя по даташиту напряжение работы индикатора 4 вольта, от 3.6 он не заработает просто. да и запитать мне будет сложно т.к. там уже стоит AMS она всеравно срежет вход до 3х вольт
но кажется проблема в чем-то еще. в "тот же" стенд собрал, заметил отличие выход цлк у RTL всегда идет к земле. ( менять вывод пробовал ). т.е. если у ESP обе ноги всегда синхронно дергались к земле, то у RTL dio получается в инверсии, т.е у нее он дергается с ноля на 1цу, и потом обратно выходит на ноль. может поэтому и не работает? но тогда где в коде косяк? если тотже самый проект на есп компилируется и работает?
 

Вложения

A_D

Active member
не пойдет судя по даташиту напряжение работы индикатора 4 вольта, от 3.6 он не заработает просто. да и запитать мне будет сложно т.к. там уже стоит AMS она всеравно срежет вход до 3х вольт
но кажется проблема в чем-то еще. в "тот же" стенд собрал, заметил отличие выход цлк у RTL всегда идет к земле. ( менять вывод пробовал ). т.е. если у ESP обе ноги всегда синхронно дергались к земле, то у RTL dio получается в инверсии, т.е у нее он дергается с ноля на 1цу, и потом обратно выходит на ноль. может поэтому и не работает? но тогда где в коде косяк? если тотже самый проект на есп компилируется и работает?
Если Open_Drain - то там логика обратная, запись 1цы на пин = открывание транзистора и притягивание к земле.
И диаграммы не совсем одинаковые.. а можно снять один цикл записи ? что бы не 5 сразу на весь снимок было, а один - более четко можно сравнить тайминги между RTL и ESP.
 

nhknhk

New member
@A_D
пробовал анализировать когда все в режиме OUTPUT, почему-то на CLK выводится 3.45, максимум, а на DATA 4.24, если их совмещать рядом то хорошо заметна разница.
если попробовать разные режимы на обоих выводах, то вообще перестает работать на одном. не пойму в чем причина. еще бывают вякие глюки накладываются если шить в память, до ресета не спасает.
видимо в пследний раз так и получилось. один вывод в OUTPUT перешел а второй так и остался с OPEN_DRAIN видимо.
 

A_D

Active member
nhknhk, А какие выводы используются\испытывались ? И да, можно приложить пример с именно теми библиотеками, которые испытываете ? (поставил ардуину, могу хотя бы посмотреть, что на выходе при попытках записи\чтения)
 

pvvx

Активный участник сообщества
пробовал анализировать когда все в режиме OUTPUT, почему-то на CLK выводится 3.45, максимум, а на DATA 4.24, если их совмещать рядом то хорошо заметна разница.
Странно что на выводе в режиме push-pull 3.45В, при питании порта от 3.3В :)
если попробовать разные режимы на обоих выводах, то вообще перестает работать на одном. не пойму в чем причина. еще бывают вякие глюки накладываются если шить в память, до ресета не спасает.
видимо в пследний раз так и получилось. один вывод в OUTPUT перешел а второй так и остался с OPEN_DRAIN видимо.
Уже много раз было описано, что при режиме OPEN_DRAIN в Arduino кто-то выдумал, что всё инвертируется, включая значение ввода с пина :) и что Arduino концепция не включает в себя переинициализацию, деинсталляцию или освобождение ресурсов, ничего и никогда. Инициализация производится один раз и до конца исполнения - для поиграться этого хватает, т.е. концепт Arduino исполняется.
Зачем вам переключать режим работы пина в данной игре? По старту своего "скетча" включаете пины с SCL и SDA в режим OPEN_DRAIN и работаете, не забывая об навязанных домохозяйками инверсиях.
У используемой микросхемы логика протокола шины не отличается от I2С. По PDF есть ограничения в тактировании (на SCL) - указан предел до 500 кГц на любой логический уровень SCL (50% duty ratio) и ограничения в по фронтам (до 0.5 μs ?)... Логические уровни переключения так-же описаны и переключение не находится на уровне 0.7 от питания, а на уровне нуля ниже 0.35 В и неизвестного значения "1" (в PDF отсутствуют значения входного гистерезиса...).

Если китайцы пишут: “100pF capacitor connected to the DIO, CLK communication port pull-up and pull-down can reduce interference to radio communications port.”
- это значит, что можно ожидать чего угодно от резких фронтов на шине...

Cудя по остальным накиданным характеристикам в PDF, микросхема достаточно тормозная и вам следует ограничить скорости переключения для начальной отладки. Разгонять будете потом, когда отладите связь с ней на низкой скорости.


-------
PS: Если вы играете в Arduino, то вам следует выбирать и покупать готовые кубики для этой пользовательской игры.

В RTL нет никакого смыслу “дрыгать ногами” по концепции Arduino для 8-ми битных MCU, когда для работы с устройствами по I2C в него встроен специальный контроллер, а для работы с GPIO и обеспечения атомарности в многопоточных приложениях (RTOS) встроен специальный режим обращения через bit-band-инг...

И какого фигу вам требуется эмуляция алгоритмов древних убогих чипов, типа ESP8266, не имеющих никакой аппаратной поддержки и развития?

Если уж совсем плохо, и протокол с внешним чипом не укладывается в стандартные спецификации, то пример как работать с GPIO дан основе старого датчика SHTxx.

инит(PinName dataPin, PinName clockPin)
uint8_t putByte(uint8_t value)
uint8_t getByte(bool ack)

Вам всего потребуется переписать инициализацию CLK пина на режим DOUT_OPEN_DRAIN, чтобы получить уровень “1” более 3.3В.
Но лучшим решением будет использование аппаратного контролера I2C, а не его эмуляция ради поддержки алгоритмов умирающих игрушек на AVR того века.
 
Последнее редактирование:

nhknhk

New member
полностью согласен что если есть возможность то надо переделывать на аппаратную поддержку. только я думаю сначала нужно заставить работать старый код с ногодрыгами, чтобы было с чем сравнивать, т.к. мне не хватит скилла сразу написать новый код без ошибок, а т.к. код на других платформах работал, то проблема сейчас видимо всеж в лог. уровнях, и надо с ней разобраться, а потом уже переделывать, я так считаю.
на сборке на которой я ставлю эксперимент есть подтяжка к vcc 2 конденсатора и 2 резистора на 5.1к.
 

A_D

Active member
nhknhk, на скорую руку, не вникал толком, особо не чистил - работает или не?
Из изменений - исправил пины на PA_2, PA_0, номера лучше использовать из PinNames.h, а не свою, убрал почти весь вывод отладки и чуть поправил логику переключения вход\выход, ну и снес все, что касается библиотеки времени - влом было находить и ставить, сделал константу 128.
 

Вложения

enjoynering

Active member
странно вот что почему эта гадость работает на ESP, у которой питание тоже 3.3 вольта и не чирикает?
потому что ESP8266 толлерантна к 5в

вместо GTL2003 возьмите TXB0108, их полно в виде плат с гребенкой на ebay
 

enjoynering

Active member
Recently there are some discussion regarding whether ESP8266 I/Os are 5V tolerant. The most active one being the article on Hackaday. The same article was shared on ESP8266 Facebook group and Espressif CEO Mr Teo Swee Ann commented that “i can reply officially here: it is 5V tolerant at the IO. while the supply voltage is at 3.3V.”

вот тот самый твит - Baoshi on Twitter

дальше больше ba0sh1 не поврил господину Teo Swee Ann и провел свое собственное расследование наргузив GPIO пятью вольтами. Результаты теста с картинками тут - Is ESP8266 I/O really 5V tolerant? - Digital Me

шах и мат товарищ A_D
 

Вложения

sharikov

Active member
вот тот самый твит - Baoshi on Twitter

дальше больше ba0sh1 не поврил господину Teo Swee Ann и провел свое собственное расследование наргузив GPIO пятью вольтами. Результаты теста с картинками тут - Is ESP8266 I/O really 5V tolerant? - Digital Me
Профессиональная разработка основана не на твитах или постах в группе а на неукоснительном соблюдении Datasheet и других нормативных документов.
В ESP8266EX Datasheet 2018.02 V5.8 для IO по прежнему указано предельное напряжение 3,6V. Вот когда Espressif исправит документацию тогда чип и станет 5V толерантным.
 

A_D

Active member
Recently there are some discussion regarding whether ESP8266 I/Os are 5V tolerant. The most active one being the article on Hackaday. The same article was shared on ESP8266 Facebook group and Espressif CEO Mr Teo Swee Ann commented that “i can reply officially here: it is 5V tolerant at the IO. while the supply voltage is at 3.3V.”

вот тот самый твит - Baoshi on Twitter

дальше больше ba0sh1 не поврил господину Teo Swee Ann и провел свое собственное расследование наргузив GPIO пятью вольтами. Результаты теста с картинками тут - Is ESP8266 I/O really 5V tolerant? - Digital Me

шах и мат товарищ A_D
ага... а потом появляются посты, что вот чего то не шьется, чего то греется как утюг или коротит питание.. лень же документацию читать, проще в твитере чуваку поверить.
 

nhknhk

New member
в общем если кому интересно, на TM1637 я забил, просто взял 4 ре сдвиговых регистра sn74, работает отлично. единственное что пока не придумал как лучше реализовать регулировку яркости, то ли шим делать на самих регистрах, то ли завести питание индикатора через транзистор и его модулировать с контроллера?
 
Сверху Снизу