OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 18106|回复: 22

STM32F429驱动7寸屏

[复制链接]

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2012-7-23
在线时间
0 小时
发表于 2014-11-12 11:19:35 | 显示全部楼层 |阅读模式
5金钱
最近在stm32f429 discover板上驱动7寸屏(800X480),stm32f429内部带屏的驱动器LTDC,之前在r板上运行网上的emwin很正常,但是屏幕是2.4寸的,现在改为7寸屏,可以显示但是显示的尺寸跟分辨率不对,我的相关配置如下,这个问题让我纠结好久了,希望知道的大大给我指点一下,不胜感激,必有重谢!
另附图片
[mw_shl_code=c,true]#define LCD_PIXEL_WIDTH ((uint16_t)800) #define LCD_PIXEL_HEIGHT ((uint16_t)480) #define HSW ((uint16_t)48) /* Horizontal synchronization */ #define HBP ((uint16_t)40) /* Horizontal back porch */ #define HFP ((uint16_t)40) /* Horizontal front porch */ #define VSW ((uint16_t)3) /* Vertical synchronization */ #define VBP ((uint16_t)29) /* Vertical back porch */ #define VFP ((uint16_t)13) /* Vertical front porch */ #define HSTART (HBP) #define HSTOP (LCD_PIXEL_WIDTH+HSTART) #define VSTART (VBP) #define VSTOP (LCD_PIXEL_HEIGHT+VSTART) #define LCD_FRAME_BUFFER ((uint32_t)0xD0000000) //LCD?????????×???·?????·SDRAM #define BUFFER_OFFSET ((uint32_t)0x60000) void LCD_Init(void)函数中: RCC_PLLSAIConfig(192, 7, 4); RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div2);//RCC_PLLSAIDivR_Div8 /* Enable PLLSAI Clock */ RCC_PLLSAICmd(ENABLE); /* Wait for PLLSAI activation */ while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET) { } //?±?ò?????????????ó????×??? /* Timing configuration */ /* Configure horizontal synchronization width */ LTDC_InitStruct.LTDC_HorizontalSync = HSW-1; /* Configure vertical synchronization height */ LTDC_InitStruct.LTDC_VerticalSync = VSW-1; /* Configure accumulated horizontal back porch */ LTDC_InitStruct.LTDC_AccumulatedHBP = HBP-1; /* Configure accumulated vertical back porch */ LTDC_InitStruct.LTDC_AccumulatedVBP = VBP-1; /* Configure accumulated active width */ LTDC_InitStruct.LTDC_AccumulatedActiveW = LCD_PIXEL_WIDTH + HBP-1; /* Configure accumulated active height */ LTDC_InitStruct.LTDC_AccumulatedActiveH = LCD_PIXEL_HEIGHT + VBP-1; /* Configure total width */ LTDC_InitStruct.LTDC_TotalWidth = LCD_PIXEL_WIDTH + HBP + HFP-1; /* Configure total height */ LTDC_InitStruct.LTDC_TotalHeigh = LCD_PIXEL_HEIGHT + VBP + VFP-1; LTDC_Init(&LTDC_InitStruct); static void _LCD_InitController(int LayerIndex) 函数中: xSize = LCD_GetXSizeEx(LayerIndex); ySize = LCD_GetYSizeEx(LayerIndex); LTDC_Layer_InitStruct.LTDC_HorizontalStart = HSTART; LTDC_Layer_InitStruct.LTDC_HorizontalStop = (xSize + HSTART-1); LTDC_Layer_InitStruct.LTDC_VerticalStart = VSTART; LTDC_Layer_InitStruct.LTDC_VerticalStop = (ySize + VSTART-1);[/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

回复【7楼】hukee: --------------------------------- 不外接ram的话刷不了一整屏吧 (480X800X2=750K)429才256K啊 我的解决了 是硬件问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2012-7-23
在线时间
0 小时
 楼主| 发表于 2014-11-12 11:19:36 | 显示全部楼层
回复【7楼】hukee:
---------------------------------
不外接ram的话刷不了一整屏吧 (480X800X2=750K)429才256K啊 我的解决了 是硬件问题
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2012-7-23
在线时间
0 小时
 楼主| 发表于 2014-11-12 11:19:36 | 显示全部楼层
回复【8楼】simms01:
---------------------------------
非常感谢,可以正常显示了,是硬件问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-11-12 11:41:57 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2012-7-23
在线时间
0 小时
 楼主| 发表于 2014-11-12 13:08:29 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
感谢原子哥,不知道你有没有用过stm32f429或者驱动过7寸屏?
回复

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2014-11-12 13:37:06 | 显示全部楼层
楼主能发一下你的接线图和液晶资料吗,最近刚买了这块板子,也想改为大屏。
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2012-7-23
在线时间
0 小时
 楼主| 发表于 2014-11-12 14:34:51 | 显示全部楼层
