Перейти к содержанию
    

WS2811 - уменьшает Duty Cycle на Dout

А, ну да, повторитель на pnp как раз правильно сдвинет, не сообразил. Наверное, это вообще будет наипростейшим вариантом. Резистора на 1K должно нормально хватить (подозреваю, что заваленные фронты на осциллограмме это все же подгадил пробник, оно, может быть, реально и с пять кило не так страшно было бы, как выглядит, но все равно - многовато).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 minutes ago, Plain said:

Выход остался стандартным, резистор не виноват, но 5,1 кОм однозначно не годится, 1 кОм это предел, лучше 470 Ом.

 

Это не будет работать, от шунтового стабилизатора ничего не отобрать, его паспортный резистор 2,7 кОм явно рассчитан впритык.

И не работает..... Ни с OpenDrain ни с PushPull

 

Взяла 5 вольт от программатора, прицепила резистор.

Ножку вот так

GPIO_InitStruct.Pin = LED_DATA_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

Получила осциллограмму

ZFIKKOo7.png?download=1&name=%D0%A1%D0%B

 

Светодиода беспорядочно мерцают. Первая мысль - из за заваленных фронтов опять сбои чтения.

Но..!  Во первых, светодиод моргают одним и тем же цветом (то есть нет случайных ошибок чтения), во вторых цвет смещен.

То есть, если писать 255,0,0 - горит не красный, а синий, если 0,0,255 - не синий, а зеленый.

 

Может глянете код выше - там где то собака порылась?

 

Вопрос - после того как записалось - линию в ноль на 50 мкс, а дальше - ее нужно в единицу? Когда гореть должно начать? После прошествия 50 мкс или после 50 мкс и перевода в единицу?

Второй вопрос - уже по STM. Если бит установить в единицу, то транзистор открывается и притягивает линию к земле? Или закрывается и отпускает?

Эх... похоже проблема нерешаема на OPENDRAIN

Вот - все уже опробовано до нас http://we.easyelectronics.ru/STM32/gpio-vyhod-v-rezhime-opendrain.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

50 микросекунд - это неактивность (для активации загруженного состояния), 50 это минимум, можно держать сколько угодно долго.  В единицу линия перейдет с началом передачи следующей посылки, как-то отдельно это делать не надо.  Цвета могут быть и в самой гирлянде перепутаны, кстати. По полярности - не STMщик, но традиционно если пишем в выходную защелку - "0" соответствует низкому, "1" - высокому (или обрыву для OD). А вот если в регистры направления - это уже надо смотреть даташит (в STM8 так же, но с ними работал довольно давно, на память не скажу). На счет заваленных фронтов не бойтесь - на этой осциллограмме уже сносно. И, потом, пробник даже с 15 pF уже подвалит, если слабый выход, а у WS2811 гистрезис 350 mV. Уровни - Plain совершенно верно подсказал, эмиттерным повторителем на ширпотребном pnp. И уровни придут в норму, и дополнительно безопасность для контроллера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, rx3apf said:

но традиционно если пишем в выходную защелку - "0" соответствует низкому, "1" - высокому (или обрыву для OD).

То есть, приведено к интуитивно-логически понятному формату, единица - это закрытый транзистор?

 

Эмиттерный повторитель... по количеству деталей проще одногейтовый согласователь)))

А по поводу осциллограммы - у меня переменный резистор на 10 к. И такая осциллограмма появляется при очень узком диапазоне сопротивлений, так что даже руками трудно выставить.... может резистор гнилой....

Устала что-то.... к черту все до завтрашнего дня...

6 minutes ago, rx3apf said:

50 это минимум, можно держать сколько угодно долго. 

То есть, даем команду опустить на 100 мкс, и на 51 мкс диоды обновятся? Или зажгутся? Пока идет программирование, они выдают предыдущее состояние или гаснут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 минут назад, murmur сказал:

 

Вот - все уже опробовано до нас http://we.easyelectronics.ru/STM32/gpio-vyhod-v-rezhime-opendrain.html

