OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4434|回复: 7

LCD的裸机例程有4.3寸480*272的例程吗?

[复制链接]

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-3-26
在线时间
16 小时
发表于 2020-6-3 01:09:35 | 显示全部楼层 |阅读模式
5金钱
我看到网盘里的例程是针对7寸屏1024*600,想尝试修改成支持4.3寸480*272,但实际总是不成功,有修改好的例程分享一下吗?

最佳答案

查看完整内容[请看2#楼]

我们例程默认就支持4.3的RGB屏幕, 480272的, 你啥都不用做,直接接4.3RGB屏就行了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-6-3 01:09:36 | 显示全部楼层
我们例程默认就支持4.3的RGB屏幕, 480272的, 你啥都不用做,直接接4.3RGB屏就行了。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2020-6-3 12:10:53 | 显示全部楼层
我记得例程是兼容4.3RGB屏幕的
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2020-4-16
在线时间
2 小时
发表于 2020-6-3 18:57:06 | 显示全部楼层
LCD视频里有把7寸参数改为4.3寸的介绍,可能你忽略了
回复

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-3-26
在线时间
16 小时
 楼主| 发表于 2020-6-3 22:43:23 | 显示全部楼层
我只看了驱动开发指南,看来还是要看视频才行呀!
回复

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-3-26
在线时间
16 小时
 楼主| 发表于 2020-6-6 00:17:26 | 显示全部楼层
正点原子 发表于 2020-6-3 01:09
我们例程默认就支持4.3的RGB屏幕, 480272的, 你啥都不用做,直接接4.3RGB屏就行了。

难道我拿到的例程不支持?你们说的裸机支持的例程在哪儿?

我看到的LCD裸机例程,位置在【正点原子】阿尔法Linux开发板(A盘)-基础资料\【正点原子】阿尔法Linux开发板(A盘)-基础资料\1、例程源码\1、裸机例程\15_lcd

我看到的初始话程序如下,怎么可能兼容480*272的
void lcd_init(void)
{
        lcdgpio_init();                        /* 初始化IO                         */
        lcdclk_init(32, 3, 5);        /* 初始化LCD时钟                 */
       
        lcd_reset();                        /* 复位LCD                          */
        delayms(10);                        /* 延时10ms                         */
        lcd_noreset();                        /* 结束复位                         */

        /* TFTLCD参数结构体初始化 */
        tftlcd_dev.height = 600;       
        tftlcd_dev.width = 1024;
        tftlcd_dev.pixsize = 4;                                /* ARGB8888模式,每个像素4字节 */
        tftlcd_dev.vspw = 3;
        tftlcd_dev.vbpd = 20;
        tftlcd_dev.vfpd = 12;
        tftlcd_dev.hspw = 20;
        tftlcd_dev.hbpd = 140;
        tftlcd_dev.hfpd = 160;
        tftlcd_dev.framebuffer = LCD_FRAMEBUF_ADDR;       
        tftlcd_dev.backcolor = LCD_WHITE;        /* 背景色为白色 */
        tftlcd_dev.forecolor = LCD_BLACK;        /* 前景色为黑色 */
     
        /* 初始化ELCDIF的CTRL寄存器
     * bit [31] 0 : 停止复位
     * bit [19] 1 : 旁路计数器模式
     * bit [17] 1 : LCD工作在dotclk模式
     * bit [15:14] 00 : 输入数据不交换
     * bit [13:12] 00 : CSC不交换
     * bit [11:10] 11 : 24位总线宽度
     * bit [9:8]   11 : 24位数据宽度,也就是RGB888
     * bit [5]     1  : elcdif工作在主模式
     * bit [1]     0  : 所有的24位均有效
         */
         LCDIF->CTRL |= (1 << 19) | (1 << 17) | (0 << 14) | (0 << 12) |
                                         (3 << 10) | (3 << 8) | (1 << 5) | (0 << 1);
        /*
     * 初始化ELCDIF的寄存器CTRL1
     * bit [19:16]  : 0X7 ARGB模式下,传输24位数据,A通道不用传输
         */       
         LCDIF->CTRL1 = 0X7 << 16;

         /*
      * 初始化ELCDIF的寄存器TRANSFER_COUNT寄存器
      * bit [31:16]  : 高度
      * bit [15:0]   : 宽度
          */
        LCDIF->TRANSFER_COUNT  = (tftlcd_dev.height << 16) | (tftlcd_dev.width << 0);

        /*
     * 初始化ELCDIF的VDCTRL0寄存器
     * bit [29] 0 : VSYNC输出
     * bit [28] 1 : 使能ENABLE输出
     * bit [27] 0 : VSYNC低电平有效
     * bit [26] 0 : HSYNC低电平有效
     * bit [25] 0 : DOTCLK上升沿有效
     * bit [24] 1 : ENABLE信号高电平有效
     * bit [21] 1 : DOTCLK模式下设置为1
     * bit [20] 1 : DOTCLK模式下设置为1
     * bit [17:0] : vsw参数
         */
        LCDIF->VDCTRL0 = 0;        //先清零
        LCDIF->VDCTRL0 = (0 << 29) | (1 << 28) | (0 << 27) |
                                         (0 << 26) | (0 << 25) | (1 << 24) |
                                         (1 << 21) | (1 << 20) | (tftlcd_dev.vspw << 0);
        /*
         * 初始化ELCDIF的VDCTRL1寄存器
         * 设置VSYNC总周期
         */  
        LCDIF->VDCTRL1 = tftlcd_dev.height + tftlcd_dev.vspw + tftlcd_dev.vfpd + tftlcd_dev.vbpd;  //VSYNC周期
         
         /*
          * 初始化ELCDIF的VDCTRL2寄存器
          * 设置HSYNC周期
          * bit[31:18] :hsw
          * bit[17:0]  : HSYNC总周期
          */
        LCDIF->VDCTRL2 = (tftlcd_dev.hspw << 18) | (tftlcd_dev.width + tftlcd_dev.hspw + tftlcd_dev.hfpd + tftlcd_dev.hbpd);

        /*
         * 初始化ELCDIF的VDCTRL3寄存器
         * 设置HSYNC周期
         * bit[27:16] :水平等待时钟数
         * bit[15:0]  : 垂直等待时钟数
         */
        LCDIF->VDCTRL3 = ((tftlcd_dev.hbpd + tftlcd_dev.hspw) << 16) | (tftlcd_dev.vbpd + tftlcd_dev.vspw);

        /*
         * 初始化ELCDIF的VDCTRL4寄存器
         * 设置HSYNC周期
         * bit[18] 1 : 当使用VSHYNC、HSYNC、DOTCLK的话此为置1
         * bit[17:0]  : 宽度
         */
       
        LCDIF->VDCTRL4 = (1<<18) | (tftlcd_dev.width);

        /*
     * 初始化ELCDIF的CUR_BUF和NEXT_BUF寄存器
     * 设置当前显存地址和下一帧的显存地址
         */
        LCDIF->CUR_BUF = (unsigned int)tftlcd_dev.framebuffer;
        LCDIF->NEXT_BUF = (unsigned int)tftlcd_dev.framebuffer;


        lcd_enable();                        /* 使能LCD         */
        delayms(10);
        lcd_clear(LCD_WHITE);        /* 清屏                 */
       
}
回复

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-3-26
在线时间
16 小时
 楼主| 发表于 2020-6-6 14:12:08 | 显示全部楼层
正点原子 发表于 2020-6-3 01:09
我们例程默认就支持4.3的RGB屏幕, 480272的, 你啥都不用做,直接接4.3RGB屏就行了。

你说的支持所有原子LCD的裸机例例程能发我一份吗?

我发现视频教程中所讲解的例程的确支持所有原子显示屏,但是网盘中的源码只支持1024*600的屏幕。
回复

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-3-26
在线时间
16 小时
 楼主| 发表于 2020-6-6 14:38:13 | 显示全部楼层
仔细观看了视频,修改参数如下就可以工作了
       lcdclk_init(27, 8, 8);

        tftlcd_dev.height = 272;
        tftlcd_dev.width = 480;
        tftlcd_dev.pixsize = 4;                        
        tftlcd_dev.vspw = 1;
        tftlcd_dev.vbpd = 8;
        tftlcd_dev.vfpd = 8;
        tftlcd_dev.hspw = 1;
        tftlcd_dev.hbpd = 40;
        tftlcd_dev.hfpd = 5;
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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