日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32驱动rgb屏电路图_stm32h7“点亮RGB屏幕”

發布時間:2024/3/13 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32驱动rgb屏电路图_stm32h7“点亮RGB屏幕” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是我學習安福萊H7教程后總結。目的是隨便拿來一個RGB屏幕和屏幕手冊就能點亮它。下面記錄我的操作過程。本例7寸RGB屏使用的source driver ic是OTA7001。

1、硬件設計

硬件配置為24bit并口RGB接口,如圖1

圖1

2、軟件設計

int main(void)函數中加上LCDH7_ConfigLTDC()和LCD_SetBackLight(BRIGHT_DEFAULT)即可,如代碼1

int main(void)

{

MPU_Config();

CPU_CACHE_Enable();

HAL_Init();

SystemClock_Config();

/* 配置內部LTDC */

LCDH7_ConfigLTDC();

/* 設置背光為缺省亮度 */

LCD_SetBackLight(BRIGHT_DEFAULT);

while (1)

{

}

}

代碼1

那么配置好LCDH7_ConfigLTDC()函數即可點亮RGB屏幕。此函數主要進行的工作見如下偽代碼1

偽代碼LCDH7_ConfigLTDC()

{

1、GPIO配置

2、LTDC配置

}

偽代碼1

下面分別介紹GPIO配置和LTDC配置。

2-1、GPIO配置

/* 1、配置LCD相關的GPIO */

{

/* GPIOs Configuration */

/*

+------------------------+-----------------------+----------------------------+

+ LCD pins assignment +

+------------------------+-----------------------+----------------------------+

| LCDH7_TFT R0 PI.15 | LCDH7_TFT G0 PJ.07 | LCDH7_TFT B0 PJ.12 |

| LCDH7_TFT R1 PJ.00 | LCDH7_TFT G1 PJ.08 | LCDH7_TFT B1 PJ.13 |

| LCDH7_TFT R2 PJ.01 | LCDH7_TFT G2 PJ.09 | LCDH7_TFT B2 PJ.14 |

| LCDH7_TFT R3 PJ.02 | LCDH7_TFT G3 PJ.10 | LCDH7_TFT B3 PJ.15 |

| LCDH7_TFT R4 PJ.03 | LCDH7_TFT G4 PJ.11 | LCDH7_TFT B4 PK.03 |

| LCDH7_TFT R5 PJ.04 | LCDH7_TFT G5 PK.00 | LCDH7_TFT B5 PK.04 |

| LCDH7_TFT R6 PJ.05 | LCDH7_TFT G6 PK.01 | LCDH7_TFT B6 PK.05 |

| LCDH7_TFT R7 PJ.06 | LCDH7_TFT G7 PK.02 | LCDH7_TFT B7 PK.06 |

-------------------------------------------------------------------------------

| LCDH7_TFT HSYNC PI.12 | LCDTFT VSYNC PI.13 |

| LCDH7_TFT CLK PI.14 | LCDH7_TFT DE PK.07 |

-----------------------------------------------------

*/

GPIO_InitTypeDef GPIO_Init_Structure;

/*##-Enable peripherals and GPIO Clocks #################################*/

/* 使能LTDC時鐘 */

__HAL_RCC_LTDC_CLK_ENABLE();

/* 使能GPIO時鐘 */

__HAL_RCC_GPIOI_CLK_ENABLE();

__HAL_RCC_GPIOJ_CLK_ENABLE();

__HAL_RCC_GPIOK_CLK_ENABLE();

/* GPIOI 配置 */

GPIO_Init_Structure.Pin = GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;

GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;

GPIO_Init_Structure.Pull = GPIO_NOPULL;

GPIO_Init_Structure.Speed = GPIO_SPEED_FREQ_HIGH;

GPIO_Init_Structure.Alternate = GPIO_AF14_LTDC;

HAL_GPIO_Init(GPIOI, &GPIO_Init_Structure);

/* GPIOJ 配置 */

GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | \

GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | \

GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | \

GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;

GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;

GPIO_Init_Structure.Pull = GPIO_NOPULL;

GPIO_Init_Structure.Speed = GPIO_SPEED_FREQ_HIGH;

GPIO_Init_Structure.Alternate = GPIO_AF14_LTDC;

HAL_GPIO_Init(GPIOJ, &GPIO_Init_Structure);

/* GPIOK 配置 */

GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | \

GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;

GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;

GPIO_Init_Structure.Pull = GPIO_NOPULL;

GPIO_Init_Structure.Speed = GPIO_SPEED_FREQ_HIGH;

GPIO_Init_Structure.Alternate = GPIO_AF14_LTDC;

HAL_GPIO_Init(GPIOK, &GPIO_Init_Structure);

}

代碼2

2-2、LTDC配置

2-2-1、配置LTDC時鐘

2-2-2、配置信號極性

2-2-3、配置時序

2-2-4、配置背景層顏色

2-2-1、配置LTDC時鐘

找到該RGB屏幕手冊有關時鐘配置參數部分。可以看到該RGB屏幕支持的時鐘頻率的典型值是30MHz,最大值是50MHz,如圖2。

