硬汉嵌入式论坛

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

[有问必答] ra8875没有触摸,但是一直会识别到触摸

[复制链接]

6

主题

7

回帖

25

积分

新手上路

积分
25
发表于 2015-8-21 15:23:26 | 显示全部楼层 |阅读模式
ra8875什么情况下会识别到触摸? 论坛上有人说阻抗的问题,量了下阻抗算正常,清中断每次都清了
读下图所示的寄存器位,值是表明未被触摸,还有什么会识别到触摸
调试的时候遇到以下情况:
1. 清中断后,立马读中断状态寄存器是没有触发,但是稍微隔了几条语句,就总是读到触发的状态
2. 设置成手动模式的时候,读中断状态寄存器是表明没有触发的
3. 读74h这个寄存器是表示触摸板一直没被触摸的
4.虽然一直会触发,但是我触摸屏幕的时候,大体的坐标显示是对的,只是没有触摸的时候会有触摸反应

你别的论坛上求助过,没有答案,听说这个论坛都是搞屏幕方面的高手,来求助下遇到类似情况的,谢谢了



221815wxxo3porcodn2f3e.png.thumb.jpg
221704y9sseovtn8vx4xvv.png.thumb.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116765
QQ
发表于 2015-8-21 21:25:10 | 显示全部楼层
这个是我们做的RA8875触摸部分,读取触摸数值的部分不太一样,可以试试我们的。
=============================================

/*
*********************************************************************************************************
*    函 数 名: RA8875_TouchInit
*    功能说明: 初始化触摸板
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
void RA8875_TouchInit(void)
{
    RA8875_WriteReg(0xF0, (1 << 2));    /* 开启触控面板中断位 */

    /*
        REG[71h] Touch Panel Control Register 1 (TPCR1)

        Bit7 N/A
        Bit6 触控面板模式设定
            0 : 自动模式。
            1 : 手动模式。
        Bit5 触控面板控制器ADC 参考电压(Vref)来源设定
            0 : 内部产生参考电压。
            1 : 外部输入参考电压,ADC 参考电压准位= 1/2 VDD。
        Bit4-3 N/A
        Bit2 触控中断讯号的消除弹跳电路选择
            0: 关闭消除弹跳电路。
            1: 开启消除弹跳电路。
        Bit1-0 触控面板手动模式之选择位
            00b : 闲置模式。触控控制单元进入闲置模式。
            01b : 侦测触摸事件发生。在此模式控制器会侦测触摸事件的发
                生,事件发生可以引发中断或是由缓存器得知(REG[F1h]
                Bit2)。
            10b : X 轴数据撷取模式。在此模式触摸位置的X 轴数据会被储
                存至 REG[72h] 和REG[74h]。
            11b : Y 轴数据撷取模式。在此模式触摸位置的Y 轴数据会被储
                存至REG[73h] and REG[74h]。
    */
    RA8875_WriteReg(0x71, (0 << 6) | (0 << 5) | (1 << 2));    /* 选择自动模式 */

    /*
        REG[70h] Touch Panel Control Register 0 (TPCR0)

        Bit7 触控面板功能设定
            0 : 关闭。
            1 : 开启。
        Bit6-4 触控面板控制器取样时间设定
            000b : ADC 取样时间为512 个系统频率周期。
            001b : ADC 取样时间为 1024 个系统频率周期。
            010b : ADC 取样时间为 2048 个系统频率周期。
            011b : ADC 取样时间为 4096 个系统频率周期。
            100b : ADC 取样时间为 8192 个系统频率周期。
            101b : ADC 取样时间为 16384 个系统频率周期。
            110b : ADC 取样时间为 32768 个系统频率周期。
            111b : ADC 取样时间为65536 个系统频率周期。
        Bit3 触控面板唤醒模式
            0 : 关闭触控事件唤醒模式。
            1 : 触控事件可唤醒睡眠模式。
        Bit2-0 触控面板控制器ADC 频率设定
            000b : 系统频率。
            001b : 系统频率 / 2。
            010b : 系统频率 / 4。
            011b : 系统频率 / 8。
            100b : 系统频率 / 16。
            101b : 系统频率 / 32。
            110b : 系统频率 / 64。
            111b : 系统频率 / 128。

        注 : ADC 的输入频率设定不能超过10MHz。
    */
    RA8875_WriteReg(0x70, (1 << 7) | (3 << 4) | (0 << 3) | (2 << 0));    /* 开启触摸功能; */
}

/*
*********************************************************************************************************
*    函 数 名: RA8875_TouchReadX
*    功能说明: 读取X位置ADC   (这个函数被定时中断服务程序调用,需要避免寄存器访问冲突 )
*    形    参: 无
*    返 回 值: ADC值,10Bit
*********************************************************************************************************
*/
uint16_t RA8875_TouchReadX(void)
{
    uint16_t usAdc;
    uint8_t ucRegValue;
    uint8_t ucReg74;

    /* 软件读取中断事件标志 */
    ucRegValue = RA8875_ReadReg_Int(0xF1);
    if (ucRegValue & (1 << 2))
    {
        ucReg74 = RA8875_ReadReg_Int(0x74);
        usAdc = RA8875_ReadReg_Int(0x72);    /* Bit9-2 */
        usAdc <<= 2;
        usAdc += (ucReg74 & 0x03);

        s_usTouchX = usAdc;

        usAdc = RA8875_ReadReg_Int(0x73);    /* Bit9-2 */
        usAdc <<= 2;
        usAdc += ((ucReg74 & 0x0C) >> 2);

        s_usTouchY = usAdc;
    }
    else
    {
        s_usTouchX = 0;
        s_usTouchY = 0;
    }

    /*
        bit2 写入功能?? 触控面板中断清除位
        0 : 未操作。
        1 : 清除触控面板中断。
        读取功能?? 触控面板中断状态
        0 : 未发生触控面板中断。
        1 : 发生触控面板中断。
    */

    /*
        不要调用这个函数写寄存器,因为该函数改写了busy标志
        RA8875_WriteReg(0xF1, (1 << 2));     必须清除, 才会下次采样.
    */
    RA8875_WriteCmd(0xF1);
    RA8875_WriteData(1 << 2);

    return s_usTouchX;
}
回复

使用道具 举报

6

主题

7

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2015-8-22 22:51:43 | 显示全部楼层
我的先不是读取参数的问题,现在是没有触摸屏幕,总是和识别到触摸一样
回复

使用道具 举报

6

主题

7

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2015-8-24 20:16:05 | 显示全部楼层
结贴这个问题已解决,是改线后,上拉没有跟着改,搞死人的节奏
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116765
QQ
发表于 2015-8-24 23:53:19 | 显示全部楼层

回 dwiller 的帖子

dwiller:结贴这个问题已解决,是改线后,上拉没有跟着改,搞死人的节奏 (2015-08-24 20:16) 
[s:151]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 16:27 , Processed in 0.255880 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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