回复【4楼】rgzdb:
---------------------------------
液晶是翰彩的7寸屏,用板子上的接2.4寸屏的接口转接到GM7123,然后输出RGB信号到屏
回复

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2014-11-12 18:17:05 | 显示全部楼层
429不是可以直接驱动RGB的屏,为什么要加GM7123?
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-11-12
在线时间
2 小时
发表于 2014-11-12 18:41:19 | 显示全部楼层
rgb888 ,rgb666,是不是这个原因,也关注下,不知道429zi不外接ram,nand flash,直接显示,是怎么个情况。
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
发表于 2014-11-14 18:25:12 | 显示全部楼层
void LCD_Init(void)
{
  LTDC_InitTypeDef       LTDC_InitStruct;
  LTDC_Layer_InitTypeDef LTDC_Layer_InitStruct;
  LTDC_Layer_TypeDef     LTDC_Layerx;
  

  /* IO口初始化 */
  LCD_GPIOInit();

  LCD_DisplayOff();
  /* 使能LCD时钟 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC, ENABLE);
  /* 使能DMA失踪*/
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE);

  /* 水平同步信号---低电平有效 */
  LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL;     
  /* 垂直同步信号---低电平有效 */  
  LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL;     
  /* 数据使能信号---低电平有效 */
  LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;     
  /* 像素时钟配置--- */ 
  //LTDC_InitStruct.LTDC_PCPolarity = LTDC_DEPolarity_AL;
LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC;

/* LCD背光设置 */
  LTDC_InitStruct.LTDC_BackgroundRedValue = 0;            
  LTDC_InitStruct.LTDC_BackgroundGreenValue = 0;          
  LTDC_InitStruct.LTDC_BackgroundBlueValue = 0;  
  /*
   ****************************************************************************
   *PLLSAI_VCO = HSE*PLLSAI_N / LL_M = 8 * 192 / 8 = 192MHz
   *PLLLCDCLK = LLSAI_VCO / LLSAI_R = 192 / 3 = 64 Mhz
   *LTDC clock frequency = LLLCDCLK / RCC_PLLSAIDivR = 64 / 2 = 32 Mhz
   ****************************************************************************
   */
  RCC_PLLSAIConfig(192, 7, 3);
  RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);
  /* 使能PLLSAI时钟 */
  RCC_PLLSAICmd(ENABLE);
  /* 等待PLLSAI时钟 */
  while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET){}



  /* Configure horizontal synchronization width */     
  LTDC_InitStruct.LTDC_HorizontalSync = 39;
  /* Configure vertical synchronization height */
  LTDC_InitStruct.LTDC_VerticalSync = 19;
  /* Configure accumulated horizontal back porch */
  LTDC_InitStruct.LTDC_AccumulatedHBP = 45; 
  /* Configure accumulated vertical back porch */
  LTDC_InitStruct.LTDC_AccumulatedVBP = 22;  
  /* Configure accumulated active width */  
  LTDC_InitStruct.LTDC_AccumulatedActiveW = 845;
  /* Configure accumulated active height */
  LTDC_InitStruct.LTDC_AccumulatedActiveH = 502;
  /* Configure total width */
  LTDC_InitStruct.LTDC_TotalWidth = 1055; 
  /* Configure total height */
  LTDC_InitStruct.LTDC_TotalHeigh = 524;

  LTDC_Init(<DC_InitStruct);

  LTDC_ITConfig(LTDC_IER_LIE,ENABLE);  
NVIC_SetPriority(LTDC_IRQn,0);
  NVIC_EnableIRQ(LTDC_IRQn);

   DMA2D_ITConfig(DMA2D_CR_TCIE,ENABLE);
   NVIC_SetPriority(DMA2D_IRQn,0);
   NVIC_EnableIRQ(DMA2D_IRQn);
   DMA2D->IFCR=(u32)DMA2D_IFSR_CTCIF;
  
  
   

 LTDC_Layer_InitStruct.LTDC_HorizontalStart = 46;  //46
// LTDC_Layer_InitStruct.LTDC_HorizontalStart = 70;
 // LTDC_Layer_InitStruct.LTDC_HorizontalStop = (480 + 43 - 1); 
  LTDC_Layer_InitStruct.LTDC_HorizontalStop = (800 + 46 - 1); 
 
  LTDC_Layer_InitStruct.LTDC_VarticalStart = 23;//23
 // LTDC_Layer_InitStruct.LTDC_VerticalStop = (272 + 12 - 1);
  LTDC_Layer_InitStruct.LTDC_VerticalStop = (480 + 23 - 1);
  /* ixel 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 = 0;        
  LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;       
  LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;         
  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 = ((480 * 2) + 3);
 LTDC_Layer_InitStruct.LTDC_CFBLineLength = ((800 * 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:
      itch = Active high width x number of bytes per pixel     
  */ 
 // LTDC_Layer_InitStruct.LTDC_CFBPitch = (480 * 2);
