Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Однако, RGB-панель завелась!

Как оказалось, проблема была в используемыми китайцами компонентах: все-таки, чтобы оно заработало правильно, необходимо было входные уровни увеличить до 5В. Исходники на гитхабе.
Начало пайки:


Учитывая предыдущие проблемы с отображением, решил спаять пятивольтовые буферы, благо, элементная база у меня дома вполне-таки позволяет это сделать. Взял два CD4050, но т.к. они шестиканальные, тринадцатый канал реализовал на мосфете (2N7000). Сначала хотел какой-нибудь мелкий SMD'шный запаять, но оказалось, что у всех них слишком паршивые временные характеристики (чем меньше Rdson, тем выше емкость затвора, в итоге получилось, что самый паршивый с энергетической точки зрения полевик обладает наименьшим временем перехода — 10нс). Мосфет запаял на nOE, сделав его таким образом просто OE.
Сделал бы все вечером на работе, но сижу в состоянии непонятного то ли гриппа, то ли простуды. Врач мне рекомендовал на работу еще пару-тройку дней все же не ходить. Так что, вместо изготовления печатной платы, спаял все на макетке (в принципе, по времени вышло, наверное, даже быстрей: на кикад ушло бы минимум часа полтора, да еще часа два-три на изготовление платы и пайку; хотя, конечно, паять на готовую печатную плату приятней, чем проводочки припаивать на макетке). Вот такая штукенция получилась:


Что интересно: опять с первой попытки пайки у меня 2N7000 не заработал! С SMD'шными мосфетами у меня такое было очень редко, чтобы после пайки полевик не работал. С этими же чуть ли не в 50% случаев! Откусил старый, припаял новый — завелось.
Думал было добавить в качестве примера разноцветные летающие пиксели, но как представил объем кода (добавить аппаратный random, учитывать взаимодействие между пикселями и т.д., и т.п.), просто добавил "псевдорадугу".
Цвета у меня формируются в восьмибитном формате RRRGGGBB. Таким образом, чтобы отобразить экран один раз, его надо перерисовать семь раз (с учетом восьмиградационных цветов). Для работы используется таймер TIM3: строб он генерирует в режиме ШИМ с 50% заполнением, а по событию UEV пинает DMA, которое и передает на экран очередные две строки (т.к. формат HUB75 подразумевает одновременный вывод двух строк: одна в верхней половине экрана и одна в нижней). Номер строки, OE и LAT выводятся ногодрыгом в прерывании по окончанию передачи DMA (чтобы дождаться окончания последнего строба пришлось добавить в прерывание while(!(TIM3->SR & TIM_SR_UIF)), а отключение таймера гарантируется TIM3->CR1 |= TIM_CR1_OPM в том же прерывании ранее).
Надо бы когда-нибудь под этот экранчик простые классические игрульки реализовать: тетрис, змейку и т.п.

Видео-демонстрация работы.
UPD: поменял алгоритм отображения. Уж очень экран мерцает, если цвет изображать последовательностью из семи кадров. Сделал построчный "ШИМ": каждая строка отображается 7 раз, а уж пиксели в ней — в зависимости от уровня цвета. Reposted from dreamwidth: https://eddy-em.dreamwidth.org/287859.html.
Tags: stm32, железяки
Subscribe

  • CH552G

    Больше полутора лет назад я сварганил мини-стенд для работы с китайскими дешевыми МК с набортным "бескристалльным" USB — CH552G (они сейчас на…

  • Чем бы таким заменить STM32F072C8T6?

    Полез сейчас на али цены посмотреть, а там… В среднем уже по 600-700 рублей за штучку просят! Вообще охамели. И это - гарантированно БУшные ведь!.. А…

  • Понаблюдал, блин!

    Опять у нас что-то с сетью поломали. Хотел было протестировать, как наша подвесная часть оптоволоконного спектрографа работает, а из дома связь с…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 4 comments