Неділя, 26.05.2019, 16:34
Приветствую Вас Гість | RSS

Radiomanoff+

Меню сайта
Форма входа
Календарь
«  Квітень 2016  »
ПнВтСрЧтПтСбНд
    123
45678910
11121314151617
18192021222324
252627282930

Блог

Главная » 2016 » Квітень » 7 » TFT-shield (2.4) & STM32F103C8
14:05
TFT-shield (2.4) & STM32F103C8

Нарешті з'явилась вільна хвилина. Хочу закінчити "епопею" із  TFT-shield (2.4) китайського виробництва. Як з'ясувалось в подібному форм-факторі може бути, як дисплей з контролером - ILI9325, так і з контролером ILI9341 . Зараз зупинимось на другому варіанті ILI9341 і підключенні його до МК STM32F103C8 . Ну і звісно, дамо робочий код для Keil.

В якості "заліза" мова піде, про плати китайського виробництва іменуємі в мережі як Maple Mini (це із опери ARDUINO), чи щось в цьому роді... Основна перевага цих плат - ціна. На платі встановлений МК STM32F103C8. Він має обєм флеша 64 кВ, та може працювати на частоті до 72  МГц.

Спочатку я спробував переробити бібліотеку від  ILI9325 , під ILI9341 . Та повністю перенести всі функціі мені не вдалось, так само як і прочитатти ID дисплея. А далі все це задоволення було закинуто в "довгий ящик", поки на очі не потрапив ось цей - матеріал . Там можна знайти код від китайських продавців "DIY-крамом"...для Ардуіни та STM32, а також деяка технічна документація на дисплей.

Перше, що я зробив ,це "пересадив" код з STM32F103RCT6 на STM32F103С8T6 під Keil 5. 

Друге. Зробив саморобний перехідник для шилда, на "нормальні" провода

Підєднав до плати МК. Зробив окремо живлення 3,3В на МС 1117, для дисплея, оскільки вмонттований в плату МК не надто потужний. Заживлено стабілізатор від USB.

Запускаємо... В такому вигляді код, на реальному STM32, запускався через раз. Не завжди проходила ініціалізіція. Звіривши цю функцію із datasheet я побачив багато "лишнього" в кодові. При цьму код для Arduino(Atmega328) працював завжди і без глюків. Вихід було знайдено, функція ініціалізаціі була списана із Ардуіно-проекта. Все запрацювало, "глюки відійшли"...

Далі слід звернути увагу на функцію установки параметрів дисплея. Оскільки в lcd.h у нас #define USE_HORIZONTAL   1, то орієнтація дисплея горизонтальна. В мене нормальні (не зеркальні букви) получились для регістра Memory Access Control (36h) при значенні 0xEC.

void LCD_SetParam(void)
{     
    lcddev.wramcmd=0x2C;
#if USE_HORIZONTAL==1      
    lcddev.dir=1;
    lcddev.width=320;
    lcddev.height=240;
    lcddev.setxcmd=0x2A;
    lcddev.setycmd=0x2B;            
    //LCD_WriteReg(0x36,0x6C);
    LCD_WriteReg(0x36,0xEC);    

#else
    lcddev.dir=0;                            
    lcddev.width=240;
    lcddev.height=320;
    lcddev.setxcmd=0x2A;
    lcddev.setycmd=0x2B;    
    LCD_WriteReg(0x36,0xC9);
#endif
}  

  В кінці datasheet , в пункті  9.3. MCU to memory write/read direction (стр.207-208) - дано пояснення для різних варіантів орієнтаціі дисплея.

І на останок робочий демо проект для Keil 5http://radiomanoff.at.ua/load/stm32f103_tft2_4/1-1-0-38 .

Просмотров: 2108 | Добавил: rastamanoff | Рейтинг: 0.0/0
Всего комментариев: 0
Ім`я *:
Email *:
Код *:
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0