Гость kurojneko

Проблема с дисплеем и LTDC

3 сообщения в этой теме

Гость kurojneko   
Гость kurojneko

Здравствуйте, прошу помощи. Пытаюсь осилить программирование под микроконтроллеры.
Суть: есть отладочная плата, stm32f4-discovery с контроллером stm32f429zi на борту. Так же на борту имеется некоторый обвес и в том числе дисплей, ili9341. Сделан проект в кубе, на основе примера из оф библиотеки к кубу.
В данном примере инициализируется сначала spi интерфейс, подключается к дисплею, дает ему команды на инициализацию. Потом включается ltdc интерфейс, и как я понял, он должен участок памяти связать с картинкой на экране. 
В примере есть 2 файла в которых прописаны картинки, переменными (огромные такие массивы с 16битными кодами цветов на каждый пиксель) эти самые 2 переменных указаны как стартовые участки памяти на слои LTDC. Дальше с ними идут некоторые модификации в целях демонстрации, но сейчас это не суть. Пример успешно компилируется и запускается на плате.

Я пытаюсь хотя бы просто вывести картинки на экран. У меня получилось инициализировать дисплей (тупо спер код из примера, там большая пачка команд) и указать в ltds габариты слоев (я так же вывел один слой на одну половину экрана, второй на другую)
Но на этих самый слоях показывается либо мусор, либо серый фон. Когда я попытался вывести одну из картинок(раньше просто пытался залить одним цветом), он мне показал более светлый фон, на половине экрана. 
Пытаюсь понять в чем проблема, все сидел практически посимвольно сравнивал с примером, инициализация таймеров, инициализация ltdc. Все равно не понятно почему пример работает, а мой код нет.
Подскажите куда копать ) Заранее спасибо за советы.

Сосбтвенно мой проект:
гугл диск https://drive.google.com/open?id=0BzZx_i0QoXoqVDI1ZHk2ck54Y2M
гитхаб https://github.com/Kurojneko/display

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
mail_robot    1 193

сложно по таким железкам подсказывать. Если пример работает, значит вы что-то неправильно понимаете и делаете. Самый лучший способ решить проблему - внимательно читать и продолжать пробовать, набравшись терпения. Чудес же не бывает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dosikus    5

Залейте эту прошивку http://rgho.st/8NrxGLLSV 

Заработает, милости прошу сюда-http://mcu.goodboard.ru/viewtopic.php?id=16

