Например TDA7294

Форум РадиоКот • Просмотр темы - Вывод картинки на экран с ssd1289
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 22, 2025 13:58:14

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Вс дек 15, 2013 18:05:23 
Родился

Зарегистрирован: Пн фев 04, 2013 13:42:48
Сообщений: 10
Рейтинг сообщения: 0
Здравствуйте! Подключил к плате stm32f4discovery экран 320*240, нашел в интернете библиотеку для этого дела, работает хорошо, выводит всякие кружочки, прямоугольники, надписи. Захотелось вывести на экран какую-нибудь картинку. Встал вопрос как это сделать. В библиотеке есть функция:
Код:
/**
  * @brief  Displays a bitmap picture loaded in the internal Flash.
  * @param  BmpAddress: Bmp picture address in the internal Flash.
  * @retval None
  */
void LCD_WriteBMP(uint32_t BmpAddress)
{
  uint32_t index = 0, size = 0;
  /* Read bitmap size */
  size = *(__IO uint16_t *) (BmpAddress + 2);
  size |= (*(__IO uint16_t *) (BmpAddress + 4)) << 16;
  /* Get bitmap data address offset */
  index = *(__IO uint16_t *) (BmpAddress + 10);
  index |= (*(__IO uint16_t *) (BmpAddress + 12)) << 16;
  size = (size - index)/2;
  BmpAddress += index;
  /* Set GRAM write direction and BGR = 1 */
  /* I/D=00 (Horizontal : decrement, Vertical : decrement) */
  /* AM=1 (address is updated in vertical writing direction) */
  LCD_WriteReg(0x0011,0x6008);
 
  LCD_WriteRAM_Prepare();
 
  for(index = 0; index < size; index++)
  {
    LCD_WriteRAM(*(__IO uint16_t *)BmpAddress);
    BmpAddress += 2;
  }
 
  LCD_WriteReg(0x0011,0x6018);
}

В описании видно что в функцию передается 32-х битный адрес первого элемента массива. Я создал массив из констант

const unsigned short picture[] = {.................}

После передачи его в функцию таким образом:
LCD_WriteBMP(picture);
Кеил ругается так :main.c(21): error: #167: argument of type "const unsigned short *" is incompatible with parameter of type "uint32_t"
Подскажите как лучше сделать, в указателях запутался окончательно, читал книжку Страуструпа, запутался еще больше или для кейла си какой то особенный:(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Пн дек 16, 2013 00:46:19 
Вымогатель припоя

Зарегистрирован: Ср янв 05, 2011 10:03:18
Сообщений: 581
Рейтинг сообщения: 0
ATH писал(а):
Подскажите как лучше сделать, в указателях запутался окончательно, читал книжку Страуструпа, запутался еще больше или для кейла си какой то особенный:(
Си он и в Африке Си. Кейл ни при чем. Отложите Страуструпа, возьмите в руки K&R. Раздел "указатели". Пока не наступит понимание, старайтесь обходится без них.

_________________
С уважением,
Виктор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Пн дек 16, 2013 09:19:31 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
ATH писал(а):
В описании видно что в функцию передается 32-х битный адрес первого элемента массива. Я создал массив из констант



ut1wpr, +1000 однозначно .
В описании 32х битное без знаковое целое , а Вы передаете указатель ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Пн дек 16, 2013 15:28:15 
Родился

Зарегистрирован: Пн фев 04, 2013 13:42:48
Сообщений: 10
Рейтинг сообщения: 0
Да ступил, просто не мог понять почему 32-х битное, ведь по идеи должен передаваться массив из 16 битных элементов. Сейчас сделал по другому:
LCD_SetCursor(0x00, 0x013F);
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
for(index = 0; index < 20000; index++)
{
LCD->LCD_RAM = picture[index];
}
работает, правда из-за ограничения кода в 30 кб Кеил не дает загрузить всю картинку в мк)) А Кернигана и Ритчи надо проштудировать.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Чт янв 02, 2014 23:13:27 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 03, 2012 17:05:22
Сообщений: 23
Рейтинг сообщения: 0
ATH писал(а):
Подключил к плате stm32f4discovery экран 320*240, нашел в интернете библиотеку для этого дела, работает хорошо, выводит всякие кружочки, прямоугольники, надписи.

Если не затруднит, что за библиотеку подключал? Как подключил? Сколько ресурсов потребляет (STM32f030 потянет?)? :)

_________________
В обычной комнатной электророзетке две фазы. Одна из них не дергается током, потому что она положительная, а вторая дергается, потому что она отрицательная


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Чт янв 02, 2014 23:46:49 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
bat654321 писал(а):
STM32f030 потянет?

Сами посчитайте... FSMC вам не светит... памяти для загрузки картинки из флэш вам не хватит... надо прикручивать FatFs...
Можно заюзать два таймера и DMA... худо бедно - 8MSPS получите на трансфере из ОЗУ... примерно 70 мС при чтении картинки с SD...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Пт янв 03, 2014 00:34:31 
Вымогатель припоя

Зарегистрирован: Ср янв 05, 2011 10:03:18
Сообщений: 581
Рейтинг сообщения: 0
ATH писал(а):
Да ступил, просто не мог понять почему 32-х битное, ведь по идеи должен передаваться массив из 16 битных элементов. Сейчас сделал по другому:
LCD_SetCursor(0x00, 0x013F);
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
for(index = 0; index < 20000; index++)
{
LCD->LCD_RAM = picture[index];
}
работает, правда из-за ограничения кода в 30 кб Кеил не дает загрузить всю картинку в мк)) А Кернигана и Ритчи надо проштудировать.
Наверное, надо начать с выделенного, а потом переходить к лихорадочному листанию чужих листингов. Ведь вы пока еще не совсем все понимаете, что там написано. Вы читаете их фрагментами, как говорят "выискивая знакомые буковки". А их пока маловато. Надо бы всю азбуку выучить. Извините за приставучесть и занудство.

_________________
С уважением,
Виктор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вывод картинки на экран с ssd1289
СообщениеДобавлено: Пт янв 03, 2014 13:49:47 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 03, 2012 17:05:22
Сообщений: 23
Рейтинг сообщения: 0
HHIMERA писал(а):
Сами посчитайте... FSMC вам не светит... памяти для загрузки картинки из флэш вам не хватит... надо прикручивать FatFs...
Можно заюзать два таймера и DMA... худо бедно - 8MSPS получите на трансфере из ОЗУ... примерно 70 мС при чтении картинки с SD...

Не, мне картинку и SD не надо пока. Мне надо текст и графику (хорошо бы элементы GUI, чтоб не изобретать велосипед).

_________________
В обычной комнатной электророзетке две фазы. Одна из них не дергается током, потому что она положительная, а вторая дергается, потому что она отрицательная


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 30


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y