打印
[ZLG-ARM]

ARM嵌入式系统教程(三)的外部存储器接口实验1

[复制链接]
2420|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rpqhy|  楼主 | 2007-1-16 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道是不是在这里发帖的。。。。

我们学校是用周立功老师的教程,这个实验里有这段代码:

uint8  WordProgram(uint32 Addr, uint16 Data) 
{   volatile uint16  *ip;
    uint16  temp1,temp2;

    ip = GetAddr(0x5555);    // 转换地址0x5555
    ip[0] = 0xaaaa;            // 第一个写周期,地址0x5555,数据0xAA
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;            // 第二个写周期,地址0x2aaa,数据0x55
    ip = GetAddr(0x5555);
    ip[0] = 0xa0a0;            // 第三个写周期,地址0x5555,数据0xA0

我看了不懂,怎么输入的是ip[0]=0x5555结果数据是0x55呢?是不是只读一个字节的啊?那样的话是不是也可以用0x0055呢?(从配套ppt里有看到低8位高8位输入的说法)我记得那时我看内存也看不出答案,今天想起就问一下,请老师解答!谢谢!

相关帖子

沙发
rpqhy|  楼主 | 2007-1-16 20:53 | 只看该作者

难道我哪里表达不清晰????

各位看客懂的话帮忙回答一下啦~~~~

使用特权

评论回复
板凳
zlgarm| | 2007-1-17 09:59 | 只看该作者

re:

是的,可以用0x0055代替. SST39VF160/1601进行擦除/编程操作的总线写周期时, 对高8位数据输入忽略。

使用特权

评论回复
地板
rpqhy|  楼主 | 2007-1-17 12:50 | 只看该作者

呵呵,明白了~~~谢谢

菜鸟我以后还会问些别的,请多关照了~!!!

使用特权

评论回复
5
rpqhy|  楼主 | 2007-1-17 16:37 | 只看该作者

关于触摸屏实验的问题,又得麻烦周老师

周老师,我想问的代码如下:
void  GetLCD_XY(uint16 *vx, uint16 *vy)
{   uint16  vx_dat, vy_dat;
    uint16  vx_dat1, vy_dat1;

    while(1)
    {   // 判断是否有触摸动作(通过ADS7843的PENIRQ引脚进行判断)
        while(1)
        {   vy_dat = ADS7843_WriteRead(AIN_Y);
            if(vy_dat != 0) break;            

        } 
        // 进行数据采集
        vx_dat = ADS7843_WriteRead(AIN_X); 
        vy_dat = ADS7843_WriteRead(AIN_Y);
        vx_dat1 = ADS7843_WriteRead(AIN_X);
        vy_dat1 = ADS7843_WriteRead(AIN_Y);
        
        if((vy_dat<3) || (vy_dat1<3)) continue;
///1、上面这一句是还是进行六次数据采集的条件判断语句啊?
///我不明白的是:vy_dat不是坐标值吗,怎么变成次数了??

///师兄叫我看ADS7843_WriteRead里面写什么,我看不大懂。只知道里面
///只返回了ret_dat值。应该就是坐标值吧....
///2、顺便问问,初学者用不用看到驱动里到底写什么?什么时候看最合适?

        
        if(vx_dat>vx_dat1)
        {   
            if((vx_dat-vx_dat1) > 32) continue;      
///3、32怎么得到的?是多次实验得出的,还是大概的。。。。
        }
        else
        {   
            if((vx_dat1-vx_dat) > 32) continue; 
        }
        
        if(vy_dat>vy_dat1) ///
        {   
            if((vy_dat-vy_dat1) > 64) continue;    
///4、64呢?
        }
        else
        {   
            if((vy_dat1-vy_dat) > 64) continue; 
        } 
        
        *vx = (vx_dat+vx_dat1) >> 1
 ///此处是不是指右移一位相当于除以10(即十进制的2)???
 ///即得到用户点的坐标的平均值
        *vy = (vy_dat+vy_dat1) >> 1; 
        
        return;                        
    }
    
}

各位看官要是知道的话也请回答一下菜鸟的问题,浪费你们宝贵时间了,麻烦了~~!

使用特权

评论回复
6
rpqhy|  楼主 | 2007-1-18 12:17 | 只看该作者

我猜周老师不会再来看这个帖子了!

周老师可能太忙,一个帖子不会回来看第二遍。。。。。。
所以希望懂的大虾,小虾~~~能回答我上面那几个问题~~~~~~~~

使用特权

评论回复
7
rpqhy|  楼主 | 2007-1-19 16:42 | 只看该作者

我等阿等。。。。。

使用特权

评论回复
8
rpqhy|  楼主 | 2007-1-20 16:26 | 只看该作者

要是明天还没人回的话,我只好。。。。

只好发新帖了~~~~~~~~~嘿嘿嘿~~~!

使用特权

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

本版积分规则

2

主题

12

帖子

0

粉丝