Форум по микроконтроллерам: Подключаем LCD SSD1963 к STM32 по FSMC_16bit +Touch - Форум по микроконтроллерам

Перейти к содержимому

  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Подключаем LCD SSD1963 к STM32 по FSMC_16bit +Touch обсуждение, вопросы, доп. файлы...

#1 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 24 Май 2016 - 18:46

Возникшие вопросы по этой статье можно задать здесь, спрашивайте))

PS. У себя, для удобства, я в CubeMX переназначил выводы SPI3 на PB3, PB4, PB5. (при нажатии Ctrl и клике мыши по порту показывается возможный ремап)
Также скачал и перепроверил проект - всё работает.
PS-2. По ходу заметил ещё один момент - ШИМ подсветки оказывает влияние на стабильность результатов АЦП Touch, т.е. ШИМ вносит погрешнось, при половинной яркости ближе к правому краю экрана разброс нарисованных точек около 3-4 мм

главное начать, а война план покажет...
0

#2 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 25 Май 2016 - 00:45

Дополнительно выкладываю инициализацию ili9488 TFTLCD 3.95" и физическое (т.е. электрическое) подключение (фото внизу поста)
Этот дисплей использовался до SSD1963 в том-же проекте в качестве временного, цена в Китае около 500 руб, но при покупке следует обращать внимание на разрядность разводки платы (16-бит встречается редко) и наличие микросхемы для Touch (например XPT2046)

Для применения ili9488 взамен SSD1963 следует:

В файле #include "tft_lcd.h" изменить разрешение
#define LCD_WIDTH       320
#define LCD_HEIGHT      480
#define LCD_PIXEL_COUNT	LCD_WIDTH * LCD_HEIGHT


В файле #include "TouchPanel.c" изменить точки калибровки из расчёта ~10% от краёв
Coordinate DisplaySample[3] =   {
                      { 48, 48 },
		      { 432 , 160},
                      { 240, 288}
	                        } ;


Собсно код инита ili9488
//******************************************************************************
//***       ИНИЦИАЛИЗАЦИЯ ДИСПЛЕЯ ili9488
//******************************************************************************
// не забываем про задержки  (см. ниже)

  
  	// для выбора ставим где надо 1 и не забываем поставить 0 вместо 1, где не надо ;-)
  #define Dspl_Rotation_0_degr   0 // поворот дисплея, сколько градусов 01001000 портрет
  #define Dspl_Rotation_90_degr  1 // поворот дисплея, сколько градусов 00101000 альбом
  #define Dspl_Rotation_180_degr 0 // поворот дисплея, сколько градусов 10001000 портрет, но снизу вверх
  #define Dspl_Rotation_270_degr 0 // поворот дисплея, сколько градусов 11101000
	
	

  #define Fram_Rate_60Hz  0 // ??????? ?????? (70Hz ?? ?????)
  #define Fram_Rate_64Hz  0 // ??????? ??????
  #define Fram_Rate_67Hz  0 // ??????? ??????
  #define Fram_Rate_72Hz  0 // ??????? ??????
  #define Fram_Rate_76Hz  0 // ??????? ??????
  #define Fram_Rate_82Hz  0 // ??????? ?????? 
  #define Fram_Rate_88Hz  0 // ??????? ??????
  #define Fram_Rate_96Hz  1 // ??????? ??????
	
