Stm32F429 + Tft

19-03-2014, 17:17 От: admin Посмотрели: 799
Помогите Пожалуйста. (среда Keil, ЦП: STM32429VG)

Вообщем не получается настроить проц для экрана 480 на 272 RGB, использую встроенный контроллер LTDC. Экран без контроллер.

даташит от экрана вставил.



Вот мой пример инициализации для данного экрана.


void initialization_LTDC (void)
{

LTDC_InitTypeDef LTDC_InitStruct;
LTDC_Layer_InitTypeDef LTDC_Layer_InitStruct;
//A, B, C, D, E
RCC->AHB1ENR |= (1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);

GPIOE->MODER |= (1<<20); //DISP


GPIOA->MODER |= (1<<25)| //12
(1<<23)| //11
(1<<13)| //6
(1<<9)| //4
(1<<7); //3

GPIOB->MODER |= (1<<23)| //11
(1<<21)| //10
(1<<19)| //9
(1<<17)| //8
(1<<3)| //1
(1<<1); //0

GPIOC->MODER |= (1<<21)| //10
(1<<15)| //7
(1<<13); //6

GPIOE->MODER |= (1<<31)| //15
(1<<29)| //14
(1<<27)| //13
(1<<25)| //12
(1<<23); //11

GPIOD->MODER |= (1<<21)| //10
(1<<7); //3

GPIOA->OSPEEDR |= 0x3C033C0;
GPIOB->OSPEEDR |= 0xFF000F;
GPIOC->OSPEEDR |= 0x30F000;
GPIOE->OSPEEDR |= 0xFFC00000;
GPIOD->OSPEEDR |= 0x3000C0;

GPIOA->AFR[0] |= 0xE0EE000;
GPIOA->AFR[1] |= 0xEE000;
GPIOB->AFR[0] |= 0xEE;
GPIOB->AFR[1] |= 0xEEEE;
GPIOC->AFR[0] |= 0xEE000000;
GPIOC->AFR[1] |= 0xE00;
GPIOE->AFR[1] |= 0xEEEEE000;
GPIOD->AFR[0] |= 0xE000;
GPIOD->AFR[1] |= 0xE00;

//LTDC
RCC->APB2ENR |= (1<<26);

//DMA2D
RCC->AHB1ENR |= (1<<23);
/* Configure PLLSAI prescalers for LCD */
/* Enable Pixel Clock */
/* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
/* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAI_N = 192 Mhz */
/* PLLLCDCLK = PLLSAI_VCO Output/PLLSAI_R = 192/4 = 48 Mhz */
/* LTDC clock frequency = PLLLCDCLK / RCC_PLLSAIDivR = 48/8 = 6 Mhz */
RCC_PLLSAIConfig(192, 7, 4);
RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div8);

//RCC->PLLSAICFGR |=
/* Enable PLLSAI Clock */
RCC_PLLSAICmd(ENABLE);
/* Wait for PLLSAI activation */
while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET)
{
}

/* LCD Size (Width and Height) */
#define LCD_PIXEL_WIDTH ((uint16_t)480)
#define LCD_PIXEL_HEIGHT ((uint16_t)272)
#define LCD_FRAME_BUFFER ((uint32_t)0xD0000000)
#define BUFFER_OFFSET ((uint32_t)0x50000)
#define HFP 2 //// HFP 96
#define HSYNC 40 //// HSYNC 22
#define HBP 87 //// HBP 33
///*************************************************************************************************
#define VFP 2 //// VFP 5
#define VSYNC 9 //// VSYNC 1
#define VBP 11 //// VBP 35
///*************************************************************************************************
#define ACTIVE_W 567//(HSYNC + LCD_PIXEL_WIDTH + HBP - 1) //
#define ACTIVE_H 283//(VSYNC + LCD_PIXEL_HEIGHT + VBP - 1)
///*************************************************************************************************
#define TOTAL_WIDTH 575//(HSYNC + HBP + LCD_PIXEL_WIDTH + HFP - 1) //
#define TOTAL_HEIGHT 286//(VSYNC + VBP + LCD_PIXEL_HEIGHT + VFP - 1)
///*************************************************************************************************
/* Timing configuration */
/* Configure horizontal synchronization width */
LTDC_InitStruct.LTDC_HorizontalSync = HSYNC;
/* Configure vertical synchronization height */
LTDC_InitStruct.LTDC_VerticalSync = VSYNC;
/* Configure accumulated horizontal back porch */
LTDC_InitStruct.LTDC_AccumulatedHBP = HBP+HSYNC-1;
/* Configure accumulated vertical back porch */
LTDC_InitStruct.LTDC_AccumulatedVBP = VSYNC+VBP-1;
/* Configure accumulated active width */
LTDC_InitStruct.LTDC_AccumulatedActiveW = ACTIVE_W;
/* Configure accumulated active height */
LTDC_InitStruct.LTDC_AccumulatedActiveH = ACTIVE_H;
/* Configure total width */
LTDC_InitStruct.LTDC_TotalWidth = TOTAL_WIDTH;
/* Configure total height */
LTDC_InitStruct.LTDC_TotalHeigh = TOTAL_HEIGHT;

LTDC_Init(<DC_InitStruct);

/*//LTDC
LTDC->SSCR = 0x90001; //Sync
LTDC->BPCR = 0xE0005; //Back Porch
LTDC->AWCR = 0x11E01E5; //Active Width
LTDC->TWCR = 0x12001E7; //Total Width
*/
/* Windowing configuration */
/* In this case all the active display area is used to display a picture then :
Horizontal start = horizontal synchronization + Horizontal back porch = 30
Horizontal stop = Horizontal start + window width -1 = 30 + 240 -1
Vertical start = vertical synchronization + vertical back porch = 4
Vertical stop = Vertical start + window height -1 = 4 + 320 -1 */
LTDC_Layer_InitStruct.LTDC_HorizontalStart = HBP+HSYNC;
LTDC_Layer_InitStruct.LTDC_HorizontalStop = (LCD_PIXEL_WIDTH + HBP+HSYNC - 1);
LTDC_Layer_InitStruct.LTDC_VerticalStart = VSYNC + VBP;
LTDC_Layer_InitStruct.LTDC_VerticalStop = (LCD_PIXEL_HEIGHT + VSYNC+VBP - 1);

/* Pixel Format configuration*/
LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;
/* Alpha constant (255 totally opaque) */
LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 255;
/* Default Color configuration (configure A,R,G,B component values) */
LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 255;
LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 255;
LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 255;
LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 0;
/* Configure blending factors */
LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA;
LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_CA;

/* the length of one line of pixels in bytes + 3 then :
Line Lenth = Active high width x number of bytes per pixel + 3
Active high width = LCD_PIXEL_WIDTH
number of bytes per pixel = 2 (pixel_format : RGB565)
*/
LTDC_Layer_InitStruct.LTDC_CFBLineLength = ((LCD_PIXEL_WIDTH * 2) + 3);
/* the pitch is the increment from the start of one line of pixels to the
start of the next line in bytes, then :
Pitch = Active high width x number of bytes per pixel */
LTDC_Layer_InitStruct.LTDC_CFBPitch = (LCD_PIXEL_WIDTH * 2);

/* Configure the number of lines */
LTDC_Layer_InitStruct.LTDC_CFBLineNumber = LCD_PIXEL_HEIGHT;

/* Start Address configuration : the LCD Frame buffer is defined on SDRAM */
LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER;

/* Initialize LTDC layer 1 */
LTDC_LayerInit(LTDC_Layer1, <DC_Layer_InitStruct);

/* Configure Layer2 */
/* Start Address configuration : the LCD Frame buffer is defined on SDRAM w/ Offset */
LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER + BUFFER_OFFSET;

/* Configure blending factors */
LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA;
LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;

/* Initialize LTDC layer 2 */
LTDC_LayerInit(LTDC_Layer2, <DC_Layer_InitStruct);

/* LTDC configuration reload */
LTDC_ReloadConfig(LTDC_IMReload);

/* Enable foreground & background Layers */
LTDC_LayerCmd(LTDC_Layer1, ENABLE);
LTDC_LayerCmd(LTDC_Layer2, ENABLE);

/* LTDC configuration reload */
LTDC_ReloadConfig(LTDC_IMReload);

/* Set default font */
// LCD_SetFont(&LCD_DEFAULT_FONT);

/* dithering activation */
LTDC_DitherCmd(ENABLE);

LTDC->GCR |= (1<<0); //LTDC En

GPIOE->ODR |= (1<<10); //DISPLAY ON



Как быть? Фото вставил что из этого вышло.

Прикрепленные миниатюры





  • 20140318_203305.jpg





Прикрепленные файлы:




Раздел: STM32

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Stm32F429 + Tft все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930