请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F429ZI 100引脚 驱动RGB666 LTDC

[复制链接]
xiaolingoei 提问时间:2019-3-22 10:14 /
本帖最后由 xiaolingoei 于 2019-3-22 10:16 编辑

之前用STM32F429IGT6(176pin)成功驱动过RGB565,和RGB888的显示屏,现在要用STM32F429ZI(100pin)驱动RGB666,我的思路是直接用RGB565的驱动,改一下对应的引脚,以及根据屏幕datasheet配置一下参数。没想到,没有成功驱动显示屏,完全不亮。(驱动程序是按照秉火书上改的)
目前下载程序后,屏幕没有任何反应,不知道是思路上有问题,还是程序配置上有问题,麻烦各位大佬看看了!
用的是TIANMA的显示屏,具体型号是TM057QDH01,SYNC mode下的参数如下图所示:

捕获.PNG
1、根据上图,配置LTDC的参数如下:
CLK      25M
HSW     1
VSW     1
HBP     144
VBP      35
HFP      16
VFP      10


  1. <p>//2.使用LTDC初始化结构体,配置液晶屏的控制参数
  2. static void LCD_Mode_Config(void)
  3. {
  4.         LTDC_InitTypeDef        LTDC_InitTypeStruct;

  5.         RCC_PLLSAIConfig(200,20,2);        
  6.         
  7.         RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);
  8.         
  9.         RCC_PLLSAICmd(ENABLE);
  10.         
  11.         //等待RCC时钟使能完成
  12.         while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET);
  13.         
  14.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC,ENABLE);
  15.         
  16.         //引脚极性
  17.         LTDC_InitTypeStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL; //HSYNC低电平有效
  18.         LTDC_InitTypeStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL; //VSYNC低电平有效
  19.         LTDC_InitTypeStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL; //DE低电平有效
  20.         LTDC_InitTypeStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC;//上升沿采集数据
  21.         
  22.         //时间参数
  23.         LTDC_InitTypeStruct.LTDC_HorizontalSync = HSW - 1;
  24.         LTDC_InitTypeStruct.LTDC_VerticalSync = VSW - 1;
  25.         LTDC_InitTypeStruct.LTDC_AccumulatedHBP = HSW + HBP - 1;
  26.         LTDC_InitTypeStruct.LTDC_AccumulatedVBP = VSW + VBP - 1;
  27.         
  28.         LTDC_InitTypeStruct.LTDC_AccumulatedActiveW = HSW + HBP + LCD_WIDTH - 1;
  29.         LTDC_InitTypeStruct.LTDC_AccumulatedActiveH = VSW + VBP + LCD_HEIGHT - 1;
  30.         
  31.         LTDC_InitTypeStruct.LTDC_TotalWidth =  HSW + HBP + LCD_WIDTH + HFP - 1;
  32.         LTDC_InitTypeStruct.LTDC_TotalHeigh =  VSW + VBP + LCD_HEIGHT +VFP - 1;
  33.         
  34.         //配置底层颜色,全0为黑,全255为白
  35.         LTDC_InitTypeStruct.LTDC_BackgroundRedValue = 0;
  36.         LTDC_InitTypeStruct.LTDC_BackgroundGreenValue = 0;
  37.         LTDC_InitTypeStruct.LTDC_BackgroundBlueValue = 0;
  38.         
  39.         LTDC_Init(<DC_InitTypeStruct);
  40. }

  41. //3.使用LTDC的层级初始化结构体,配置各层的控制参数
  42. static void LCD_Layer_Init(void)
  43. {
  44.         LTDC_Layer_InitTypeDef  LTDC_Layer_InitTypeStruct;
  45.         
  46.         //配置层级输出窗口
  47.         LTDC_Layer_InitTypeStruct.LTDC_HorizontalStart = HBP + HSW;
  48.         LTDC_Layer_InitTypeStruct.LTDC_HorizontalStop = HSW + HBP + LCD_WIDTH - 1;
  49.         LTDC_Layer_InitTypeStruct.LTDC_VerticalStart = VBP + VSW;
  50.         LTDC_Layer_InitTypeStruct.LTDC_VerticalStop =  VSW + VBP + LCD_HEIGHT - 1;
  51.         
  52.         LTDC_Layer_InitTypeStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;
  53.         
  54.         //0为透明,0xFF为不透明
  55.         LTDC_Layer_InitTypeStruct.LTDC_ConstantAlpha = 0xFF;
  56.         LTDC_Layer_InitTypeStruct.LTDC_DefaultColorRed = 0;
  57.         LTDC_Layer_InitTypeStruct.LTDC_DefaultColorGreen = 0;
  58.         LTDC_Layer_InitTypeStruct.LTDC_DefaultColorBlue = 0;
  59.         LTDC_Layer_InitTypeStruct.LTDC_DefaultColorAlpha = 0;
  60.         
  61.         //混合因子
  62.         LTDC_Layer_InitTypeStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA;
  63.         LTDC_Layer_InitTypeStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_CA;
  64.         
  65.         //配置显存相关的参数
  66.         LTDC_Layer_InitTypeStruct.LTDC_CFBStartAdress = LCD_LAYER1_START_ADDR;
  67.         LTDC_Layer_InitTypeStruct.LTDC_CFBLineLength = LCD_WIDTH * 2 + 3;
  68.         LTDC_Layer_InitTypeStruct.LTDC_CFBLineNumber = LCD_HEIGHT;
  69.         LTDC_Layer_InitTypeStruct.LTDC_CFBPitch = LCD_WIDTH * 2;
  70.         
  71.         LTDC_LayerInit(LTDC_Layer1,<DC_Layer_InitTypeStruct);
  72.         
  73.         //配置第二层
  74.         LTDC_Layer_InitTypeStruct.LTDC_PixelFormat = LTDC_Pixelformat_ARGB8888;
  75.         
  76.         //混合因子
  77.         LTDC_Layer_InitTypeStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA;
  78.         LTDC_Layer_InitTypeStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;
  79.         
  80.         //配置显存相关的参数        
  81.         LTDC_Layer_InitTypeStruct.LTDC_CFBStartAdress = LCD_LAYER2_START_ADDR;
  82.         LTDC_Layer_InitTypeStruct.LTDC_CFBLineLength = LCD_WIDTH * 4 + 3;
  83.         LTDC_Layer_InitTypeStruct.LTDC_CFBLineNumber = LCD_HEIGHT;
  84.         LTDC_Layer_InitTypeStruct.LTDC_CFBPitch = LCD_WIDTH * 4;
  85.         
  86.         LTDC_LayerInit(LTDC_Layer2,<DC_Layer_InitTypeStruct);
  87.         
  88.         //使能两层数据源
  89.         LTDC_LayerCmd(LTDC_Layer1,ENABLE);
  90.         LTDC_LayerCmd(LTDC_Layer2,ENABLE);
  91.         
  92.         //更新配置参数
  93.         LTDC_ReloadConfig(LTDC_IMReload);
  94.         
  95.         //使能抖动单元
  96.         LTDC_DitherCmd(ENABLE);
  97.         
  98.         //使能LTDC
  99.         LTDC_Cmd(ENABLE);
  100. }</p>