void LCD_ini (void)
	{
	
    TFT_RST_SET
    HAL_Delay (25);
    TFT_RST_RESET
    HAL_Delay (25);
    TFT_RST_SET
    HAL_Delay (25);
    //CS_Set;
//    TFT_WR_SET;
    //CS_Reset;
LCD_SendCommand(0xE0);
LCD_SendData(0x00);
LCD_SendData(0x07);
LCD_SendData(0x10);
LCD_SendData(0x09);
LCD_SendData(0x17);
LCD_SendData(0x0B);
LCD_SendData(0x40);
LCD_SendData(0x8A);
LCD_SendData(0x4B);
LCD_SendData(0x0A);
LCD_SendData(0x0D);
LCD_SendData(0x0F);
LCD_SendData(0x15);
LCD_SendData(0x16);
LCD_SendData(0x0F);
LCD_SendCommand(0xE1);
LCD_SendData(0x00);
LCD_SendData(0x1A);
LCD_SendData(0x1B);
LCD_SendData(0x02);
LCD_SendData(0x0D);
LCD_SendData(0x05);
LCD_SendData(0x30);
LCD_SendData(0x35);
LCD_SendData(0x43);
LCD_SendData(0x02);
LCD_SendData(0x0A);
LCD_SendData(0x09);
LCD_SendData(0x32);
LCD_SendData(0x36);
LCD_SendData(0x0F);
LCD_SendCommand(0xB1);
LCD_SendData(0xA0);
LCD_SendCommand(0xB4);
LCD_SendData(0x02);
LCD_SendCommand(0xC0);
LCD_SendData(0x17);
LCD_SendData(0x15);
LCD_SendCommand(0xC1);
LCD_SendData(0x41);
LCD_SendCommand(0xC5);
LCD_SendData(0x00);
LCD_SendData(0x0A);
LCD_SendData(0x80);

LCD_SendCommand(0xB6);
LCD_SendData(0x02);
LCD_SendCommand(0xB7);
LCD_SendData(0x06);
	LCD_SendCommand(0x36);

  #if Dspl_Rotation_0_degr
  LCD_SendData(0x48); //0градусов
  #elif Dspl_Rotation_90_degr
  LCD_SendData(0x38); //90градусов
  #elif Dspl_Rotation_180_degr
  LCD_SendData(0x88); //180градусов
  #elif Dspl_Rotation_270_degr
  LCD_SendData(0xE8); //270градусов
  #endif
LCD_SendCommand(0x3a);
LCD_SendData(0x55);
LCD_SendCommand(0xE9);
LCD_SendData(0x00);
LCD_SendCommand(0XF7);
LCD_SendData(0xA9);
LCD_SendData(0x51);
LCD_SendData(0x2C);
LCD_SendData(0x82);
LCD_SendCommand(0x11);
 HAL_Delay (120);
LCD_SendCommand(0x29);
}


Прикрепленное изображение: 3.95.jpg
Прикрепленное изображение: 16b.jpg
главное начать, а война план покажет...
0

#3 Пользователь офлайн   su9 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 8
  • Регистрация: 11 Июль 16

Отправлено 11 Июль 2016 - 16:07

Здравствуйте! Возник вопрос по ADC, а точнее вывод полученных данных на LCD SSD1963(примитивный вольтметр).Возможно у Вас есть кусочек готового кода...
0

#4 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 11 Июль 2016 - 17:09

был где то, но не помню..
завтра гляну.
Можете пока самостоятельно через КУБ добавить ацп и подключить, проект то я дал
главное начать, а война план покажет...
0

#5 Пользователь офлайн   su9 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 8
  • Регистрация: 11 Июль 16

Отправлено 11 Июль 2016 - 19:29

Это сделано, интересна та часть где нужно прописывать своими ручками. Сам алгоритм понятен но знаний маловато а готовых проектов не встречал. Спасибо за отклик!!!
0

#6 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 12 Июль 2016 - 03:16

Цитата

а точнее вывод полученных данных на LCD SSD1963

сам вывод несложен, Вы данные АЦП уже получили? Готовый результат преобразования АЦП где-нибудь лежит?
Сегодня ночером заморачиваться не буду, завтра если что постучите сюда ещё раз)) вывести готовый результат на дисплей - пять сек. делов, собсно Вы могли бы это по моему коду догадаться.
PS. дисплейчик не великоват для вольтметра? ;)
главное начать, а война план покажет...
0

#7 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 12 Июль 2016 - 03:25

лан...
sprintf( array, "Освещённость %u LUX", data_lux);
WriteString( 170, 200, array , WHITE, BLACK);
погуглите "функция sprintf"
Результат вывода на дисплей строки, что выше таков: Освещённость 120 LUX
(120 - это число из data_lux)