LTDC_Layer_InitStruct.LTDC_CFBPitch = (800 * 2);
  /* configure the number of lines */  
 // LTDC_Layer_InitStruct.LTDC_CFBLineNumber = 272;
LTDC_Layer_InitStruct.LTDC_CFBLineNumber = 480;
  /* Input Address configuration */    
  LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER;
   
  LTDC_LayerInit(LTDC_Layer1, <DC_Layer_InitStruct);

  /* Configure Layer2 */
//  LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER + BUFFER_OFFSET;
 // LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA;    
 // LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;
 // LTDC_LayerInit(LTDC_Layer2, <DC_Layer_InitStruct);

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

//  LCD_DisplayOn();
}
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
发表于 2014-11-14 18:25:38 | 显示全部楼层
f429+sdram+tn92  从某学习板的4.3改过来的 一直没去用 只是测试了下 目测比较乱 呵
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2012-7-23
在线时间
0 小时
 楼主| 发表于 2014-11-15 13:06:24 | 显示全部楼层
回复【6楼】rgzdb:
---------------------------------
转接模拟屏啊
回复

使用道具 举报

8

主题

102

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1004
金钱
1004
注册时间
2014-11-19
在线时间
360 小时
发表于 2014-11-20 10:17:48 | 显示全部楼层
回复【10楼】maodewen:
---------------------------------
不加sdram,将屏幕清为一种颜色行不行呢,手头上只有f429zg核心板+7寸屏
专注一件事情并做到极致>>> https://shop275468129.taobao.com
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-11-12
在线时间
2 小时
发表于 2014-11-23 21:16:52 | 显示全部楼层
说下是硬件的什么问题。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-12-14
在线时间
3 小时
发表于 2014-12-2 10:53:01 | 显示全部楼层
回复【11楼】maodewen:
---------------------------------
DMA2D 24位色部分怎么驱动的?
回复

使用道具 举报

6

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2014-8-12
在线时间
32 小时
发表于 2014-12-6 19:10:44 | 显示全部楼层
回复【13楼】麦田稻草:
---------------------------------
我试过了272x480的屏,不加SDRAM ,可以将屏刷成单颜色,但是要移植个emwin就不知道怎么弄了
回复

使用道具 举报

12

主题

39

帖子

4

精华

高级会员

Rank: 4

积分
724
金钱
724
注册时间
2013-5-10
在线时间
2 小时
发表于 2015-2-26 12:53:25 | 显示全部楼层
楼主,LTDC_AccumulatedHBP表示的是HSW+HBP,但是你的设置却是:
LTDC_InitStruct.LTDC_HorizontalSync = HSW-1;
LTDC_InitStruct.LTDC_AccumulatedHBP = HBP-1;//这里应该写成HSW+HBP-1
这样就导致了LTDC_AccumulatedHBP < LTDC_HorizontalSync了,这就不对了。所以后面的参数都应该加上HSW才对。
不知道楼主说搞定了是怎样修改硬件来解决的?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-3-4
在线时间
0 小时
发表于 2015-3-5 14:54:40 | 显示全部楼层
楼主可以分享下硬件哪里出问题了吗?我现在也在研究,根据官方的原理图画的硬件,成了RGB666,去掉R2,B2,可是显示还是有点问题
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2012-7-23
在线时间
0 小时
 楼主| 发表于 2015-3-6 09:02:30 | 显示全部楼层
回复【18楼】墨如风0205:
---------------------------------
我的将RGB转成了模拟的RGB输出,布线上面有问题,有干扰,后来重新布线画板就好了
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-12-8
在线时间
6 小时
发表于 2015-11-18 13:41:54 | 显示全部楼层
回复【19楼】maodewen:
---------------------------------
楼主,我也遇到了同样的问题,请问布线上有什么讲究!SDRAM的数据线和地址线都做了等长处理
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-12-8
在线时间
6 小时
发表于 2015-12-7 14:00:27 | 显示全部楼层
回复【12楼】maodewen:
---------------------------------
楼主,我感觉我也遇到了同样的问题,你布线方面有什么讲究么?能分享下么,谢谢了
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2019-1-19
在线时间
28 小时
发表于 2021-2-4 12:49:04 | 显示全部楼层
我想问下你用LTDC驱动屏幕使用外部SDRAM了嘛
回复

使用道具 举报

10

主题

205

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1322
金钱
1322
注册时间
2015-3-3
在线时间
127 小时
发表于 2021-2-4 14:18:55 | 显示全部楼层
帮顶,帮顶,
海纳百川者,荣耀伴一生!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 03:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表