Например TDA7294

Форум РадиоКот • Просмотр темы - DIY MORE OLED-091 (технический разбор)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт июл 08, 2025 22:16:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: DIY MORE OLED-091 (технический разбор)
СообщениеДобавлено: Вт июн 07, 2022 18:40:03 
Грызет канифоль

Зарегистрирован: Пт окт 28, 2011 16:01:18
Сообщений: 259
Рейтинг сообщения: 0
Фото (400кб)
СпойлерИзображение


OLED графический дисплей 0,91" 128x32 с интерфейсом I2C (400кГц)
Построен на базе "Китайского 14-pin OLED" (так и гуглить) стекла, с вмонтированным в него контроллером SSD1306 и 14-контактным гибким шлейфом.

ВНИМАНИЕ!
В выборке 5шт., брак составил 40%!
(возможно попалась подделка)
У обоих бракованных, вывод шлейфа 1 (C2P) оторван от кристалла под эпоксидной заливкой, починить невозможно.
Из за этого обрыва, одна из двух ступеней умножителя напряжения не работает, и свечение крайне тусклое.
Возможно лечится установкой 2-х диодов, но толком не проверял.

КОСЯКИ
Стекло приклеено к плате двухсторонним скотчем, после проверки работоспособности, рекомендуется переклеить чем то типа клея "Момент".
У самых выводов питания модуля, необходимо установить керамический конденсатор 1мкФ, так как поставить его на плате почему то "забыли".
Отсутствуют преобразователи уровня линий I2C.

ИСПОЛЬЗОВАНИЕ
Продавцы утверждают, что модуль совместим с питанием 3,0...5,0в, для этого на плате установлен стабилизатор напряжения 3,3в.
Но одновременно там установлены подтяжки 4,7к по линиям I2C, и сами эти линии имеют внутри микросхемы защитные диоды в питание.
В итоге, при питании процессора от более высокого напряжения, в сочетании с наличием подтягивающих резисторов с его стороны, в режиме сна индикатора, напряжение питания контроллера дисплея достигает напряжения питания процессора
(натекает через подтяжки и защитные диоды), из за чего контроллер оказывается под недопустимым напряжением!
Мои экземпляры от этого не сгорают, и работают корректно, но все же, ни кто не знает какой клон SSD1306 попадется в следующий раз...
Для борьбы с этим явлением, можно НЕ ставить подтяжки со стороны процессора, однако, если он запитан от 5в, нет строгой гарантии отсутствия ошибок из за несоответствия логических уровней сигналов.
Для гарантии корректной работы, нужно установить нормальные преобразователи уровня.

В остальном, экранчик неплох за свои деньги.
Можно получить 21х4 газетным шрифтом (купите очки), 16х4, 11х2, 8х2 шрифтами покрупнее. Выводить графику.
OLED не боится мороза, в отличии от LCD, которые при минус 20...25 работоспособны только очень условно.
Управление с AVR по I2C жрет очень много времени процессора, крутить мультики я бы в такой конфигурации не рекомендовал, но с нечастыми обновлениями вполне приемлемо.

Возможно кому то пригодится монтажная схема платы:
СпойлерИзображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DIY MORE OLED-091 (технический разбор)
СообщениеДобавлено: Вт июн 07, 2022 19:10:06 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
~Dimon~ писал(а):
Управление с AVR по I2C жрет очень много времени процессора
а у меня аппаратный i2c почти ничего не жрёт... :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DIY MORE OLED-091 (технический разбор)
СообщениеДобавлено: Вт июн 07, 2022 19:29:12 
Грызет канифоль

Зарегистрирован: Пт окт 28, 2011 16:01:18
Сообщений: 259
Рейтинг сообщения: 0
На каком камне?
Очень много жрет аппаратный I2C у AVR.
Посмотрите сколько ему прерываний надо, они там на каждый чих, START, STOP, ACK, адресный байт...
А хуже всего, внутри прерывания надо еще разбираться в его причине, и дернуть нужный кусок кода. USART в этом смысле гораздо легче, разные события дергают три разных прерывания.
Ну и DMA нет конечно, дергаемся на каждый байт.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DIY MORE OLED-091 (технический разбор)
СообщениеДобавлено: Вт июн 07, 2022 19:39:59 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
У меня ST7, и тоже самое. Только не куча прерываний, а одно. И нет в этом никакого ужаса. DMA - это отдельная тема. У некоторых (полагаю, что у большинства < 32 бит) его вообще нет. В AVR есть DMA? Да ещё с возможностью работы, пока ядро в спящем режиме? Не знал... Давайте сравним, как передать кучку байт по I2C и иному другому варианту (без DMA). Передал старт, адрес, снова старт, команду и понеслось, при вызове прерывания увеличиваю счётчик адреса памяти и улетает следующий байт. Всё остальное время, до вызова прерывания, мк что-то делает и в итоге общее время работы существенно уменьшается, или не делает ничего. Ну, что с другими вариантами? да то же самое с большинством.
Иное дело, что скорость у некоторых может быть значительно выше. А, забыл: в самом конце надо послать стоп :)

