Свежие обсуждения
Микроконтроллеры

Светодиодный сдвиговый регистр MBI5026GF

1 2

Делаю динамическую индикацию с применением сдвигового регистра MBI5026GF, у которого есть стабилизация тока. Регистры подключены цепочкой, выход первого SDO соединяется с входом второго SDI. Сигнал CLK подается одновременно на все микросхемы. Заметил, что они работает немного не так, покопавшись с лог. анализатором я заметил, что сигнал на выходе микросхемы не соответствует входному:

Черным показан сигнал клока, далее сигнал с выхода МК, красным и желтым - сигнал после первой и второй микросхемы.

Судя по даташиту, MBI5026GF "записывает" байт в момент перехода клока с "0" в "1". Это первое мое общение со сдвиговыми регистрами, поэтому не знаю, куда копать дальше. Между байтами выход МК на SDI пребывает в "0", а на выходе первой и последующих микросхем в "1".

Частота клока 160 кГц, кроме первого импульса, который имеет длительность 1 мкс (хотя и в допусках даташита на регистр), но я пока не понимаю, почему аппаратный SPI микроконтроллера NUC220LE3AN дает первый короткий импульс. Передаю с МК байт 0x55FF.

Вот так выглядит передача байта 0x81 (первый и последний бит "1", остальные "0"):

 
Сергей К: Сергей Квчера, 23:41 (вчера, 23:51) Судя по даташиту, MBI5026GF "записывает" байт в момент перехода клока с "0" в "1".

Клок никуда байт не записывает. Он только сдвигает содержимое сдвигового регистра, вдвигая очередной бит с SDI во внутрь. После передачи всех битов (16*N) подаётся записывающий импульс на вход LE. Переданные данные после импульса LE появляются на выходах микросхемы (при условии, что уровень на ОЕ низкий).

 

На этих регистрах: http://ucprog.ucoz.ru/publ/chasy_termometr_s_bolshimi_led_s_radiodatchikom/1-1-0...

 

Tadas: После передачи всех битов (16*N) подаётся записывающий импульс на вход LE. Переданные данные после импульса LE появляются на выходах микросхемы (при условии, что уровень на ОЕ низкий).

Дополню...
Если на входе LE всё время присутствует 1, то информация сразу отображается на выходе (при условии, что уровень на ОЕ низкий).

Но если честно, я так и не понял, в чём проблема...
Игрался с этим регистром - понравилось. Ни каких проблем в работе не увидел.

 
DWD: Но если честно, я так и не понял, в чём проблема...

Мне нужно загрузить, например, байт 0x81 во второй 16-ти битный регистр, я передаю в первый 0x81 0xFF 0xFF 0xFF (т.е. 4 байта), после загрузки первых двух байт в первую микросхему, она должна с каждым следующим клоком выгружать на свой выход "лишние" биты, которые были загружены первыми (сдвигать). Но на выходе вместо "0х81" я получаю "0х01" (т.е. левый бит пропал).

Если посмотреть на эту осциллограмму, то видно, что на входе первого регистра первый бит был "1" (коричневая осциллограмма), а на ее выходе он уже пропал (красная).

У меня 6 регистров соединены последовательно, работают с динамической индикацией.

Tadas: Переданные данные после импульса LE появляются на выходах микросхемы (при условии, что уровень на ОЕ низкий).

Это работает.

 
Сергей К: на ее выходе он уже пропал (красная).

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

 
Сергей К: Это работает.

Т.е. на выходах появляются правильные данные ?

Сергей К: а на ее выходе он уже пропал (красная).

Никуда он не пропал. После шестнадцатого клока 1 и стоит на выходе. При следующем клоке она вдвинется в следующий регистр. Чудес не бывает. Чтобы проще разобраться было, перед подачей исследуемого байта вгоните в цепочку регистров серию нулей чтбы стереть то, что там раньше было. Тогда ясней будет видно что входит и что выходит.

 

Должна стоять на 17ом

 

Все, как всегда. Пропаял выводы SDI/SDO и все заработало.

Tadas: Т.е. на выходах появляются правильные данные ?

На первом регистре - да, а на остальных не все биты выставлялись верно. Причиной оказалась плохая пайка.

 
Сергей К: Причиной оказалась плохая пайка.

Еще бы картинку приложить правильно транслируемых битов. Для закрытия вопроса ;)

Как пример для разбирательства: