Юзаем дисплеи от сотовых и других потаскунчиков.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

Подскажите по дисплею NOKIA 1202 (контроллер STE2007)!
Я не знаю, китайский он или нет, но покупался на территории РФ в магазине.
Проблема в медленной скорости вывода информации на дисплей. МК ATmega328P, тактовая 1 МГц. Питание МК и дисплея 3,3 В.

SPI пробовал два варианта: программный "ногодрыг" и вариант с посылкой бита команда/данные программно с последующей инициализацией аппаратного SPI.
Программный вариант работает только если есть задержка по между низким и высоким уровнем SCK не меньше 35 мкс.
По второму варианту, работает только при частоте шины SPI = fosc/64 =15625 Гц (64 мкс).
При частоте шины SPI = fosc/32 =31250 Гц (32 мкс) уже ничего дисплей не выводит.

Пробовал инициализировать дисплей по-разному. В даташите инициализация короткая, остальные параметры после сброса устанавливаются по-умолчанию и описаны в табл. 17 даташита. При такой инициализации задержка в SCK должна быть не менее 50 мкс для моего дисплея.
На просторах интернета есть много вариантов инициализации. В частности, подглядев в этих вариантах, я установил Refresh Rate = 65 Гц (по дефолту 80 Гц) и выставил Bias Ratio = 1/4 (по дефолту 1/10). Я не смог разобраться, как данные параметры влияют на скорость работы дисплея, но с их установкой скорость выросла и задержка по между уровнями SCK составила 35 мкс.

Есть ли способ заставить дисплей работать быстрее?
Там же, на просторах интернета, говорилось, что для дисплея NOKIA 1202 можно выставить задержку равную нулю и дисплей будет очень шустро выводить информацию. Информация взята отсюда. https://digitalchip.ru/obnovlenie-bibli ... leev-nokia
И библиотеку эту я тоже пробовал. Работает одинаково по скорости с моей. Да это и не удивительно, если самая главная функция SendByte написана аналогично примеру.

Просто те же дисплеи с контроллером SSD1306 работают на частоте шины до 400 кГц и очень шустро выводят информацию. Здесь же скорость в 8 раз меньше вышла, это если брать программный SPI с задержкой 35 мкс. И вообще, получилось, что программный SPI работает шустрее аппаратного.
В остальном, на моём дисплее не регулируется контрастность параметром Electronic volume.
PS. Charge Pump = 4х по советам с того же интернета для питания дисплея и контроллера от 3,3 В.
Вложения
ste2007.pdf
(725.71 КБ) 546 скачиваний
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Реклама
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение WiseLord »

Интересно, что по даташиту из вложения допустимые скорости по SPI должны мегагерцами исчисляться.
Реклама
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

Так в том то и дело. У меня в данный момент полное обновление дисплея составляет 8*35*(96*9)/1000=242 мс, где
8 - бит данных;
35 мкс задержка между передачей бит
96*9 - количество заполняемых столбцов в дисплее.
Но визуально, требуется явно больше времени на обновление и, скорее всего, я чего-то не учел.
Причем, что интересно, интерфейс SPI в данном дисплее требует 9 бит и я их реально передаю. Но, почему-то, при передаче бита команда/данные задержка на SCK не требуется, а при последующей передаче 8 бит она уже нужна. Поэтому то в формуле я и поставил первым число 8.
По факту, при нынешней частоте МК в 1 МГц, время на исполнение команды 1 мкс, что согласно даташита на STE2007, вполне достаточно для работы SPI интерфейса
мой код по передаче 9 бит с использованием программного SPI
Спойлер

Код: Выделить всё

// Отправляем байт данных дисплею
static void LCD_SendByte(uint8_t mode, uint8_t c)
{
	CS_LCD_RESET;
	CLK_LCD_RESET;			
	// Формируем первый передаваемый бит - выбор память-команда
	if (mode) {SDA_LCD_SET;}	// data
	else {SDA_LCD_RESET;}		// cmd
	CLK_LCD_SET;

	// В цикле передаем остальные биты
	for(uint8_t i=0; i<8; i++) 
	{		
		CLK_LCD_RESET;				
		// Выставляем бит данных
		if (c & 0x80) {SDA_LCD_SET;} // передаем 1
		else {SDA_LCD_RESET;}	// передаем 0
		// Проталкиваем тактовым импульсом
		_delay_us(35);		
		CLK_LCD_SET;
		// Следующий бит
		c <<= 1;
	}

	CS_LCD_SET;					 
}
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
AAX
Опытный кот
Сообщения: 719
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение AAX »

А Вам зачем-то нужно каждый раз при передаче байта дёргать Chip Select? IMHO лучшей тактикой будет "прижать" CS к земле навсегда, аппаратно :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

[uquote="AAX",url="/forum/viewtopic.php?p=3728038#p3728038"]А Вам зачем-то нужно каждый раз при передаче байта дёргать Chip Select?[/uquote]
А что это даст? Лишние 2 мкс на переключение CS? У меня там 35*8=280 мкс на передачу байта мешают. А 2 мкс - это ерунда
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Реклама
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Сериг »

Всех приветствую! Есть у кого библиотека для вывода на st7789/st7735 не ардуиновская? Нужны сами функции вывода теста и изображений на экран, не хватает смекалочки... Пишу на си, буду благодарен за любую помощь. Компилятор CVAVR
Реклама
AAX
Опытный кот
Сообщения: 719
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение AAX »

serg_svd, а Вы попробуйте :) я не работал с такими дисплеями никогда, просто посмотрел в даташит мельком. Каждый раз, когда Вы "поднимаете" CS, контроллер дисплея обрабатывает данные. И в даташите есть тайминги, на какое время минимум контроллер будет занят. Если хотите - почитайте, посчитайте. Мне кажется, что попробовать намного быстрее. "Отцепить" CS от МК, подключить его к земле. Убрать дилей из Вашей функции передачи данных. Минутное дело.
А что Вам кажется, что это ничего не изменит - так вода-то темна в облацех :) Буферы приёма, буферы передачи... Вы на каждый битик ставите 35 мкс задержек, а на самом деле значение имеет суммарная сформированная пауза в 280 мкс. Потому, что контроллер дисплея раньше этот байт не может забрать. Потому, что Вы ему CS тыкаете без нужды 100500 раз на каждом обновлении экрана. Я бы понял, если б на этом же SPI висела другая периферия, и нужно было б её опрашивать постоянно. (хотя не, вру, всё равно не понял бы).
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

AAX писал(а):а Вы попробуйте
Да попробовать то реально делов на полминуты. И они ушли на пайку CS на землю, как Вы и рекомендовали. delay убрал. В итоге, дисплей ничего не выводит. Вернул обратно управление CS и delay - все работает как и раньше. Тормознуто, но работает
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
AAX
Опытный кот
Сообщения: 719
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение AAX »

А с "заземлённым" CS и delay-ем работает? Может, CS на землю припаять я и погорячился :) Но после каждого переданного байта его дёргать точно ни к чему
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

[uquote="AAX",url="/forum/viewtopic.php?p=3728096#p3728096"]А с "заземлённым" CS и delay-ем работает?[/uquote]
Не работает
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

Отбой тревоги!
Нашелся у коллеги дисплей 1202. Подключил, контраст регулируется, на 8МГц работает. Все задержки закомментировал.
Так что опять я попал на левую железку
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Chettuser

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Chettuser »

Мой 1202 просто летает! А Вы там резет програмный не делали перед инициализацией (честно - код не смотрел)?

Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

[uquote="Chettuser",url="/forum/viewtopic.php?p=3731888#p3731888"]А Вы там резет програмный не делали перед инициализацией (честно - код не смотрел)?[/uquote]
А кода инициализации я не показывал. Меня больше код SPI 9 бит интересовал. Я думал в нем ошибка где-то.
При инициализации вначале аппаратно сброс делается, дергая ногу RESET. Далее Первой командой идет E2h. А как программный Reset влияет?

PS. у меня нет под рукой именно моего кода инициализации, он на рабочем компьютере (могу завтра выложить). Но если ориентироваться по командам, то инициализация по ДШ такая (код для примера взят с сайта easyelectronics.ru). Отличие только в том, что я закомментировал строчки с регулировкой контраста. На моем дисплее они просто не работали и контраст не регулировался.

Код: Выделить всё

  LcdSend( 0xE2 , 0 );  // Soft reset
  LcdSend( 0x3D , 0 );  // Charge pump
  LcdSend( 0x01 , 0 );  // Charge pump = 4 (default 5 is too hight for 3.0 volt)
//  LcdSend( 0xE1 , 0 );  // Additional VOP for contrast increase
//  LcdSend( 0x16 , 0 );  // from -127 to +127
  LcdSend( 0xA4, 0 );  // Power save OFF
  LcdSend( 0x2F, 0 );  // Booster ON Voltage regulator ON Voltage follover ON
  LcdSend( 0xAF, 0 );  // LCD on
