Микроконтроллеры

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Микроконтроллеры » Популярное » STM32 LTDC,SDRAM,DMA2D


STM32 LTDC,SDRAM,DMA2D

Сообщений 1 страница 14 из 14

1

На примере F429 дискавери

украден здесь http://en.radzio.dxp.pl/stm32f429idiscovery/

Инит SDRAM можно брать сразу, полностью рабочий .
Работа с SDRAM :

Код:
// SDRAM base address for Bank 2
#define SDRAM_BASE 0xD0000000
// SDRAM size is 8MB
#define SDRAM_SIZE 0x00800000

Инит LTDC пришлось переписывать ибо в их примере внешний 640x480.
А на дискавирине еще и рулить дисплеем надо через SPI
Что изменилось:
Тайминги синхро LCD -

Код:
#define LCD_WIDTH    240
#define LCD_HEIGHT    320

#define HFP 	10
#define HSYNC 10
#define HBP 	20

#define VFP 	4
#define VSYNC 	2
#define VBP 	2



#define ACTIVE_W (HSYNC + LCD_WIDTH + HBP - 1)
#define ACTIVE_H (VSYNC + LCD_HEIGHT + VBP - 1)
#define DISP_ACCUM_HORIZ_BACKPORCH  (HSYNC + HBP - 1)
#define DISP_ACCUM_VERT_BACKPORCH  (VSYNC + VBP - 1)
#define TOTAL_WIDTH  (HSYNC + HBP + LCD_WIDTH + HFP - 1)
#define TOTAL_HEIGHT (VSYNC + VBP + LCD_HEIGHT + VFP - 1)

Тактирование LCD

Код:
  #define PLLSAI_N     192  /* Multiplier for input clock (which is HSE/M) */
  #define PLLSAI_R     4    /* Divider 1; /4 */
  #define PLLSAI_DIVR  2    /* Divider 2; 0=/2, 1=/4, 2=/8, 3=/16 */
	#define PLLSAI_Q     4
	RCC->PLLSAICFGR = (PLLSAI_N  << 6) | (PLLSAI_Q << 24) | (PLLSAI_R << 28);
	RCC->DCKCFGR = (RCC->DCKCFGR & (~RCC_DCKCFGR_PLLSAIDIVR)) | (PLLSAI_DIVR  << 16);
	/* Enable SAI PLL */
	RCC->CR |= RCC_CR_PLLSAION;
	/* wait for SAI PLL ready */
	while((RCC->CR & RCC_CR_PLLSAIRDY) == 0){};

Конфиг окна

Код:
/* Synchronization Size Configuration */
	LTDC->SSCR     	= ((HSYNC - 1) << 16) 	| (VSYNC - 1);
	/* Back Porch Configuration */
	LTDC->BPCR     	= (((HSYNC+HBP) - 1) << 16) 	| ((VSYNC+VBP) - 1);
	/* Active Width Configuration */
	LTDC->AWCR     	= (ACTIVE_W << 16)     | (ACTIVE_H);
	/* Total Width Configuration */
	LTDC->TWCR     	= (TOTAL_WIDTH << 16) 	| (TOTAL_HEIGHT);

Конфиг слоя 1.

Код:
	/* Pixel Format Configuration */
	LTDC_Layer1->PFCR   = 2;
	/* Window Horizontal Position Configuration */
	LTDC_Layer1->WHPCR = ((DISP_ACCUM_HORIZ_BACKPORCH + LCD_WIDTH) << 16) | (DISP_ACCUM_HORIZ_BACKPORCH+1);
  LTDC_Layer1->WVPCR = ((DISP_ACCUM_VERT_BACKPORCH + LCD_HEIGHT) << 16) | (DISP_ACCUM_VERT_BACKPORCH+1);
	/* Color Frame Buffer Address */
	LTDC_Layer1->CFBAR  = SDRAM_BASE;
	/* Color Frame Buffer Length */
	LTDC_Layer1->CFBLR  = ((LCD_WIDTH * PIXELWIDHT) << 16) | ((LCD_WIDTH * PIXELWIDHT) + 3);
	/* Enable Layer */
	LTDC_Layer1->CFBLNR = LCD_HEIGHT;

  LTDC_Layer1->CR |= LTDC_LxCR_LEN; // Enable layer1 

	/* Immediate Reload */
	LTDC->SRCR     	= LTDC_SRCR_IMR;
	
	/* Enable LTDC */
	LTDC->GCR      	= LTDC_GCR_LTDCEN;

Пока застолблю , описание и чистка потом

2

#define LCD_WIDTH    240
#define LCD_HEIGHT    320

И ты реально что-то видишь на этой трёхдюймовой хрени 320х240?
Если видишь, то это, увы, ненадолго...
Сейчас старых пердунов вроде меня (хотя я-то как раз к эмбэдду не отношусь, что статистики, однако, не портит) в эмбедде абсолютное большинство.
Вот и ориентируйся на целевую аудиторию. Дисп минимум 7" 800х480, для которого команды по А18 в режиме FSMC явно преждевременны...

К чему это?
да мучу как раз терминал на старой пятнашке 1024х768@60Hz по интерфейсу ssd1306  (правда SPI, а не IIC). Интерфейс простой, отработанный, разрешение без нарушения протокола меняется в 4 раза лёгким движением руки, ресурсов много не требует...

Из четвёртых кортексов у мну только 407 на дискаверине...
Чё нить к народу ближе. :)

3

Чё нить поближе, как раз и есть 429 дискаверина.
Если сходишь по выше озвученной ссылке, там и дисплей поболее. И ссылку на свой монитор кинь...

4

И ссылку на свой монитор кинь...

https://www.cnet.com/products/ibm-think … ies/specs/  :playful:
Матрас вот этот http://www.alldatasheet.com/datasheet-p … 50X08.html

Чё нить поближе, как раз и есть 429

Ога.
F0/F1 народные.

Отредактировано omercury (2017-02-24 11:22:38)

5

В F0,F1 нет сего интерфейса, читай заголовок темы...

6

В F0,F1 нет сего интерфейса

Нету...  :(
...но есть SPI/FSMC

7

Ну и? Или  заведем ветку о дисплеях или о спи и фсмц...

8

dosikus написал(а):

Ну и? Или  заведем ветку о дисплеях или о спи и фсмц...

Жаль нет продолжения!
Я тоже "старпер", но считаю что 429 это минимум "народности", поскольку работать можно и нужно с любыми - тут какждый решает сам, а вот изучать как минимум нужно начинать с возможностей этого, и цена не сильно кусается и многое уже есть.
Да и вообще что за манера - вместо толковых вопросов, критика и вопли расскажи попроще...

9

sherpa,  ты имеешь ввиду подкрутить гуй EmWin?
  Подкручен , без спл и калокуба . Но надо вновь все нюансы вспоминать...

10

Привет всем. Поделюсь своей работой с SDRAM IS42S16400J и экраном TM057QDH01 V1.1 (640х480)

Работа с памятью IS42S16400J
Инициализация экрана TM057QDH01 V1.1 (640х480)

Может кому пригодится.

11

AlexWonder, мы калокуб и спл не используем.

12

AlexWonder И HAL)

13

Жесткач :)

Пишите на АСМе?

14

AlexWonder, мы здесь изучаем работу периферии а не гламурное тырканье в г.либах...


Вы здесь » Микроконтроллеры » Популярное » STM32 LTDC,SDRAM,DMA2D