当前位置:网站首页>LCD参数解释及计算
LCD参数解释及计算
2022-06-12 17:08:00 【_kerneler】
https://blog.csdn.net/longxiaowu/article/details/24319933
Linux内核的amba lcd控制器使用clcd_panel结构体表示一个LCD屏的硬件参数:
/* include/linux/fb.h */
struct fb_videomode {
const char *name; /* optional */
u32 refresh; /* optional */
u32 xres;
u32 yres;
u32 pixclock;
u32 left_margin;
u32 right_margin;
u32 upper_margin;
u32 lower_margin;
u32 hsync_len;
u32 vsync_len;
u32 sync;
u32 vmode;
u32 flag;
};
/* include/linux/amba/clcd.h */
struct clcd_panel {
struct fb_videomode mode;
signed short width; /* width in mm */
signed short height; /* height in mm */
u32 tim2;
u32 tim3;
u32 cntl;
unsigned int bpp:8,
fixedtimings:1,
grayscale:1;
unsigned int connector;
};
先看一个例子:http://lxr.linux.no/linux+v2.6.37.4/arch/arm/mach-lpc32xx/phy3250.c
fb_videomode各个参数的意义
Linux对LCD的抽象如下图所示:
下面研究一下fb_videomode各个成员的意义:
Linux内核的amba lcd控制器使用clcd_panel结构体表示一个LCD屏的硬件参数:
-
/* include/linux/fb.h */
-
struct fb_videomode {
-
const
char *name;
/* optional */
-
u32 refresh;
/* optional */
-
u32 xres;
-
u32 yres;
-
u32 pixclock;
-
u32 left_margin;
-
u32 right_margin;
-
u32 upper_margin;
-
u32 lower_margin;
-
u32 hsync_len;
-
u32 vsync_len;
-
u32 sync;
-
u32 vmode;
-
u32 flag;
-
};
-
/* include/linux/amba/clcd.h */
-
struct clcd_panel {
-
struct fb_videomode mode;
-
signed
short width;
/* width in mm */
-
signed
short height;
/* height in mm */
-
u32 tim2;
-
u32 tim3;
-
u32 cntl;
-
unsigned
int bpp:
8,
-
fixedtimings:
1,
-
grayscale:
1;
-
unsigned
int connector;
-
};


| 名称 | 在数据手册中的简称 | 中文名 | 意义 | 备注 |
| name | No | 名字 | 液晶屏名字(可选) | No |
| refresh | No | 刷新频率 | 刷新频率(内核中很多例子都赋值为60) | No |
| xres | No | 行宽 | 每行的像素个数 | No |
| yres | No | 屏幕高度 | 屏幕的行数 | No |
| pixclock | No | 像素时钟 | 每个像素时钟周期的长度,单位是皮秒(10的负12次方分之1秒) | No |
| left_margin | HBP (Horizontal Back Porch) | 水平后沿 | 在每行或每列的象素数据开始输出时要插入的象 素时钟周期数 | No |
| right_margin | HFP (Horizontal Front Porch ) | 水平前沿 | 在每行或每列的象素结束到LCD 行时钟输出脉冲 之间的象素时钟数 | No |
| upper_margin | VBP (Vertical Back Porch) | 垂直后沿 | 在垂直同步周期之后帧开头时的无效行数 | No |
| lower_margin | VFP (Vertical Front Porch) | 垂直前沿 | 本帧数据输出结束到下一帧垂直同步周期开始之 前的无效行数 | No |
| hsync_len | HPW (HSYNC plus width) | 行同步脉宽 | 单位:像素时钟周期 | 也有手册简称为HWH(HSYNC width) |
| vsync_len | VPW (VSYNC width) | 垂直同步脉宽 | 单位:显示一行的时间th | 也有手册简称为VWH(VSYNC width) |
| sync | No | 同步极性设置 | 可以根据需要设置FB_SYNC_HOR_HIGH_ACT(水平同步高电平有效)和FB_SYNC_VERT_HIGH_ACT(垂直同步高电平有效) | No |
| vmode | No | No | 在内核中的大多数示例都直接置为FB_VMODE_NONINTERLACED。interlaced的意思是交错[隔行]扫描,电视中使用2:1的交错率, 即每帧分两场,垂直扫描两次,一场扫描奇数行,另一场扫描偶数行。很显然LCD目前不是这种模式。 | No |
| flag | No | No | 目前没有看到用法 | No |
#define TIM2_IVS (1 << 11) 反转垂直同步 信号的极性。0:高电平有效,低电平无效。1:相反
#define TIM2_IHS (1 << 12) 反转水平同步 信号的极性。0:高电平有效,低电平无效。1:相反
#define TIM2_IPC (1 << 13) 来选择象素数据是在显示屏时钟的上升沿还是下降沿被驱动到LCD 数据线。0:上升沿。1:下降沿。
#define TIM2_IOE (1 << 14) 这个位选择输出使能信号的有效极性。0:高电平有效,低电平无效。1:相反
#define TIM2_BCD (1 << 26) 将该位设为 1,令 PCD 的分频无效。主要用于 TFT 显示屏。这个位通常不设置,使用默认值0.
#define CNTL_LCDBPP1 (0 << 1) bit[1-3]定义色深。bpp:bits per pixel,每个像素的比特数。000 = 1 bpp.
#define CNTL_LCDBPP4 (2 << 1) 010 = 4 bpp.
#define CNTL_LCDBPP8 (3 << 1) 011 = 8 bpp.
#define CNTL_LCDBPP16 (4 << 1) 100 = 16 bpp
#define CNTL_LCDBPP16_565 (6 << 1) 110 = 16 bpp, 5:6:5 mode
#define CNTL_LCDBPP24 (5 << 1) 101 = 24 bpp (TFT panel only).
#define CNTL_LCDBW (1 << 4) STN LCD 单色/彩色选择 。1:彩色,0:单色
#define CNTL_LCDTFT (1 << 5) LCD 显示屏 TFT 类型选择。0: STN 显示屏,使用灰度定标器。1: TFT 显示屏,不使用灰度定标器
#define CNTL_LCDMONO8 (1 << 6) 这个位决定单色 STN LCD 是使用 4 位并行接口还是 8 位并行接口。0:4位接口。
#define CNTL_LCDDUAL (1 << 7) STN 单 LCD 显示屏或双 LCD 显示屏选择 。0=单屏
#define CNTL_BGR (1 << 8) 色彩模式选择,0=RGB:正常输出,1=BGR:红色和蓝色交换位置
#define CNTL_BEBO (1 << 9) 控制内存中字节的存储顺序: 0=小端字节顺序,1=大端字节顺序
#define CNTL_BEPO (1 << 10) 设定象素排序的方式,0=采用小端象素排序,1=采用大端象素排序
#define CNTL_LCDPWR (1 << 11) LCD 电源使能。1=LCD 显示屏通电且 LCDV[23:0]信号使能
#define CNTL_LCDVCOMP(x) ((x) << 12) LCD 纵向比较中断.00=垂直同步脉冲有效,01=垂直后沿开始,10=有效视频图像开始,11=垂直前沿开始
#define CNTL_LDMAFIFOTIME (1 << 15) DMA FIFO请求延时
#define CNTL_WATERMARK (1 << 16) LCD DMA FIFO 水位线.0:当 DMA FIFO 包含 4 个或 4 个以上空单元时产生一个 LCD DMA 请求 .1:8个。




