打印

请帮忙查看ADS7843控制触摸屏的程序bug

[复制链接]
1969|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zy315|  楼主 | 2008-1-11 09:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了一个ADS7843控制4线触摸屏的程序,可是上电后只能读一次坐标,再触摸就无效了,请问是什么问题?cpu是C8051F022,代码如下:

//SPI驱动部分
void  start_ads7843(void)
{
    sck43=0;
    cs43=1;
    si43=1;
    sck43=1;
    cs43=0;
}

void  WriteTo7843(byte command)    // 写7843命令
{
    byte  count=0;
    sck43=0;
    for(count=0;count<8;count++)
    {
        if(command&0x80)
            si43=1;
        else
            si43=0;
        sck43=0;
        delay(2);  
        sck43=1;        // 上升沿有效
        delay(2); 
        command<<=1;
    }
}

word  ReadFrom7843(void)           // 读7843数据
{
    byte  count=0;
    word  coordinate=0;
    for(count=0;count<12;count++)
    {
        coordinate<<=1;
        sck43=1;                   
        delay(2);
        sck43=0;        // 下降沿有效
        delay(2);
        if(so43) 
            coordinate++;
    }
    return  coordinate;
}

void  end_ads7843(void)
{
    sck43=1;
    cs43=1;
}

//触摸读屏部分
            delay(200);
            start_ads7843();
            delay(2);
            WriteTo7843(0x90);
            delay(2);
            sck43=1;
            delay(2);
            sck43=0;
            delay(2);
            x_coordinate=ReadFrom7843();
            x_coordinate=(x_coordinate*240)/0x0fff;
            WriteTo7843(0xd0);
            delay(2);
            sck43=1;
            delay(2);
            sck43=0;
            delay(2);
            y_coordinate=ReadFrom7843();
            y_coordinate=(y_coordinate*320)/0x0fff;
            end_ads7843(); 
            lcd_cross(((byte)(x_coordinate)),((word)(y_coordinate)),0);   
 

相关帖子

沙发
gliethttp| | 2008-1-11 09:34 | 只看该作者

不是太清楚,不过你可以参看一下一个可以用的程序!

看不出来,觉得不用delay,对于arm9配置为90M处理器时钟,时能icache指令缓存,不用做任何延时都可以正常工作,另一方面ads7843的dclk和cs每次操作完之后的默认状态电平值是有讲究的,我这有一个在at91rm9200+ads1.2+ads7843的可以用的源程序:
http://blog.chinaunix.net/u1/38994/showart_459503.html

使用特权

评论回复
板凳
yujun0834| | 2008-1-11 14:01 | 只看该作者

re

我是放在while(1)中,用中断触发。你可以这样试试!!

使用特权

评论回复
地板
and| | 2008-1-14 09:58 | 只看该作者

关注

我也在调试

使用特权

评论回复
5
zy315|  楼主 | 2008-1-17 09:44 | 只看该作者

谢谢上面几位,已经搞定

虽然是12位结果,但也得读16位才行 ,程序还要再给出4个时钟脉冲,否则后面再发指令就不识别了,所以只能读一次!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

17

帖子

0

粉丝