8(495) 662-59-14

Главная / Форум
  • РУС / ENG
(495) 662-59-14 Многоканальный телефон Не дозвонились?
Форумы >>ЖК индикаторы >>RE: MT-12864A-2FLA
RE: MT-12864A-2FLA

Tr0l0l0
Пользователи

Сообщений: 4
Регистрация: 01.02.2024

Здравствуйте, приобрел дисплей MT-12864A-2FLA. Подсветка работает, дисплей включается, однако не выполняются команды установки страницы и команды установки адреса. Экспериментальным методом выяснил, что не работает пин DB6. Если оба его соседних пина (DB5 и DB7) имеют высокое значение, DB6 тоже горит, если хотя один из соседних пинов имеет низкое значение, он гаснет. Сам пин на напряжение не реагирует. Не исключаю, что мог повредить, пока учился с ним работать, однако явных повреждений нет. Хотелось бы узнать, дисплей мёртв или все-таки есть шанс, что я просто что-то делаю не так. Попробовал с другим похожим дисплеем, он работает.

Для управления использовал stm32, код приложил.

Присоединен файл
Скачивание файлов доступно только зарегистрированным пользователям.

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение

Петухов_Дмитрий
Пользователи

Сообщений: 1467
Регистрация: 25.11.2009

Явных ошибок в коде не вижу (но все биты в командах и не сверял, есть же макросы, функции, зачем опять эта гадская copy/paste).

Попробуйте разомкнуть сигнал DB6 между STM и ЖКИ (лучше прямо от вывода ЖКИ) и посмотрите кто когда какие уровни выдаёт. Может где-то просто коротыш висит (его и прозвонить не помешает, отдельно на самом индикаторе и отдельно на STM или проводах к нему). Ещё можно в разрыв DB6 включить резистор типа 5кОм и смотреть кто что выдаёт.

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

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение

Tr0l0l0
Пользователи

Сообщений: 4
Регистрация: 01.02.2024

Проверял на нескольких контроллерах, пробовал использовать разные пины контроллера. Независимо от того, выдает контроллер низкое или высокое значение (проверял мультиметром), на состояние DB6 это не влияет: к примеру, если с некоторым интервалом подавать дисплею команду для записи данных, где все DB пины имеют высокое значение, будет выводится полоса в 8 точек, но через какое-то время точки, задаваемые пином DB6 начинают исчезать, такая же картина, если подать на DB6 низкое значение, а на остальные высокое.
Проверил на замыкание все пины дисплея, вроде нету. Пробовал подключать DB6 через 5 кОм резистор -- если подать с контроллера до дисплея высокий сигнал, до и после резистора напряжение не меняется и соответствует высокому уровню, поведение дисплея при этом прежнее.

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение

Петухов_Дмитрий
Пользователи

Сообщений: 1467
Регистрация: 25.11.2009

Я не понимаю слов "начинают исчезать". Как именно исчезать? Все сразу или по одной? Подряд или в случайном порядке? Мгновенно или постепенно угасают? Тут может быть до трёх разных вариантов неисправности, в разных комбинациях.

Если предположить самый вероятный вариант, что поначалу всё выводится правильно, а потом с какого-то момента всё вдруг сразу неправильно, то это очень похоже на отсутствие сигнала на DB6 - сначала его выдали, а потом выдавать перестали и напряжение сохраняется на выводе лишь на паразитной ёмкости провода и выводов микросхем. И как раз с соседних выводов натекает/стекает через паразитную ёмкость (и может быть сопротивление). Коснитесь пальцем вывода DB6 на индикаторе и на STM32 (это внесёт слабую помеху), будет ли какой-то эффект, если будет (любой) - STM выводом уже не управляет, ищите кто сбросил настройки вывода.
Проверьте по доке на STM этот вывод DB6 случайно не с открытым коллектором (стоком) - может в момент записи в регистр туда выдаётся импульс, а потом напряжение больше не поддерживается? И удерживается лишь паразитной ёмкостью.
Или может он чем-то аппаратным тоже используется и оно вмешивается и меняет уровень сигнала ...

Выводите для теста не 0xFF, а пару 0xAA,0x55 (или любую другую взаимно инверсную), шахматное поле, будет видно сохраняется ли напряжение от предыдущего байта или всегда выдаётся правильное новое.

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение

Tr0l0l0
Пользователи

Сообщений: 4
Регистрация: 01.02.2024

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

