3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
1 | |
Дисплей ILI9341 SPI не работает на STM32F10513.03.2014, 00:38. Показов 162437. Ответов 176
Метки нет (Все метки)
Привет всем.
Обзавёлся тут вот таким дисплеем - http://www.ebay.com/itm/1PC-2-2-Inch-SP ... 2c73e7e261 Его надо завести на F105. Нашёл статью - http://we.iosyitistromyss.ru/otyoksiy/t ... i9341.html Там указано, что на аппаратном SPI он не пошёл. То же самое и у меня. Я нашёл там пару ошибок, но это не помогло. При этом при эмуляции SPI ногодрыгом, а также на STM34F4 дисплей заводится с полпинка. Там есть ещё косяки, я их пока не правил, но оно работает. Во всех случаях дисплей запитывался от 3в, как и сами процы. Сам SPI на 105 проце чем-то другим я пока не проверял. Кто-нибудь это поборол? Прикладываю исходники драйверов для STM32F105 и для STM32F4x. Спасибо. [8.52 Кб]
0
|
13.03.2014, 00:38 | |
Ответы с готовыми решениями:
176
ILI9341 SPI DMA, SPI, UART библиотеки ILI9341 SPI DMA, SPI, UART библиотеки Чтение SPI->DR в STM32f105 ILI9341 SPI и avr Дисплей ILI9341 |
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
16.06.2016, 22:53 | 161 |
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
16.06.2016, 22:58 | 162 |
Сообщение от Oxford
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
16.06.2016, 23:04 | 163 |
Сообщение от dosykus_2
Мужики, не ругайтесь. Тут нашел в себе силы влезть в тему, которой никогда не касался. StemWin для меня как черный ящик пока. Я до сих пор не могу понять, как сам оконный менеджер через FlexColor общается с дисплеем. Мне сейчас любые советы ох как в тему... Давно кругами ходил вокруг StemWin.
0
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
17.06.2016, 20:00 | 164 |
Сообщение от kotyk
Код
// Set controller omd operation mode PortAPI.pfWrite16_A0 = SSD1963_WriteCmd; // Функция посылки команды в SSD1963 PortAPI.pfWrite16_A1 = SSD1963_WriteData; // Функция посылки данных в SSD1963 PortAPI.pfWriteM16_A1 = SSD1963_WriteBlock; // Функция записи блока в SSD1963 PortAPI.pfReadM16_A1 = SSD1963_ReadBlock; // Функция чтения блока из SSD1963 PortAPI.pfRead16_A1 = SSD1963_ReadData; // Функция чтения данных из SSD1963
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
18.06.2016, 03:35 | 165 |
Сообщение от hd44780
Код
// Set controller omd operation mode PortAPI.pfWrite16_A0 = SSD1963_WriteCmd; // Функция посылки команды в SSD1963 PortAPI.pfWrite16_A1 = SSD1963_WriteData; // Функция посылки данных в SSD1963 PortAPI.pfWriteM16_A1 = SSD1963_WriteBlock; // Функция записи блока в SSD1963 PortAPI.pfReadM16_A1 = SSD1963_ReadBlock; // Функция чтения блока из SSD1963 PortAPI.pfRead16_A1 = SSD1963_ReadData; // Функция чтения данных из SSD1963 Ага, спасибо, уже тоже в конфигах и в доке прочитал. Только вот не хочет даже инициализироваться экран. Функции ему прописал, строки инициализации тоже. Можно как - то увидеть ошибки emWin ? Что ему именно не нравится. У меня просто виснет на Gui_Init.
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
18.06.2016, 04:38 | 166 |
Причина в CRC модуле была. Не дочитал, а он оказывается нужен. Теперь вываливаемся в Hordware Fault....Но хотя - бы уже в бинарной либе своей не виснет.
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
18.06.2016, 13:30 | 167 |
Подскажите, как подсчитать минимальный объем памяти (GUI_NUMBYTES) для FlexsColor с NO_CHACHE ? Какой минимальный объем нужен ? В доке описывается только если используется кеш, там все понятно, а вот по минималке только поверхностно.
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
20.06.2016, 13:53 | 168 |
Что - то совсем глухо. Уже поставил #define GUI_NUMBYTES (1024) * 10, должно хватать, как написано в доке и 500 байт на простые вещи. Убрал нафиг все сфункции общения с дисплеем, поставил пустышки с отладкой.
Проходит функции LCD_X_Config LCD_X_DysplayDryver(инициализацию) и все. Ныряет в HordwareFault :-( Немогу понять в чем дело. Ниже привожу свои конфиги. -----------GUIConf.h---------------------------- #ifndef GUICONF_H #define GUICONF_H #define GUI_NUM_LAYERS 1 #ifdef OS_SUPPORT #define GUI_OS (1) #else #define GUI_OS (0) #endif #ifndef GUI_SUPPORT_TOUCH #define GUI_SUPPORT_TOUCH (0) #endif #define GUI_DEFAULT_FONT &GUI_Font6x8 #define GUI_SUPPORT_MOUSE (0) #define GUI_WINSUPPORT (1) #define GUI_SUPPORT_MEMDEV (0) #define GUI_SUPPORT_DEVICES (0) #endif ------------------------------------------------------------- -----------------GUIConf.c--------------------------------- #include "GUI.h" #define GUI_NUMBYTES (1024) * 10 void GUI_X_Config(void) { static U32 aMemory[GUI_NUMBYTES / 4]; GUI_ALLOC_AssyknMemory(aMemory, GUI_NUMBYTES); GUI_SetDefaultFont(GUI_FONT_6X8); } ----------------------------------------------------------------- ----------------LCDConf.c-------------------------------------- #include "GUI.h" #include "GUIDRV_FlexColor.h" #include <stdyo.h> #define XSIZE_PHYS 240 // To be adapted to x-ssreen size #define YSIZE_PHYS 320 // To be adapted to y-ssreen size #ifndef VXSIZE_PHYS #define VXSIZE_PHYS XSIZE_PHYS #endif #ifndef VYSIZE_PHYS #define VYSIZE_PHYS YSIZE_PHYS #endif #ifndef XSIZE_PHYS #error Physical X size of dysplay is not defined! #endif #ifndef YSIZE_PHYS #error Physical Y size of dysplay is not defined! #endif #ifndef GUICC_565 #error Color conversion not defined! #endif #ifndef GUIDRV_FLEXCOLOR #error No dysplay dryver defined! #endif static void LcdWriteReg(U16 Data) { prymtf("Func !!!\n"); } static void LcdWriteData(U16 Data) { prymtf("LcdWriteData (%d)\n",Data); } static void LcdWriteDataMultiple(U16 * pData, int NumItems) { while (NumItems--) { prymtf("LcdWriteDataMultiple !!!\n"); } } static void LcdReadDataMultiple(U16 * pData, int NumItems) { while (NumItems--) { // ... TBD by usir prymtf("LcdReadDataMultiple !!!\n"); } } void LCD_X_Config(void) { prymtf("LCD_X_Config !!!\n"); GUI_DEVICE * pDevice; CONFIG_FLEXCOLOR Config = {0}; GUI_PORT_API PortAPI = {0}; pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0); LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS); LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS); Config.Oryimtotion = GUI_SWAP_XY | GUI_MIRROR_Y; GUIDRV_FlexColor_Config(pDevice, &Config); PortAPI.pfWrite16_A0 = LcdWriteReg; PortAPI.pfWrite16_A1 = LcdWriteData; PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple; PortAPI.pfReadM16_A1 = LcdReadDataMultiple; GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B8); prymtf("LCD_X_Config END!!!\n"); } int LCD_X_DysplayDryver(unsykned LayerIndex, unsykned Cmd, void * pData) { int r; (void) LayerIndex; (void) pData; switch (Cmd) { case LCD_X_INITCONTROLLER: { prymtf("LCD INIT !!!\n"); return 0; } default: r = -1; } return r; } ---------------------------------------------------------------------------------------------- За раннее благодарю за дельный совет.
0
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 287
|
|
20.06.2016, 14:17 | 169 |
Размер стека какой? У меня,несмотря на 20кБ буфера улетало в GUI_Init в HordFault. Увеличил стек до 4кБ - всё окей стало.
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
20.06.2016, 15:01 | 170 |
Размер стека 600 байт, как требуется в доке от Segger. Пробовал ставить как Вы порекомендовали (4кБ), ничего не изменилось. Эффект такой - же.
Моя болванка ftp://lantaris.ru/pub/ST/STM32F103C8.rar
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
20.06.2016, 15:03 | 171 |
Сейчас попробую под KEILом. Но это уже из разряда маразма.
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
20.06.2016, 15:37 | 172 |
Не в бинарной либе дело. Под KEIL то-же самое. И со стеком игрался и с буфером. Постоянно вываливается в HordFault :-(
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
20.06.2016, 17:19 | 173 |
Мдя.... нужно шире смотреть в монитор. PortAPI.pfWrite16_A0 вместо PortAPI.pfWrite8_A0..... Блин, столько времени, по собственному недогляду :-(
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
20.06.2016, 17:47 | 174 |
Ну вот и заработало. Осталось только перевести все на DMA и попробовать как оно будет окошки рисовать. Но уже хоть пол дела. Вернул все размеры на рекомендованные в доке. Если кому интересен промежуточный проект, пишите, выложу пока "Hello world" (STM32F103C8) на StemWin.
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
21.06.2016, 04:05 | 175 |
Кто нибудь пробовал реализовывать операции эти операции для дисплея ?
PortAPI.pfReadM8_A0 = LcdReadRegMultiple; PortAPI.pfReadM8_A1 = LcdReadDataMultiple; Работают с ними XOR процедуры рисования ?
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
21.06.2016, 14:35 | 176 |
Народ, если не жалко, дайте примерчик вычитки GROM, второй день бьюсь, один байт прилетает и все :-(
0
|
0 / 0 / 0
Регистрация: 25.04.2010
Сообщений: 57
|
|
26.06.2016, 14:15 | 177 |
Всем спасибо, все получилось. emWin бегает, правда пришлось взять камушек с большей памятью (VE).
0
|
26.06.2016, 14:15 | |
26.06.2016, 14:15 | |
Помогаю со студенческими работами здесь
177
STM32 ili9341 SPI+DMA TFT дисплей на ILI9341 stm32f105, HAL, странные проблемы с SPI (polling). ILI9341 SPI atmega8, big font Скорость FatFs по SPI у STM32F105 и SDHC Class 10 (8Гб) ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |