Есть ESP8266 LOLIN(WEMOS) D1 R1 mini. К нему подключается дисплей на 16 светодиодных матрицах 1088BS (2 ряда по 8 матриц) подключены по SPI. И по SPI подключена SD карта. Матрицы работают от 5 вольт, SD от 3,3. Матрица подключена CS GPIO15, SD карта CS GPIO0. Так вот когда включено оба устройства, работает только дисплей. SD карта не инициируется. Если же от дисплея отключить CLK сигнал, то SD карта запускается. Пробовал использовать преобразователь уровня https://duino.ru/preobrazovatel-logicheskikh-urovney. Вроде заработало. Но тогда не работал сброс, т.к. на GPIO0 при загрузке получалась 1, а должен быть 0. ВОт думаю как выйти из ситуации?
А на какую ногу сброса я повесил другой функционал? У ESP8266 LOLIN(WEMOS) D1 R1 mini сброс на отдельно выделенном контакте и он у меня используется исключительно для сброса.
Когда стояли преобразователи уровня как я указал в первом посте сброс кнопкой, либо подачей низкого уровня на контакт сброса не работал. В принципе оно бы и ничего, но мне нужно было сбрасывать плату при переключении питания с батареи на БП от сети. Теперь сброс работает, но SD карта не работает.
@Delphin911 показывайте схему подключений, только реальную, а не так как на esp8266.ru парили всем моск, а потом оказалось что понатыкали там преобразователей из-за которых ничего не работало/ p/s и желательно код, хотя бы минимальный
Вот схема платы управления. Преобразователи убраны. Так что так оно сейчас и есть на самом деле. Не влезла сюда вторая плата, но там только матрицы светодиодные и MAX7219. Вот схема одной пары.
Ну не знаю. Шина SPI что там можно накосячить? Только с CS можно накосячить. Остальные сигналы стандартные, на распиновке ESP все показаны четко. MISO - GPIO12 MOSI - GPIO13 CLK - GPIO14 CS для дисплея GPIO15, для SD карты GPIO0. Ну и опять таки если все подключено, до дисплей работает, не работает SD. Если CLK у дисплея оторвать, то начинает работать SD.
Вот распиновка ESP-шки. Единственное вот смотрю TX можно использовать как CS в SPI. Может так и сделать? Тогда и преобразователи уровня можно оставить как были. Ведь для GPIO0требование при старте низкий уровень. А для TX вроде нет.
Да, код могу приложить в виде файлов, если так можно на этом форуме. Там 10 файлов различного объема кода. Да и собственно код то тут не при чем. Ведь работает же по отдельности. А в коде кроме указания пинов CS вроде ничего и нет по SPI.
SPI - это fullduplex шина. Т.е. передача и прием данных идёт по разным каналам. Отсюда делаем вывод, что двунаправленный преобразователь уровней для неё не нужен. На MOSI, CLK необходим простейший преобразователь на любом транзисторе, для MISO простейший резисторный делитель. CS формально не относится к шине SPI, но для него также двунаправленный преобразователь не нужен. Достаточно такой же, как и для CLK. В качестве CS можно использовать абсолютно любой вывод. Когда на шине висит более одного устройства, то управлять сигналами CS необходимо вручную, а не через библиотеки или ещё как. Но что там за проблема со сбросом - я не понял. Пока на ножке reset висит 0, МК вообще стоит в стопе, т.к. все регистры обнулены, в том числе и программный счётчик.
Дело в том, что при использовании указанного преобразователя на ноге GPIO0 при загрузке висит 1 с преобразователя. А должен висеть 0. Поэтому ESP-шка виснет и не перегружается.
Да, не нужен. Был выбран по совету на форуме именно этот как самый простой. И все работало. Ну за исключение сброса.
Ну вроде заработало. Поменял выход CS для дисплея с GPIO15 на GPIO1, вернул преобразователь уровня и все заработало. И сброс работает и дисплей и SD карта.
Недавно натыкался на подобное , когда эта нога GPIO0 висит в воздухе при сбросе при определённых конфигурациях других выводов - камень висит при сбросе, когда она подтянута k +3.3v резистором то всё пускается.