搜索
查看: 3246|回复: 5

[求助] STM32F429ZI 100引脚 驱动RGB666 LTDC

[复制链接]

该用户从未签到

9

主题

308

帖子

50

蝴蝶豆

金牌会员

最后登录
2019-12-16
发表于 2019-3-22 10:14:29 | 显示全部楼层 |阅读模式
本帖最后由 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>
复制代码


回复

使用道具 举报

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
发表于 2019-3-22 10:31:08 | 显示全部楼层
驱动LTDC需要外扩SDRAM缓存的。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

308

帖子

50

蝴蝶豆

金牌会员

最后登录
2019-12-16
 楼主| 发表于 2019-3-22 10:34:41 | 显示全部楼层
wenyangzeng 发表于 2019-3-22 10:31
驱动LTDC需要外扩SDRAM缓存的。

SDRAM没有任何问题,已经读写字节驱动成功了。不好意思,刚刚没有说显存没有问题
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 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

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    308

    帖子

    50

    蝴蝶豆

    金牌会员

    最后登录
    2019-12-16
     楼主| 发表于 2019-3-22 14:34:50 | 显示全部楼层
    toofree 发表于 2019-3-22 12:37
    背光有吧?电源、信号线接的都没错吧?
    DE应该是高有效这种屏有HS/VS模式和DE模式,一般会有个管脚选择的。 ...

    背光部分直接拉低了(全黑),选择的是SYNC模式,没有选择DE模式。不好意思哈......经验不够,没有说清楚,我现在在拿示波器看HS和VS波形。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    308

    帖子

    50

    蝴蝶豆

    金牌会员

    最后登录
    2019-12-16
     楼主| 发表于 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

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-19 20:06 , Processed in 1.184289 second(s), 43 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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