Код:
void I2C_IT_Function (void)
{        
   unsigned char Temp;
  I2C_ERROR |= (I2C_ErrCode)(I2CSR2 & ERR); // Error status copied to global variable
   Temp = I2CSR1;
   if (Temp & SB) //EV5
   {
      I2CDR = Address7bit; //Send address
   }
   else if ((Temp & EVF) && (!(Temp & BTF)))// EV6
   {
      I2CCR |= PE;
   }
   else if (Temp & BTF) //EV7-EV8
   {
   /// Tx ///   
      if (!(Address7bit & I2C_RX_MODE))
      {
         if (TxCount-- > 0)
         {         
            I2CDR = *(TxBuffer++);
         }
         else
         {         
            if (CanStop)
            {
               I2C_Generate_Stop();
               BusyFlag = 0;
            }
            else
            {
               Address7bit |= 0x01;
               if (RxCount == 1)
               {
                  I2C_ACK_Disable();
               }
               I2C_Generate_Start();
            }
         }
      }
   /// Rx ///
      else
      {
         if (RxCount == 2)
         {
            I2C_ACK_Disable();
         }
         if (RxCount == 1)
         {
            I2C_Generate_Stop();
            BusyFlag = 0;            
         }   
         if (RxCount-- > 0)
         {
            *(RxBuffer++) = I2CDR;
         }
      }
   }
   else
   {
      I2C_Interrupt_Disable(); 
   }
}

Много это сожрёт времени?


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DIY MORE OLED-091 (технический разбор)
СообщениеДобавлено: Вт июн 07, 2022 23:47:17 
Грызет канифоль

Зарегистрирован: Пт окт 28, 2011 16:01:18
Сообщений: 259
Рейтинг сообщения: 0
Посмотрел у себя, обработка прерываний I2C - около 100 клоков на байт, при условии что мы обновляем экран целиком из буфера, все 512 байт одной пачкой.
Посимвольный вывод мелким шрифтом, из за некоторых особенностей контроллера, потребует две транзакции на символ, по 6 и 7 байт, не помню точно, 4 или 5 служебных прерываний на транзакцию, плюс по одному на каждый байт.
Итого, порядка 50...90 тыс. клоков на полное обновление.
При 10...20 полных обновлений в секунду, оно отожрет 0,5...2МГц только на прерывания I2C, из 8/10МГц доступных при питании ниже 4,5в.
Ну а дальше уже вопрос конкретного проекта, можем ли мы позволить себе столько?

В AVR нет DMA и FIFO, по крайней мере в 8-битных Тини/Мегах, с другими дел пока не имел.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DIY MORE OLED-091 (технический разбор)
СообщениеДобавлено: Ср июн 08, 2022 02:20:11 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
как-то не привык так оценивать... я смотрю по времени работы и расходу энергии.
Но, предположим, возьмём Ваш вариант. Пока это всё равно не делает I2C плохим :) ведь совершенно верно, неизвестно, позволяет это проект или нет. И тогда надо сравнить и альтернативные варианты, в таком же стиле.

А у меня вроде есть похожих пара дисплея. Повожусь на днях тоже, а то валяются подаренные без дела...


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: DIY MORE OLED-091 (технический разбор)
СообщениеДобавлено: Вт май 30, 2023 16:00:57 
Грызет канифоль

Зарегистрирован: Пт окт 28, 2011 16:01:18
Сообщений: 259
Рейтинг сообщения: 0
Еще косяки, обнаруженные по ходу эксплуатации:

1. Set COM Pins Hardware Configuration (0xDA) - не устанавливается в дефолтное значение по включению питания.
Нужно обязательно настраивать из прошивки.
Вообще, лучше производить настройку полностью, не полагаясь на дефолты. Эта инфа просто на заметку.

2. Похоже что нет гистерезиса на входе RESET.
Аппаратный сброс контроллера дисплея при подаче питания, производится RC-цепочкой на плате, и он может происходить дважды.
Если начинать инициализацию по готовности (контроллер принимает команды без ошибок на шине, и возвращает статус 0x41), в течении примерно секунды после инициализации, дисплей снова сбрасывается, в итоге экран черный, и из регистра
статуса читается 0x41 (Display OFF).
В одном устройчтве это безобразие случается примерно в 20% случаев, в другом в 100%.
Все повторные инициализации (не после подачи питания), проходят нормально.

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


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y