Объясню работу всего агрегата. Но только без калокуба , он там абсолютно лишний...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: saer2
      Добрый!
      Осваиваю стм32.
      Уточните пожалуйста, есть ли описание библиотеки stblib ? 
      как с ней работать?
    • Автор: karomag
      Помогите! Не пойму, почему не работает код. Хотя он был рабочий, пока я что-то не "оптимизировал"...
      // Общие выводы индикатора #define D0 GPIO_Pin_14 #define D1 GPIO_Pin_13 #define D2 GPIO_Pin_12 #define ALL_CATOD ( D0 | D1 | D2 ) // К какой ноге какой сегмент подключен #define SEG_A GPIO_Pin_0 #define SEG_B GPIO_Pin_1 #define SEG_C GPIO_Pin_2 #define SEG_D GPIO_Pin_3 #define SEG_E GPIO_Pin_4 #define SEG_F GPIO_Pin_5 #define SEG_G GPIO_Pin_6 //Собираем цифры из сегментов #define DIG0 ( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F ) #define DIG1 ( SEG_B | SEG_C ) #define DIG2 ( SEG_A | SEG_B | SEG_G | SEG_E | SEG_D ) #define DIG3 ( SEG_A | SEG_B | SEG_G | SEG_C | SEG_D ) #define DIG4 ( SEG_F | SEG_G | SEG_B | SEG_C) #define DIG5 ( SEG_A | SEG_F | SEG_G | SEG_C | SEG_D ) #define DIG6 ( SEG_A | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G ) #define DIG7 ( SEG_A | SEG_B | SEG_C ) #define DIG8 ( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G) #define DIG9 ( SEG_A | SEG_B | SEG_C | SEG_D | SEG_F | SEG_G) #define ALL_SEG (DIG8 ) void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* GPIOA Configuration:TIM3 Channel1, 2, 3 and 4 as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = ALL_SEG | ALL_CATOD; GPIO_Init(GPIOA, &GPIO_InitStructure); } void show_temp(void) { u16 tmp; // Содержит копию counter (из него по очереди исключаются последние цифры) u8 digit; // В эту переменную поочередно записываются цифры из которых состоит число counter u16 catods[] = { D0, D1, D2 }; u8 digitsp[] = { DIG0, DIG1, DIG2, DIG3, DIG4, DIG5, DIG6, DIG7, DIG8, DIG9 }; u8 i; tmp = measureT; for (i = 0; i < 3; i++) { if (tmp > 0) { //Вытаскиваем первую справа цифру из числа counter digit = tmp % 10; tmp = tmp / 10; //Выключаем все разряды. 1 на катоды GPIOA->ODR |= ALL_CATOD; //Включаем i разряд индикатора GPIOA->ODR &= ~catods[i]; //Выводим цифру в i разряд GPIOA->ODR &= ~DIG8; //Выключаем все сегменты GPIOA->ODR |= digitsp[digit]; //Зажигаем нужные //Небольшая задержка. Пусть цифра погорит некоторое время delay_ms(1000); } } } Большую задержку поставил, чтобы глазом было видно результат. Число 123 отображается: сначало 33, потом 22, потом 111. Почему загорается несколько разрядов, хотя GPIOA->ODR &= ~catods;?
    • Автор: MillyVolt2
      Всем привет!
      Не нашел здесь темы по IAR, поэтому решил создать её сам, может пригодится для общих вопросов.
       
      В моём случае это IAR EW для ARM, работаю с STM32.
      Версия пакета с офф сайта, 8.20 - последняя на данный момент, с ограничением по размеру кода 32Кб.
      Открыл в IAR пример из библиотеки STM32CubeL4, скачанной с st.com, скомпилировал Project -> Rebuild All. Так как демоплата DISCO ещё не пришла, использую симулятор - Project -> Options -> Debugger вместо ST-Link выбрал Simulator. Далее Debug without download, вылезают 2 ошибки:
       
      User error: Stack pointer is setup to incorrect alignment.  Stack addr = 0xCDCDCDCD
       
      Failed to load debugee: C:\Users\Vova\STM32Cube\Repository\STM32Cube_FW_L4_V1.10.0\Projects\STM32L476G-Discovery\Examples\GPIO\GPIO_EXTI\EWARM\STM32L476G-Discovery\Exe\Project.out
       
      Может кто сталкивался с подобным?
    • Автор: Michael4you
      Основные обязанности:
      •проектирование, разработка и поддержка ПО для встраиваемых систем;
      •сопровождение кода и тестов;
      •документирование разрабатываемого ПО;
      Требования к кандидату: 
      • опыт работы от 3 лет;
      • уверенное знание C;
      • опыт разработки встраиваемых приложений;
      • опыт работы с платформами на ARM-процессорах;
      • опыт работы с STM32;
      • опыт работы с ОСРВ (желательно FreeRTOS);
      • опыт работы с Keil, System Workbench;
      • опыт работы c ModBus, USB, CAN;
      Приветствуется:
      • опыт проектирования архитектур ПО;
      • знание Python;
      Условия:
      •трудоустройство по ТК РФ;
      •доход обсуждается с успешным кандидатом (от 60 тыс.руб.)
      •дистанционная работа, можно работать из дома;
      •выплаты заработной платы 2 раза в месяц
      Наш сайт: http://i-mt.net/
      Моя почта: dezh@i-mt.net
      Мой мобильный: +7963 776 36 55 
      С уважением, Михаил.
    • Автор: Михаил Гуреев
      Здравствуйте! Несколько дней уже бьюсь, не могу найти нужную информацию. Делаем проект на stm32 в проекте необходимо задействовать 2 джойстика. 
      Причём желательно не потенциометрические, а оптические. В интернете масса промышленных, оптических энкодеров, но очень мало (вообще почти нет) энкодеров-джойстиков, по сути просто 2 энкодера и рукоять, и нигде нет!
      Максимум что есть - небольшие потенциометрические модули для ардуино типа таких: 
      Но они не подходят для промышленного использования т.к. не надежны и слабая конструкция. Подскажите, что искать.