复制代码


收藏 评论5 发布时间:2019-3-22 10:14

举报

5个回答
wenyangzeng 回答时间:2019-3-22 10:31:08
驱动LTDC需要外扩SDRAM缓存的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

xiaolingoei 回答时间:2019-3-22 10:34:41
wenyangzeng 发表于 2019-3-22 10:31
驱动LTDC需要外扩SDRAM缓存的。

SDRAM没有任何问题,已经读写字节驱动成功了。不好意思,刚刚没有说显存没有问题
七哥 回答时间:2019-3-22 12:37:09
本帖最后由 toofree 于 2019-3-22 12:41 编辑

背光有吧?电源、信号线接的都没错吧?
DE应该是高有效这种屏有HS/VS模式和DE模式,一般会有个管脚选择的。
如果没有管脚选择的话,接HS、VS时,不要接DE;接DE的话,不要接HS、VS。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

xiaolingoei 回答时间:2019-3-22 14:34:50
toofree 发表于 2019-3-22 12:37
背光有吧?电源、信号线接的都没错吧?
DE应该是高有效这种屏有HS/VS模式和DE模式,一般会有个管脚选择的。 ...

背光部分直接拉低了(全黑),选择的是SYNC模式,没有选择DE模式。不好意思哈......经验不够,没有说清楚,我现在在拿示波器看HS和VS波形。
xiaolingoei 回答时间:2019-3-22 16:11:31
本帖最后由 xiaolingoei 于 2019-3-22 16:25 编辑

根据测量发现了一个BUG。通过分频得到的CLK应该是25M,实际上示波器测出来的却是16.667M,这块屏的驱动CLK 24.8-34.2M。
target中的设置如下:
TIM截图1.png
并且使用了自带的库函数的设置函数:
  1. HSE_SetSysClock(25,360,2,8);
复制代码
将频率基准定为了25M;

根据计算,我的LTCD时钟分频后得到的CLK也应该是25M。不知道这个BUG是怎么来的?
IMG_1479.JPG

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版