Там, похоже, запутались с 5V-толерантными линиями. Естественно, если тянуть трехвольтовый к пяти, то диод откроется. Но Vdd_FT не три вольта, так что проблемы быть не должно.

1 минуту назад, murmur сказал:

То есть, приведено к интуитивно-логически понятному формату, единица - это закрытый транзистор?

Да (если речь о нижнем плече).

 

1 минуту назад, murmur сказал:

 

Эмиттерный повторитель... по количеству деталей проще одногейтовый согласователь)))

Ну, если в заначке лежит - то конечно. Зато ног паять столько же в итоге ;)

 

1 минуту назад, murmur сказал:

 

То есть, даем команду опустить на 100 мкс, и на 51 мкс диоды обновятся? Или зажгутся? Пока идет программирование, они выдают предыдущее состояние или гаснут?

На 51-й микросекунде индикация обновится согласно информационной посылке. Пока идет посылка - индицируется прежнее состояние. Иначе это было бы очень неэстетично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 минуты назад, murmur сказал:

глянете код выше

В теме ничего нет. Кроме того, я сторонник аппаратного преобразования SPI в протоколы WSxxx.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть, имелся в виду код инициализации порта (кода программы я тоже не увидел) ? А так да, SPI  хорошо подходит (я делал через SPI с парой внешних одновибраторов, на AVR).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гре...ные китайцы.

По даташиту, если на SET единица, то это LowSpeed, если висит в воздухе - HighSpeed.

Распознав висящий в воздухе пин и прочитав даташит, я решила, что это великая задумка - включить режим HighSpeed. 

Но все оказалось по китайски просто - видать поставили микросхемы из рисовой муки, не поддерживающие HighSpeed. А раз не поддерживающие, то и вывод SET можно оставить в воздухе. Это то меня и сбило с толку -  я поставила половинные тайминги.

Изменила тайминги на обычные, все заработало как часы. Вот только R,G и B у них действительно перепутаны.

Что до пуллап-резистора - схема работает в широких его пределах, но красивая и идеологически правильная осциллограмма получается только при 300 ом.

Изменено пользователем murmur

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проще, да. Но я хотел "честно". А корпус все равно один (хотя, конечно можно одногейтовую).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имелось ввиду, в случае конкретно WS2811 можно вот так упростить, а для WS2812 без триггера не получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот тут я чего-то торможу - протокол-то одинаковый, ну времянки чуть различаются, это непринципиально (ну, если не рассматривать 400kHz вариант). Сперва я вообще хотел объединить SPI и таймер только логикой, но не справился с их взаимосинхронизацией. Наверное, можно и в моем случае (с запускаемым одновибратором) управлять длительностью по MOSI, но чего его, пассив, экономить, а корпус (74HC74) все равно есть...

Изменено пользователем rx3apf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 часов назад, rx3apf сказал:

протокол-то одинаковый, ну времянки чуть различаются

Сильно отличаются, схема посложнее одного элемента, но таки можно обойтись без триггера и одним корпусом:

 

bad-447.thumb.gif.8e8861cd588fca5470180c8c118e4771.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, сложность фактически сопоставимая. И все равно один корпус, так что принципиальной разницы нет. Что до времянок - в 800-kHz режиме они (2811 и 2812) совместимы (по первому взгляду, 2811 в руках не держал), и имеют широкий допуск. Ведь достаточно, чтобы дискриминатор отличил "0" от "1" в первом элементе цепочки, а дальше они сами уже разберутся (в том и прелесть протокола).

 

upd: а вот, кстати, и 2811 подержал в руках - как раз сегодня получил 50-диодную гирлянду, купленную чуть дешевле $7. С времянками под 2812 (400/800 ns) - прекрасно работает (а то попал бы на такое чудо, как у ТС - огорчительно было бы).

Изменено пользователем rx3apf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это тоже просто честный вариант, к тому же, можно прямо на брюхе SOIC навесным монтажом спаять, а подковать без спецсредств 74LVC1G08 не каждый сможет, хотя на первый взгляд, 1,27 мм и 0,95 мм не сильно отличаются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...