Ну и дополнительно я активировал:
serg_svd писал(а):я установил Refresh Rate = 65 Гц (по дефолту 80 Гц) и выставил Bias Ratio = 1/4 (по дефолту 1/10). Я не смог разобраться, как данные параметры влияют на скорость работы дисплея, но с их установкой скорость выросла и задержка по между уровнями SCK составила 35 мкс.
После этого занимался правкой кода программного SPI. Тоже не знаю по какой причине, но заменив строчки

Код: Выделить всё

if ()....{} else {}
на тернарную операцию я еще получил выигрыш в скорости, но все равно видно было как заливает данные контроллер в дисплей. На оригинальном дисплее скорость была очень высокая. Но оригинальный дисплей не мой, хотя спасибо коллеге, что он у него нашелся. Иначе я бы еще кучу времени потерял пока не сдался и не запинал бы свой дисплей в ближайшую мусорку.
Chettuser писал(а):Мой 1202 просто летает!
1320 fps, конечно внушает. Я свои посчитать не могу, но пусть будет 1-2 fps…
Но есть такая информация. Я общался с одним разработчиком. Он мне показывал скриншот с программы STM32CubeMX. Там SPI 9 bit был настроен на скорость 18 Mbit/s и дисплей спокойно работал с этой скоростью. Я попытался посчитать, хотя бы приблизительно, скорость работы с моим дисплеем и у меня вышло 27 kbit/s. И то, очень приблизительно, так как я не учитывал тики самого контроллера. В реальности там может быть еще медленней.
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Sergi »

Я запускал 1110 в графическом режиме
C моей тактовой 48 МГц буфер выталкивается за 0.7 мСек
https://www.youtube.com/watch?v=4BIfsrSmDO8
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

Sergi, шикарно.
У меня работало только с тактовой 1 МГц. На 8 МГц я устал подбирать искусственную задержку между CLK_L и CLK_H.
По даташиту там наносекунды должны быть. У меня же задержки до 50 мкс на 1 бит SPI (!!!) приходилось ставить.
И еще, в даташите на STE2007 временные характеристики приведены для тактирования на частотах 1 и 4 МГц. Выходит, что тактирование на частоте 48 МГц недокументированное?
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Sergi »

Дисплей подключен к STM32F030 работающем на частоте 48МГц. SPI работает без делителя. Частота SCK 12МГц. Была идея запустить дисплей с изображением градаций серого, но за практической ненадобностью не сделал.
Chettuser

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Chettuser »

serg_svd писал(а):Выходит, что тактирование на частоте 48 МГц недокументированное?
у STM32F030?
Он спокойно гонится до 90 МГц и даже больше! Но я бы не стал так делать, я этот фокус проворачивал из чистого любопытства. При разгоне всё упирается в частоту Flash, срам и проц молотят нормально, без сбоев. Например STM32F767 спокойно работает и на 500 с лишним МГц - опять же упираемся во Flash (примерно 60-70 МГц это предел). :beer:
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение serg_svd »

Chettuser писал(а):у STM32F030?
Да нет, конечно! :)) В способностях STM32 работать на высоких частотах я не сомневался.
А вот дисплей на таких частотах - явно недокументированная фишка :). Повторюсь, в ДШ временные характеристики приведены только для частот тактирования 4 МГц и 1 МГц
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Chettuser

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Chettuser »

Тот, что на видео, не работает на такой частоте, обновление изображения максимум 80 Гц по даташиту. 1300 - это скорость, с которой я пытаюсь впихнуть данные в дисплей )
Аватара пользователя
Anatoliy1000
Прорезались зубы
Сообщения: 202
Зарегистрирован: Сб фев 13, 2016 13:16:18
Откуда: Красноярск

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Anatoliy1000 »

Здравствуйте! Есть много проектов секундомеров. Но все они внешне похожи на колхозные варианты. Есть дешевый секундомер китайский 150-200 рублей, но у него функционал ни о чем. В него можно добавить микроконтроллер и делай что хош. Но как туда его впиндюрить?
Вскрывал. Там между платой и дисплеем резиновая вставка, видимо что бы не паять. Эта резинка с токопропускающими полосками: прижали - прикрутили = припаяли. Заменить плату надо на лутованную, так как шаг где-то 0,5 мм между выводами. Лутовать не пробовал, раньше делал только на платках с "дырочками"))). Подключиться к имющемуся МК пока не представляется возможным по моему разумению, так как он запаян в черную каплю слюды (как обычно в гирляндах и т.д. и т.п.)

Может у кого-то есть опыт? Подскажите или пните ссылочку.
За любую помощь (даже попытку) ставлю +.
Ответить

Вернуться в «Периферия»