硬汉嵌入式论坛

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

[有问必答] 触摸屏4点校准问题

[复制链接]

4

主题

19

回帖

31

积分

新手上路

积分
31
发表于 2016-7-21 16:53:35 | 显示全部楼层 |阅读模式
在安富莱V5开发板uCOS-II操作系统例程中的uCOS-II+STemWin+FatFs综合例程中,关于触摸屏AD坐标转换为像素坐标的函数中,
当选择四点校准时,当X,Y不交换坐标时(即x=_usAdcX),对应的下面2句程序不是很明白。
x1 = CalTwoPoint(g_tTP.usAdcY1, g_tTP.usAdcX1, g_tTP.usAdcY2,  g_tTP.usAdcX3, _usAdcY);
x2 = CalTwoPoint(g_tTP.usAdcY1, g_tTP.usAdcX4, g_tTP.usAdcY2,  g_tTP.usAdcX2, _usAdcY);
第一句中的第二个点为什么是(g_tTP.usAdcY2,  g_tTP.usAdcX3)而不是(g_tTP.usAdcY3,  g_tTP.usAdcX3)
或者(g_tTP.usAdcY2,  g_tTP.usAdcX2)呢?
望大侠们能多多指教,不胜感激!!!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-7-22 10:03:01 | 显示全部楼层
这样校准出来的效果更好些。
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-22 13:47:05 | 显示全部楼层

回 eric2013 的帖子

eric2013:这样校准出来的效果更好些。 (2016-07-22 10:03) 
那为什么第一个点是(g_tTP.usAdcY1, g_tTP.usAdcY1)呢?而没有像第二个点那样写?
还有一个问题,g_tTP.usAdcY2是不是等于g_tTP.usAdcY3呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-7-22 14:45:01 | 显示全部楼层

回 cjhardwork 的帖子

cjhardwork:那为什么第一个点是(g_tTP.usAdcY1, g_tTP.usAdcY1)呢?而没有像第二个点那样写?
还有一个问题,g_tTP.usAdcY2是不是等于g_tTP.usAdcY3呢?
 (2016-07-22 13:47) 
也可以的。
不相等,但是相近。
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-22 15:09:42 | 显示全部楼层

回 eric2013 的帖子

eric2013:也可以的。
不相等,但是相近。 (2016-07-22 14:45) 
为什么这样写校正效果还好一些呢?
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-22 15:14:33 | 显示全部楼层

回 cjhardwork 的帖子

cjhardwork:为什么这样写校正效果还好一些呢? (2016-07-22 15:09) 
eric,还有一个问题要请教你一下。就是RA8875 LCD显示屏FSMC配置的时候,我看参考手册上写的是存储器宽度8位时:HADDR[25:0]->FSMC_A[25:0],16位时:HADDR[25:1]->FSMC_A[24:0]。8位和16位有什么区别吗?16位的时候HADDR[0]为什么没有用呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-7-22 15:16:21 | 显示全部楼层

回 cjhardwork 的帖子

cjhardwork:为什么这样写校正效果还好一些呢? (2016-07-22 15:09) 
一般情况下没什么差别,这样的话增加随机性。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-7-22 15:17:15 | 显示全部楼层

回 cjhardwork 的帖子

cjhardwork:eric,还有一个问题要请教你一下。就是RA8875 LCD显示屏FSMC配置的时候,我看参考手册上写的是存储器宽度8位时:HADDR[25:0]->FSMC_A[25:0],16位时:HADDR[25:1]->FSMC_A[24:0]。8位和16位有什么区别吗?16位的时候HADDR[0]为什么没有用呢? (2016-07-22 15:14) 
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=14566
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-22 15:39:56 | 显示全部楼层

回 eric2013 的帖子

eric2013:https://forum.anfulai.cn/forum.php?mod=viewthread&tid=14566 (2016-07-22 15:17) 
#define RA8875_BASE   ((uint32_t)(0x6C000000 | 0x00000000))
上面这个宏定义中( | 0x00000000)有什么意义?
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-22 15:44:26 | 显示全部楼层

回 eric2013 的帖子

eric2013:https://forum.anfulai.cn/forum.php?mod=viewthread&tid=14566 (2016-07-22 15:17) 
是对应HDDR[27:26]吗?也就是地址中的A21+A20。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-7-23 09:44:51 | 显示全部楼层

回 cjhardwork 的帖子

cjhardwork:#define RA8875_BASE   ((uint32_t)(0x6C000000 | 0x00000000))
上面这个宏定义中( | 0x00000000)有什么意义? (2016-07-22 15:39) 
没用,可以删掉
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-7-23 09:45:54 | 显示全部楼层

回 cjhardwork 的帖子

cjhardwork:是对应HDDR[27:26]吗?也就是地址中的A21+A20。 (2016-07-22 15:44) 
不是,不错位的时候就是HDDR[21:20]
错位的时候就是HADDE[22:21]
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-25 09:57:12 | 显示全部楼层

回 eric2013 的帖子

eric2013:不是,不错位的时候就是HDDR[21:20]
错位的时候就是HADDE[22:21] (2016-07-23 09:45) 
谢谢Eric了,结合你说的这些我再仔细看看。
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-27 10:05:10 | 显示全部楼层

回 eric2013 的帖子

eric2013:不是,不错位的时候就是HDDR[21:20]
错位的时候就是HADDE[22:21] (2016-07-23 09:45) 
eric,又有一个问题。
还是安富莱V5开发板uCOS-II操作系统例程中的uCOS-II+STemWin+FatFs综合例程,LCD_RA8875.c文件中的程序。
uint16_t RA8875_GetPixelGUI(uint16_t _usX, uint16_t _usY)
{
    uint16_t usRGB;
   
    s_ucRA8875Busy = 1;

//    RA8875_WriteReg(0x40, (1 << 0));    /* 设置为绘图模式,读取光标不自动加1 */
//  RA8875_SetReadCursor(_usX, _usY);    /* 设置读取光标位置 */
   
    RA8875_REG = 0x4A; RA8875_RAM = _usX;
    RA8875_REG = 0x4B; RA8875_RAM = _usX >> 8;
    RA8875_REG = 0x4C; RA8875_RAM = _usY;
    RA8875_REG = 0x4D; RA8875_RAM = _usY >> 8;
    RA8875_REG = 0x02;
   
    usRGB = RA8875_RAM;
    usRGB = RA8875_RAM;
    usRGB = RA8875_RAM;

    s_ucRA8875Busy = 0;

    return usRGB;
}

RA8875_REG = 0x02;这一句的后边是不是应该有RA8875_RAM = _usColor这一句?
还有就是为什么要写3句usRGB = RA8875_RAM;呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 15:50 , Processed in 0.047516 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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