圖2

我打算把時鐘配置為最大頻率50MHz,如何配置呢?使用STM32CubeMX軟件進行時鐘配置,如圖3。

圖3

通過圖3可以看到,為得到50MHz的LTDC時鐘,即配置PLL3M = 5,PLL3N = 60,PLL3R = 6,如代碼3。

/* 2-1、配置LTDC時鐘 */

PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;

PeriphClkInitStruct.PLL3.PLL3M = 5;

PeriphClkInitStruct.PLL3.PLL3N = 60;

PeriphClkInitStruct.PLL3.PLL3R = 6;

HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);

代碼3

2-2-2、配置信號極性

在此先說明RGB屏幕的DE(data enable)模式和HV(horizontal vertical)模式的區別。

注:這是兩種不同的同步方式,現在的大尺寸面板一般使用DE同步模式,小尺寸的面板一般使用HV同步模式。HV模式是早期的驅動模式了,現在的液晶屏面板驅動IC基本都是支持HV和DE兩種模式的。很多已經直接去掉了HV模式,僅支持DE模式。DE模式的好處就是使用比較簡單方便。對于支持DE模式的液晶屏,H7可以不接行同步和場同步引腳。針對這個問題,還專門進行了測試,直接不初始化行同步和場同步引腳也是不受影響的。但DE模式不全都是方便的,比如ili9488支持的DE模式就麻煩,是需要使用行同步和場同步引腳的。

找到該RGB屏幕手冊有關信號時序圖,如圖4

圖4

經過測試,DE配置為低電平有效才能正常出現該時序波形,這個問題與時序圖中DE相反,很奇怪。配置信號極性,如代碼4。

注:LTDC_PCPolarity_IPC和LTDC_PCPolarity_IIPC兩種極性,選擇不當會有一些問題。比如,選擇不當底邊會有黑邊。

/* 2-2、配置信號極性 */

hltdc_F.Init.HSPolarity = LTDC_HSPOLARITY_AL; /* HSYNC 低電平有效 */

hltdc_F.Init.VSPolarity = LTDC_VSPOLARITY_AL; /* VSYNC 低電平有效 */

hltdc_F.Init.DEPolarity = LTDC_DEPOLARITY_AL; /* DE 低電平有效 */

hltdc_F.Init.PCPolarity = LTDC_PCPOLARITY_IPC;

代碼4

2-2-3、配置時序

stm32h7官方參考手冊關于LCF-TFT同步時序描述,如圖5

圖5

那么圖5中的HSYNC Width、VSYNC Width、HBP、VBP、Active Width、Active Height 、HFP、VFP這些參數具體數值是多少呢?打開該RGB屏幕手冊,找到該部分描述,如圖6

圖6

通過圖6可以知道Width = 800,HSYNC_W = 48,HBP = 88,HFP = 40,Height = 480,VSYNC_W = 3,VBP = 32,VFP = 13。配置時序,如代碼5。

/* 2-3、時序配置 */

Width = 800;

HSYNC_W = 48;

HBP = 88;

HFP = 40;

Height = 480;

VSYNC_W = 3;

VBP = 32;

VFP = 13;

hltdc_F.Init.HorizontalSync = (HSYNC_W - 1);

hltdc_F.Init.VerticalSync = (VSYNC_W - 1);

hltdc_F.Init.AccumulatedHBP = (HSYNC_W + HBP - 1);

hltdc_F.Init.AccumulatedVBP = (VSYNC_W + VBP - 1);

hltdc_F.Init.AccumulatedActiveH = (Height + VSYNC_W + VBP - 1);

hltdc_F.Init.AccumulatedActiveW = (Width + HSYNC_W + HBP - 1);

hltdc_F.Init.TotalHeigh = (Height + VSYNC_W + VBP + VFP - 1);

hltdc_F.Init.TotalWidth = (Width + HSYNC_W + HBP + HFP - 1);

代碼5

2-2-4、配置背景層顏色

完成以上步驟后,可以測試LCD的背景色顯示是否正常,如果正常,說明配置基本沒有問題。這里配置的背景顏色是紅色,即hltdc_F.Init.Backcolor.Blue = 0; hltdc_F.Init.Backcolor.Green = 0; hltdc_F.Init.Backcolor.Red = 255; 配置背景層顏色代碼如下。

/* 2-4、配置背景層顏色 */

hltdc_F.Init.Backcolor.Blue = 0;

hltdc_F.Init.Backcolor.Green = 0;

hltdc_F.Init.Backcolor.Red = 255;

hltdc_F.Instance = LTDC;

/* 初始化LTDC */

if (HAL_LTDC_Init(&hltdc_F) != HAL_OK)

{

/* 初始化錯誤 */

Error_Handler(__FILE__, __LINE__);

}

通過以上配置,將程序下載進電路板,可以看到屏幕點亮,顯示紅色,如圖7

圖7

至此,stm32h7“點亮RGB屏幕”操作完畢!

總結

以上是生活随笔為你收集整理的stm32驱动rgb屏电路图_stm32h7“点亮RGB屏幕”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。