这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore4t_61 [2020/10/21 10:01] zgf |
icore4t_61 [2022/04/01 10:58] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-10-21 | gingko | 初次建立 | | | V1.0 | 2020-10-21 | gingko | 初次建立 | | ||
行 102: | 行 101: | ||
* HV同步模式 | * HV同步模式 | ||
- | HV模式需要LCD_CLK时钟信号,行同步信号LCD_HSYNC和场同步信号LCD_VSYNC来控制刷新。比如一个480x272分辨率的裸屏,有一个行同步信号LCD_HSYNC产生时(高电平或者低电平脉冲),就有480个LCD_CLK输出时钟来确认行中480个点。每个时钟有效的时候,从显存读取一次RGB数据。再来一个行同步信号LCD_HSYNC产生时(高电平或者低电平脉冲),切换到下一行,继续行同步和时钟输出,扫描272行后,发送一个场同步信号LCD_VSYNC,又重新从第一行扫描开始。 | + | HV模式需要LCD_CLK时钟信号,行同步信号LCD_HSYNC和场同步信号LCD_VSYNC来控制刷新。比如一个800x480分辨率的裸屏,有一个行同步信号LCD_HSYNC产生时(高电平或者低电平脉冲),就有800个LCD_CLK输出时钟来确认行中800个点。每个时钟有效的时候,从显存读取一次RGB数据。再来一个行同步信号LCD_HSYNC产生时(高电平或者低电平脉冲),切换到下一行,继续行同步和时钟输出,扫描480行后,发送一个场同步信号LCD_VSYNC,又重新从第一行扫描开始。 |
=== 3.LTDC的时序配置 === | === 3.LTDC的时序配置 === | ||
行 110: | 行 109: | ||
* HSYNC width水平同步宽度设置,以LCD_CLK的像素时钟输出为单位。 | * HSYNC width水平同步宽度设置,以LCD_CLK的像素时钟输出为单位。 | ||
* HBP(horizontal back porch period)水平后沿周期设置,以LCD_CLK的像素时钟输出为单位。 | * HBP(horizontal back porch period)水平后沿周期设置,以LCD_CLK的像素时钟输出为单位。 | ||
- | * Active width有效宽度设置,以LCD_CLK的像素时钟输出为单位。以480*272分辨率为例,Active width = 480。 | + | * Active width有效宽度设置,以LCD_CLK的像素时钟输出为单位。以800*480分辨率为例,Active width = 800。 |
* HFP(horizontal front porch period)水平前沿周期设置,以LCD_CLK的像素时钟输出为单位。 | * HFP(horizontal front porch period)水平前沿周期设置,以LCD_CLK的像素时钟输出为单位。 | ||
* VSYNC width垂直同步宽度设置,以LCD_CLK的像素时钟输出为单位。 | * VSYNC width垂直同步宽度设置,以LCD_CLK的像素时钟输出为单位。 | ||
* VBP(vertical back porch period)垂直后沿周期设置,以LCD_CLK的像素时钟输出为单位。 | * VBP(vertical back porch period)垂直后沿周期设置,以LCD_CLK的像素时钟输出为单位。 | ||
- | * Active height有效高度设置,以LCD_CLK的像素时钟输出为单位。以480*272分辨率为例,Active height = 272。 | + | * Active height有效高度设置,以LCD_CLK的像素时钟输出为单位。以800*480分辨率为例,Active height = 480。 |
* VFP(vertical front porch period)垂直前沿周期设置,以LCD_CLK的像素时钟输出为单位。 | * VFP(vertical front porch period)垂直前沿周期设置,以LCD_CLK的像素时钟输出为单位。 | ||
行 213: | 行 212: | ||
x = x + xs; | x = x + xs; | ||
y = y + ys; | y = y + ys; | ||
- | if((x+r)>=480 || (x-r)<=0){ | + | if((x+r)>=LCD_WIDTH || (x-r)<=0){ |
xs=-1*xs; | xs=-1*xs; | ||
x = x + 2*xs; | x = x + 2*xs; | ||
行 222: | 行 221: | ||
} | } | ||
} | } | ||
- | if((y+r)>=272 || (y-r)<=0){ | + | if((y+r)>=LCD_HEIGHT || (y-r)<=0){ |
ys=-1*ys; | ys=-1*ys; | ||
y = y + 2*ys; | y = y + 2*ys; | ||
行 234: | 行 233: | ||
for(j = oldx-r-2;j < oldx+r+2;j ++){ | for(j = oldx-r-2;j < oldx+r+2;j ++){ | ||
for(i = oldy-r-2;i < oldy+r+2;i ++){ | for(i = oldy-r-2;i < oldy+r+2;i ++){ | ||
- | if(j<1 || j>479 || i<1 || i>271)continue; | + | if(j<1 || j>LCD_WIDTH-1 || i<1 || i>LCD_HEIGHT-1)continue; |
if( (int)(x-j)*(x-j) + (int)(y-i)*(y-i) > (int)r*r ){ | if( (int)(x-j)*(x-j) + (int)(y-i)*(y-i) > (int)r*r ){ | ||
*(volatile unsigned short int *) (address_sdram[i] + (j << 1)) = bg; | *(volatile unsigned short int *) (address_sdram[i] + (j << 1)) = bg; | ||
行 308: | 行 307: | ||
int draw_circle(int x, int y, int r, int color, int fill) { | int draw_circle(int x, int y, int r, int color, int fill) { | ||
int i,j; | int i,j; | ||
- | if(x<0 || x>480 || y<0 || y>272)return 0; | + | if(x<0 || x>LCD_WIDTH || y<0 || y>LCD_HEIGHT)return 0; |
for(j = x-r;j < x+r;j ++){ | for(j = x-r;j < x+r;j ++){ | ||
for(i = y-r;i < y+r;i ++){ | for(i = y-r;i < y+r;i ++){ |