硬汉嵌入式论坛

 找回密码
 立即注册
查看: 513|回复: 8
收起左侧

[LTDC] 偶发性开机LCD黑屏无显示

[复制链接]

44

主题

562

回帖

699

积分

金牌会员

积分
699
发表于 2023-12-6 14:07:31 | 显示全部楼层 |阅读模式
遇到一个问题,偶发性开机LCD屏幕无显示,黑屏的。但是软件调试和运行都是正常的。不知道啥问题?

整个系统中有GUI任务,一旦有开机黑屏的情况程序都能跑运行,就是一直不显示黑屏的。程序初始化的阶段LCD完成初始化后会显示开机logo画面,一旦遇到黑屏情况,开机logo都不显示,感觉像是LCD初始化有关,但是不知道哪引起的问题,LCD驱动用的是V7板软件代码。


int main(void)
{
  /* USER CODE BEGIN 1 */
  SCB->VTOR = QSPI_BASE;

  MPU_Config();

  /* USER CODE END 1 */

  /* Enable I-Cache---------------------------------------------------------*/
  SCB_EnableICache();

  /* Enable D-Cache---------------------------------------------------------*/
  SCB_EnableDCache();

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  MX_GPIO_Init();
  MX_FATFS_Init();
  
  MX_FMC_Init();

  LCD_InitHard();
  HAL_Delay(50);               

  LCD_DrawBMP(0, 0, 272, 480,_aclogo);              //黑屏时这图片都不显示,正常运行图片会显示大概10S后进入GUI任务显示。

  MX_DMA_Init();
  MX_SPI1_Init();

  osKernelInitialize(); /* Call init function for freertos objects (in freertos.c) */
  
  MX_FREERTOS_Init();

  osKernelStart();

}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2023-12-6 15:13:01 | 显示全部楼层
已经排查了LCD的硬件问题了吧。

另外外设和LCD的初始化都放到OS的任务里面去做。
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
 楼主| 发表于 2023-12-6 15:18:15 | 显示全部楼层
eric2013 发表于 2023-12-6 15:13
已经排查了LCD的硬件问题了吧。

另外外设和LCD的初始化都放到OS的任务里面去做。

硬件基本排查完没有发现问题,分析应该软件问题,还在找
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
 楼主| 发表于 2023-12-6 16:20:57 | 显示全部楼层
eric2013 发表于 2023-12-6 15:13
已经排查了LCD的硬件问题了吧。

另外外设和LCD的初始化都放到OS的任务里面去做。

发现一个问题,TFT时钟频率过高了,代码没有屏蔽多余的部分。手册规格是9MHz,实际输出了24MHz。有没有可能是这个导致,已经修改为9MHz时钟频率测试。
1206.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2023-12-7 08:20:58 | 显示全部楼层
ou513 发表于 2023-12-6 16:20
发现一个问题,TFT时钟频率过高了,代码没有屏蔽多余的部分。手册规格是9MHz,实际输出了24MHz。有没有可 ...

这个地方确实超的比较多,典型值9MHz,可以排查下。
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
 楼主| 发表于 2023-12-13 10:36:33 | 显示全部楼层
eric2013 发表于 2023-12-7 08:20
这个地方确实超的比较多,典型值9MHz,可以排查下。

经过测试和排查发现不是这个问题,因为这个非常难预见的偶然性,经过调试捕捉到一个问题,LCD在初始化的时候就发生了LTDC 的传输错误中断和 FIFO 下溢中断,研学了V7手册提到过这个问题,但是具体还是不知道什么解决。
LCD_FU.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2023-12-13 13:53:39 | 显示全部楼层
ou513 发表于 2023-12-13 10:36
经过测试和排查发现不是这个问题,因为这个非常难预见的偶然性,经过调试捕捉到一个问题,LCD在初始化的 ...

有一个地方会出这种问题,就是上电瞬间是否有电源不稳的情况。
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
 楼主| 发表于 2023-12-13 16:11:01 | 显示全部楼层
eric2013 发表于 2023-12-13 13:53
有一个地方会出这种问题,就是上电瞬间是否有电源不稳的情况。

关于上电电源稳定性暂时不太好查,但是调试的时候是没有断电的,直接就是MDK里debug模式下reset,从一点来说电源影响好像也说不过去。
尝试把这两个中断关了,测试好像是可以的,就是不知道关闭这两个中断会不会到来其他问题,
        __HAL_LTDC_DISABLE_IT(&hltdc_F, LTDC_IT_TE);
        __HAL_LTDC_CLEAR_FLAG(&hltdc_F, LTDC_FLAG_TE);
        __HAL_LTDC_DISABLE_IT(&hltdc_F, LTDC_IT_FU);
       __HAL_LTDC_CLEAR_FLAG(&hltdc_F, LTDC_FLAG_FU);
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2023-12-14 08:07:53 | 显示全部楼层
ou513 发表于 2023-12-13 16:11
关于上电电源稳定性暂时不太好查,但是调试的时候是没有断电的,直接就是MDK里debug模式下reset,从一点 ...

如果没有用到基于垂直消隐的多缓冲机制,关闭即可。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 19:15 , Processed in 0.312874 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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