硬汉嵌入式论坛

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

[FMC] STM32H7 FMS驱动 3.5寸ILI9486 LCD刷新率低问题

[复制链接]

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2021-2-25 15:39:05 | 显示全部楼层 |阅读模式
本帖最后由 boom 于 2021-2-25 15:45 编辑

求助大家一个关于STM32H7 FMS驱动 3.5寸ILI9486 LCD刷新率低问题。
背景:我制作一款示波器,需要通过3.5寸ILI9486 LCD来显示波形变换,由于我采用的是STM32H750VBT6型号单片机,内存不大,故没有采用单片机内部显存来设计,而是直接将要显示的内容写入ILI9486中,出现屏幕闪烁的情况。
1.采用FreertOS操作系统
2.主频400MHz
3.FMC时钟200MHz
4.设置了一个任务用于向ILI9486写入波形图像,每vTaskDelay(3);(估计大概3ms)执行一次局部(大概中间3寸左右的位置)刷新
5.FMC设置代码如下:
void MX_FMC_Init(void)
{
  /* USER CODE BEGIN FMC_Init 0 */

  /* USER CODE END FMC_Init 0 */

  FMC_NORSRAM_TimingTypeDef Timing = {0};
  FMC_NORSRAM_TimingTypeDef ExtTiming = {0};

  /* USER CODE BEGIN FMC_Init 1 */

  /* USER CODE END FMC_Init 1 */

  /** Perform the SRAM1 memory initialization sequence
  */
  hsram1.Instance = FMC_NORSRAM_DEVICE;
  hsram1.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
  /* hsram1.Init */
  hsram1.Init.NSBank = FMC_NORSRAM_BANK1;
  hsram1.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
  hsram1.Init.MemoryType = FMC_MEMORY_TYPE_SRAM;
  hsram1.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
  hsram1.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
  hsram1.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
  hsram1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
  hsram1.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
  hsram1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
  hsram1.Init.ExtendedMode = FMC_EXTENDED_MODE_ENABLE;
  hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
  hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
  hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
  hsram1.Init.WriteFifo = FMC_WRITE_FIFO_DISABLE;
  hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;
  /* Timing */
  Timing.AddressSetupTime = 0x11;
  Timing.AddressHoldTime = 0;
  Timing.DataSetupTime = 0x15;        //0x55
  Timing.BusTurnAroundDuration = 2;
  Timing.CLKDivision = 0;        //16
  Timing.DataLatency = 0;        //17
  Timing.AccessMode = FMC_ACCESS_MODE_A;
  /* ExtTiming */
  ExtTiming.AddressSetupTime = 0x15;
  ExtTiming.AddressHoldTime = 0;
  ExtTiming.DataSetupTime = 0x15;        //0x15
  ExtTiming.BusTurnAroundDuration = 2;
  ExtTiming.CLKDivision = 0;        //16
  ExtTiming.DataLatency = 0;        //17
  ExtTiming.AccessMode = FMC_ACCESS_MODE_A;

  if (HAL_SRAM_Init(&hsram1, &Timing, &ExtTiming) != HAL_OK)
  {
    Error_Handler( );
  }

  /* USER CODE BEGIN FMC_Init 2 */

  /* USER CODE END FMC_Init 2 */
}

想请教大家,假设LCD驱动程序没问题的情况下我还有什么办法优化屏幕的刷新率呢?感谢!

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107027
QQ
发表于 2021-2-25 16:45:06 | 显示全部楼层
方便发个效果吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 11:50 , Processed in 0.144083 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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