-
static
struct clcd_panel conn_lcd_panel = {
-
.mode = {
-
.name =
"QVGA TM035KDH03",
-
.refresh =
60,
-
.xres =
240,
-
.yres =
320,
-
.pixclock =
35714,
-
.left_margin =
69,
-
.right_margin =
18,
-
.upper_margin =
12,
-
.lower_margin =
10,
-
.hsync_len =
1,
-
.vsync_len =
1,
-
.sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
-
.vmode = FB_VMODE_NONINTERLACED,
-
},
-
.width =
-1,
-
.height =
-1,
-
.tim2 =
0,
-
.cntl = ( CNTL_LCDTFT | CNTL_LCDVCOMP(
1) | CNTL_LCDBPP16_565),
-
.bpp =
16,
-
};
边栏推荐
- How to change Golan back to the English version when it becomes the Chinese version
- 2080虚拟机登录命令
- Analysis of CA certificate with high value
- (5) Outputs and outputs
- Qt开发高级进阶:初探qt + opengl
- R语言使用epiDisplay包的tableStack函数基于分组变量生成统计分析表(包含描述性统计分析、假设检验、不同数据使用不同的统计量和假设检验方法)、自定义配置是否显示统计检验内容
- Operating with idle funds
- R语言使用epiDisplay包的tabpct函数生成二维列联表并使用马赛克图可视化列联表(二维列联表、边际频数、以及按行、按列的比例)、自定义设置ylab参数设置Y轴的轴标签文本(y axis)
- Memory control of node
- su直接切换到超级管理员模式,这样很多报错都可以避免了
猜你喜欢

Quick start sweep crawler framework

Use GCC's PGO (profile guided optimization) to optimize the entire system

To understand Devops, you must read these ten books!

D. master router setting and 401 networking

First acquaintance with go language

R language arma-garch-copula model and financial time series case

淘宝Native研发模式的演进与思考 | DX研发模式

1723. minimum time to complete all work

Google浏览器调试技巧

goland变成中文版了怎么修改回英文版
随机推荐
Sudo of uabntu
MIPS 通用寄存器 + 指令
Modify the configuration of the router connected to your computer. The website is 192.168.1.1
5-5 configuring MySQL replication log point based replication
卖疯了的临期产品:超低价、大混战与新希望
快速入门scrapy爬虫框架
PAT甲级 1142 最大团
R语言计算data.table在一个分组变量的值固定的情况下另外一个分组变量下指定数值变量的均值
Basic knowledge of stock introduction: is fixed increase good or bad?
两位新晋Committer的“升级攻略”
The R language uses the PDF function to save the visual image results to the PDF file, uses the PDF function to open the image device, uses the dev.off function to close the image device, and customiz
selenium元素定位
The R language uses the pyramid function of epidisplay package to visualize the pyramid graph and the pyramid graph based on the existing summary data (table data)
Sizepolicy policy in layout management
ftrace
JS using RSA encryption and decryption
(6) Control statement if/else switch
R语言使用plot函数可视化数据散点图,使用font.axis参数指定坐标轴刻度标签的字体类型为斜体字体(italic)
(4) Golang operator
Feedback compilation