Еще наблюдение, если при безостановочной записи данных, сразу после подачи сигнала на стробирующий пин, сбрасывать все пины, кроме пина ресета, в низкое значение, "постепенное угасание", описанное выше, не происходит. В этом случае, при подаче 0xAA и 0x55 -- DB6 гаснет, когда DB5 и DB7 низкие и горит, когда DB5 и DB7 высокие (независимо от того, какое значение подано на DB6).

Если значения пинов не сбрасывать после записи, происходит картина с "постепенным затуханием", когда DB5 и DB7 высокие. Когда они низкие, соответствующие DB6 точки не загораются вообще.

Вывод, с которого на DB6 подается сигнал вроде нигде не используется и на нем ничего не висит. К тому же я пробовал использовать разные пины контроллера -- проблема с DB6 есть независимо от того, куда он подключен. Пины скофигурированы следующим образом (для GPIOB аналогично):
GPIO_InitStruct.Pin = OUTPUTPINSA; // идентификаторы используемых пинов из GPIOA
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение

Петухов_Дмитрий
Пользователи

Сообщений: 1467
Регистрация: 25.11.2009

Tr0l0l0 писал(а):
Еще наблюдение, если при безостановочной записи данных, сразу после подачи сигнала на стробирующий пин, сбрасывать все пины, кроме пина ресета, в низкое значение, "постепенное угасание", описанное выше, не происходит. В этом случае, при подаче 0xAA и 0x55 -- DB6 гаснет, когда DB5 и DB7 низкие и горит, когда DB5 и DB7 высокие (независимо от того, какое значение подано на DB6)
Меня постоянно сбивает слово "гаснет", это как бы растянутый во времени процесс, а судя по логике фразы тут должно быть состояние, т.е. не "гаснет", а "погашена" или "не горит".
Судя по этому описанию (да и абзацем выше) снова больше всего похоже что нет контакта между выводом DB6 и внутренними схемами индикатора и туда натекает напряжение с соседних выводов. Только теперь это похоже уже внутри индикатора ... И я не представляю как и чем надо убить схему на входе чтобы разорвать её связь с остальной схемой дальше вглубь. Статикой разве что, пробить оба входных полевика чтобы они никогда не открывались ... Ну в принципе пожалуй возможно. Опять же, Вы ни разу не сказали про отличия поведения двух кристаллов (правого и левого), значит убиты одинаково оба, что ещё подозрительнее, хотя всё равно возможно.
Других причин описанного поведения я придумать не могу. Т.е. индикатор убит где-то внутри (скорее всего статикой) и ничего с этим не поделать.

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение

Tr0l0l0
Пользователи

Сообщений: 4
Регистрация: 01.02.2024

Петухов_Дмитрий писал(а):
Tr0l0l0 писал(а):
Еще наблюдение, если при безостановочной записи данных, сразу после подачи сигнала на стробирующий пин, сбрасывать все пины, кроме пина ресета, в низкое значение, "постепенное угасание", описанное выше, не происходит. В этом случае, при подаче 0xAA и 0x55 -- DB6 гаснет, когда DB5 и DB7 низкие и горит, когда DB5 и DB7 высокие (независимо от того, какое значение подано на DB6)
Меня постоянно сбивает слово "гаснет", это как бы растянутый во времени процесс, а судя по логике фразы тут должно быть состояние, т.е. не "гаснет", а "погашена" или "не горит".
Судя по этому описанию (да и абзацем выше) снова больше всего похоже что нет контакта между выводом DB6 и внутренними схемами индикатора и туда натекает напряжение с соседних выводов. Только теперь это похоже уже внутри индикатора ... И я не представляю как и чем надо убить схему на входе чтобы разорвать её связь с остальной схемой дальше вглубь. Статикой разве что, пробить оба входных полевика чтобы они никогда не открывались ... Ну в принципе пожалуй возможно. Опять же, Вы ни разу не сказали про отличия поведения двух кристаллов (правого и левого), значит убиты одинаково оба, что ещё подозрительнее, хотя всё равно возможно.
Других причин описанного поведения я придумать не могу. Т.е. индикатор убит где-то внутри (скорее всего статикой) и ничего с этим не поделать.

От выбора кристалла поведение не меняется, проверял. Ну что ж, все-равно спасибо.

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение
Сейчас на форуме (гостей: 8, пользователей: 0 , из них : 0 )