硬汉嵌入式论坛

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

[有问必答] 移植V5硬件显示屏不能触屏,求指教

[复制链接]

9

主题

28

回帖

55

积分

初级会员

积分
55
发表于 2024-3-2 17:17:15 | 显示全部楼层 |阅读模式
本帖最后由 locklocker 于 2024-3-3 17:06 编辑

程序直接烧录的V5配套资料中STemwin教程里的第2章:STemWin5.xx详细移植步骤 中的程序,在开发板上可以完美运行,但是在自己画的板子上就只能正常显示不能触屏操作,显示屏为安富莱配套的5寸电容屏,电路图如下,请各位大佬不吝赐教!!!
SCH_Schematic1_1-P1_2024-03-02.png
微信图片_20240302171627.jpg
显示屏是这个
微信图片_20240303170353.jpg


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106827
QQ
发表于 2024-3-3 10:56:55 | 显示全部楼层
你的显示屏是GT911还是GT811的
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-3-3 17:04:52 | 显示全部楼层
本帖最后由 locklocker 于 2024-3-3 17:35 编辑
eric2013 发表于 2024-3-3 10:56
你的显示屏是GT911还是GT811的

好像是RA8875
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106827
QQ
发表于 2024-3-4 00:40:48 | 显示全部楼层

RA8875是LCD控制器,你的显示屏触摸用的那个,GT911还是GT811
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-3-4 14:12:50 | 显示全部楼层
eric2013 发表于 2024-3-4 00:40
RA8875是LCD控制器,你的显示屏触摸用的那个,GT911还是GT811

GT811应该是
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106827
QQ
发表于 2024-3-4 14:53:55 | 显示全部楼层

这样的话,将emWin的游标箭头显示出来,然后你水平滑动和垂直滑动,看看游标的变化方向,大概率X,Y轴镜像之类的问题。
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-3-4 15:37:55 | 显示全部楼层
eric2013 发表于 2024-3-4 14:53
这样的话,将emWin的游标箭头显示出来,然后你水平滑动和垂直滑动,看看游标的变化方向,大概率X,Y轴镜像 ...

嗯..鼠标显示出来了,但是滑动的时候鼠标不会动
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106827
QQ
发表于 2024-3-4 16:01:10 | 显示全部楼层
locklocker 发表于 2024-3-4 15:37
嗯..鼠标显示出来了,但是滑动的时候鼠标不会动

那就是触摸的移植实现有问题,调试下你的bsp gt811.C文件,里面有printf数据打印,可以打开看下。
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-3-5 17:02:31 | 显示全部楼层
eric2013 发表于 2024-3-4 16:01
那就是触摸的移植实现有问题,调试下你的bsp gt811.C文件,里面有printf数据打印,可以打开看下。

不好意思 我刚才用这个初始化代码试了一下
void TOUCH_InitHard(void)
{
        uint16_t i;
       
    g_tTP.Enable = 0;
    g_tTP.Write = g_tTP.Read = 0;       
    printf("\nAAA\n");
        /* 50ms,等待GT811复位就绪,才能探测GT811芯片 ID */
        for (i = 0; i < 5; i++)
        {
                if (i2c_CheckDevice(GT811_I2C_ADDR) == 0)
                {
                        GT811_InitHard();
                        printf("2\n");
                        return;                /* 2015-04-21 break 修改为 return */
                }

                /* FT系列电容触摸触摸 : 4.3寸id = 0x55    5.0寸id = 0x0A  7.0寸id = 0x06 */
                if (i2c_CheckDevice(FT5X06_I2C_ADDR) == 0)
                {
                        uint8_t id;
                       
                        /*
                        系统上电后要先做一段时间的延迟,因为FT系列电容触摸芯片上电后可以直接检查出芯片,但是读
                        取的ID号是不对,需要延迟一段时间后再读取才是正确的。
                        */
                        bsp_DelayMS(100);
                               
                        id = FT5X06_ReadID();
                        printf("id=%x\n",id);
                        printf("id=%d\n",id);
                        if (id == 0x55)
                        {
                                //g_TouchType = CT_FT5X06;
                                //g_LcdType = LCD_43_480X272;               
                                printf("检测到4.3寸电容触摸屏\r\n");
                        }
                        else if (id == 0x0A)
                        {
                                //g_TouchType = CT_FT5X06;
                                //g_LcdType = LCD_50_800X480;               
                                printf("检测到5.0寸电容触摸屏\r\n");                               
                        }
                        else        /* id == 0x06 表示7寸电容屏(FT芯片) */
                        {
                                //g_TouchType = CT_FT5X06;
                                //g_LcdType = LCD_70_800X480;               
                                printf("检测到7.0寸电容触摸屏\r\n");                                       
                        }
                       
                        FT5X06_InitHard();
                        return;
                }
               
                bsp_DelayMS(10);
        }
               
        if (g_ChipID == IC_8875)
        {
                RA8875_TouchInit();

                g_tTP.usMaxAdc = 1023;        /* 10位ADC */
                printf("RA8875\r\n");
        }
        else
        {       
                TSC2046_InitHard();

                g_tTP.usMaxAdc = 4095;        /* 12位ADC */
                printf("TSC2046\r\n");
        }

        TOUCH_LoadParam();        /* 读取校准参数 */

        g_tTP.Enable = 1;
}

发现屏幕插在V5的板子上可以读出来是FT5X06驱动的5寸电容屏,但是插在自己的板子上面他就读不出ID,这是什么问题呢?是硬件连接设置的问题吗
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-3-5 17:18:09 | 显示全部楼层
eric2013 发表于 2024-3-4 16:01
那就是触摸的移植实现有问题,调试下你的bsp gt811.C文件,里面有printf数据打印,可以打开看下。

刚发现上电以后系统会一只进入这个函数uint8_t i2c_WaitAck(void)
{
        uint8_t re;

        I2C_SDA_1();        /* CPU释放SDA总线 */
        i2c_Delay();
        I2C_SCL_1();        /* CPU驱动SCL = 1, 此时器件会返回ACK应答 */
        i2c_Delay();
        if (I2C_SDA_READ())        /* CPU读取SDA口线状态 */
        {
                re = 1;
                printf("NO\n");
        }
        else
        {
                re = 0;
                printf("YES\n");
        }
        I2C_SCL_0();
        i2c_Delay();
        return re;
}
返回0
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106827
QQ
发表于 2024-3-6 09:47:19 | 显示全部楼层
locklocker 发表于 2024-3-5 17:18
刚发现上电以后系统会一只进入这个函数uint8_t i2c_WaitAck(void)
{
        uint8_t re;

I2C外部是不是上拉电阻忘了接了。
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-3-6 12:52:11 | 显示全部楼层
eric2013 发表于 2024-3-6 09:47
I2C外部是不是上拉电阻忘了接了。

我看V5原理图上好像也没有接呀
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-3-6 13:10:30 | 显示全部楼层
eric2013 发表于 2024-3-6 09:47
I2C外部是不是上拉电阻忘了接了。

哦哦我看到了,原理图I2C的上拉电阻画在EEPROM那里了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 09:21 , Processed in 0.433060 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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