выводить можно сколько угодно значений, лишь бы размера (ранее объявленного) массива (array) хватило.
например:
sprintf( array, "Темпер. DHT-1 %c%u.%u°C DHT-2 %c%u.%u°C DHT-3 %c%u.%u°C ", tr_zn_am_1, Termo_1/10, Termo_1%10, tr_zn_am_2, Termo_2/10, Termo_2%10, tr_zn_am_3, Termo_3/10, Termo_3%10 );
WriteString( 195, 200, array , GREEN, BLACK);
(ЗЫ. выделил цветом, чтоб понято что к чему относится)
В результате на дисплей будет выведено (значения как пример, ессно):
Темпер. DHT-1 +26.8°С DHT-2 +15.2°С DHT-3 -10.6°С (зелёным на чёрном фоне- "GREEN, BLACK")
главное начать, а война план покажет...
0

#8 Пользователь офлайн   su9 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 8
  • Регистрация: 11 Июль 16

Отправлено 12 Июль 2016 - 15:20

PS. дисплейчик не великоват для вольтметра? ;)
Наверное великоват будет...
Суть немного в другом: Ввиду хронического безделья захотелось перевести свой проект прошлого века на современную базу.
Программирование вынужденное хобби и кроме asm и Васика ранее ничего не знал, а ныне подавай С++ с его наворотами...
Показометр не первом фото писал на asme для PIC16 вначале а потом перегнал на PIC18,был нужен для работы и полностью устраивал в те годы.
Второе фото уже STM32F4 Keil 4.73 правда пока еще "рыба". Наткнулся на Вашу статью и решил попробовать КУБ как средство для малограмотных и ленивых.
Спасибо за выкладки - так я быстрее нахожу свои ошибки.
Прошу не обижаться на старого деда за возможные дилетантские вопросы.

Прикрепленные изображения

  • Прикрепленное изображение: AN0.jpg
  • Прикрепленное изображение: AN1.jpg

0

#9 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 12 Июль 2016 - 15:41

на вопросы не обижаемся, возмущать может только хроническая тупость соединенная с упёртостью и самоуверенностью ;)
все норм.
Вы не ответили на мой вопрос выше...
я не могу знать на каком Вы этапе..
алгоритм АЦП pic18 и стм32 отличаются кодом, а куб облегчает работу.
Собсно, куб не от ленивости, а экономия времени и нежелание изобретать велосипед, ....зачем?
главное начать, а война план покажет...
0

#10 Пользователь офлайн   su9 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 8
  • Регистрация: 11 Июль 16

Отправлено 12 Июль 2016 - 20:04

пока довожу до ума два АЦП и энкодер. Просто долго копаюсь, это не PIC и AVR-там все проще ...
пока не буду отнимать у Вас время(пока мозги не закипят)
КУБ хорош но ко всему надо привыкать и перестраивать мышление как говорил один деятель.
Более страшен тупой снобизм на многих форумах из-за которого многие новички бросают это дело...
со sprintf разобрался, надо быть внимательней, спасибо...
0

#11 Пользователь офлайн   Nedter 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 26 Сентябрь 16

Отправлено 26 Сентябрь 2016 - 19:00

А как подключали питание в дисплею? через плату?
у меня требуется питание 3.3в на дисплей и подсветку. Плата выдает 3в, мне этого будет недостаточно?
0

#12 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 26 Сентябрь 2016 - 19:11

1. о каком дисплее идёт речь?
2. почему бы не попробовать подключить 3 вольта и узнать)), думаю всё будет работать
3. на красном дисплее есть свой стабилизатор на подсветку 5 -> 3,3
главное начать, а война план покажет...
0

#13 Пользователь офлайн   Nedter 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 26 Сентябрь 16

Отправлено 26 Сентябрь 2016 - 21:04

Просмотр сообщенияwind (26 Сентябрь 2016 - 19:11) писал:

1. о каком дисплее идёт речь?
2. почему бы не попробовать подключить 3 вольта и узнать)), думаю всё будет работать
3. на красном дисплее есть свой стабилизатор на подсветку 5 -> 3,3

Дисплей TFT Proto 4.3 .Управляющий контроллер SSD1963. В тех.документации написано, что максимум 3.3в, прям жирным выделено:)
просто у меня никак не получается запустить дисплей уже две недели, думаю кажется что проблема в том, что плата не сможет запитать дисплей и подсветку.
0

#14 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 27 Сентябрь 2016 - 00:29

Ну так если есть сомнения запитайте от отдельного блока питания.
Я не хочу распаковывать свой дисплей, но Вы гляньте, там ещё 5 вольт ведь сверху есть и по моему они для питания подсветки, если я прально помню. Кстати о подсветке, Вы видели я так указывал на перемычку в драйвере подсветке? Там три положения перемычки (нулевой резистор) - ШИМ, всегда включено и ещё что-то там, не помню, по мойму управление от МК вкл/выкл. Поставьте перемычу временно на ON, дабы подсветка всегда горела.
Или используйте мой проект с идентичным подключением, там всё реально работает. А уж как заработает, так и перепилите на свой вкус и цвет. Вам ведь сейчас сперва надо убедитсья в правильном физическом подключении.

Прикрепленное изображение: 2016-09-27_00-30-23.png
главное начать, а война план покажет...
0

#15 Пользователь офлайн   su9 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 8
  • Регистрация: 11 Июль 16

Отправлено 28 Сентябрь 2016 - 16:00

Дисплей TFT Proto 4.3 .Управляющий контроллер SSD1963. В тех.документации написано, что максимум 3.3в, прям жирным выделено:)
просто у меня никак не получается запустить дисплей уже две недели, думаю кажется что проблема в том, что плата не сможет запитать дисплей и подсветку.
[/quote]
3v достаточно для SSD1963, соедините 4 и 5 ногу U1- как на фото и должна появиться подсветка...

Прикрепленные изображения

  • Прикрепленное изображение: DOC001081589.jpg

0

#16 Пользователь офлайн   Nedter 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 26 Сентябрь 16

Отправлено 30 Сентябрь 2016 - 23:42

Просмотр сообщенияsu9 (28 Сентябрь 2016 - 16:00) писал:

Дисплей TFT Proto 4.3 .Управляющий контроллер SSD1963. В тех.документации написано, что максимум 3.3в, прям жирным выделено:)
просто у меня никак не получается запустить дисплей уже две недели, думаю кажется что проблема в том, что плата не сможет запитать дисплей и подсветку.

3v достаточно для SSD1963, соедините 4 и 5 ногу U1- как на фото и должна появиться подсветка...

А программно ее нельзя зажечь?
0

#17 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 01 Октябрь 2016 - 00:37

Не знаю про "Дисплей TFT Proto 4.3", но тот, что у меня не только программно зажигается, но и программно управляется ШИМ
Но для начала думаю следует "зажигать" принудительно, чтоб не спотыкаться.
главное начать, а война план покажет...
0

#18 Пользователь офлайн   Nedter 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 26 Сентябрь 16

Отправлено 01 Октябрь 2016 - 15:49

Просмотр сообщенияwind (01 Октябрь 2016 - 00:37) писал:

Не знаю про "Дисплей TFT Proto 4.3", но тот, что у меня не только программно зажигается, но и программно управляется ШИМ
Но для начала думаю следует "зажигать" принудительно, чтоб не спотыкаться.

я проверил напряжение на 4 и 5 ноге, там 3.2в, но подсветка не работает.
Не подскажете в чем может быть проблема?
0

#19 Пользователь офлайн   wind 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Февраль 13
  • ГородБелореченск

Отправлено 01 Октябрь 2016 - 16:17

Просмотр сообщенияsu9 (28 Сентябрь 2016 - 16:00) писал:

Дисплей TFT Proto 4.3
....соедините 4 и 5 ногу U1- как на фото и должна появиться подсветка...

главное начать, а война план покажет...
0

#20 Пользователь офлайн   su9 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 8
  • Регистрация: 11 Июль 16

Отправлено 02 Октябрь 2016 - 05:34

Проверьте напряжение не 1-2 ноге дисплея - должно быть 16-25в(в зависимости от того сколько светодиодов вставили братья по разуму).
проверьте коннектор дисплея, возможен плохой контакт да и визуальный осмотр всей платы дисплея не помешает-брак везде возможен...
0

Поделиться темой:


  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей