3127|2

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

hf44b0板子的ADC测试代码部分以及LCD的理解,望高手指点迷津,小生不胜感激! [复制链接]

一、硬件简介
板子:恒丰s3c44b0x;lcd:HF160160-34D57(非触摸屏);ADC:8通道10位,芯片s3c44b0x内置
二、问题1
LCD手册中出现了4个我认为很奇怪的引脚,如下:
引脚13 :TP-L 触摸屏左端子 ;引脚14: TP-U 触摸屏上端子 ;引脚15: TP-R 触摸屏右端子;引脚16: TP-D 触摸屏下端子
这里LCD并不具有触摸屏的功能,怎么还带有与触摸屏相关的引脚呢?它们的作用到底是什么呢?而且这几个引脚与芯片s3c44b0x的GPE3,GPE4,GPE6,GPE7相连。
三、问题2
在测试板子ADC功能的代码中,有与之相关的代码,我也不能理解。代码如下:

    //TSPX(GPE3) TSMX(GPE4)  TSPY(GPE6) TSMY(GPE7)
        //  0                1               1          0
        rPDATE=rPDATE|(0x03<<6);
    rPDATE=rPDATE&(~(0x01<<4))|(0x01<<3);
    for(i=0;i
不是触摸屏,为什么还要对//TSPX(GPE3) TSMX(GPE4)  TSPY(GPE6) TSMY(GPE7) 进行设置呢?作用是什么呢?
for(i=0;i 这一句也不理解。设置下一通道的延时的代码怎么放在这个位置呢?难道不是当下一通道设置好了,然后再用这条代码进行延时,以求通道设置稳定吗?
四、问题3
代码附录里还有一个AD转换结束标志adcend,在后面的代码中只出现了两次,也没有对它进行任何的条件判断,它是如何起到到应有的作用呢?我怀疑它存在的必要性。
volatile unsigned char  adcend=0;
adcend=1;

因为前面的3个问题是相关联的,所以在此一并提出,望高手指点迷津,小生不胜感激!

三、附ADC测试代码
#include
#include "..\inc\def.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\tp.h"

#define LOOP 1000
volatile unsigned char  adcend=0;

void __irq Adc_or_TsSep(void);

void __irq Adc_or_TsSep(void)
{
    int i;
     U32 Pt[6];
     rI_ISPC=BIT_EINT4567;        //clear pending_bit
         rEXTINPND=0xf;
       
        rADCCON=0x0<<2;                        // AIN0
        for(i=0;i<5;i++)
        {
                rADCCON|=0x1;                // Start X-position conversion
            while(rADCCON & 0x1);        // Check if Enable_start is low
                while(!(rADCCON & 0x40));        // Check ECFLG
            Pt=(0x3ff&rADCDAT);
        }
        Pt[5]=(Pt[0]+Pt[1]+Pt[2]+Pt[3]+Pt[4])/5;
        Uart_Printf("[AIN0] is %04d\n", Pt[5]);
            
            adcend=1;
            for(i=0;i             rPDATE=rPDATE|(0x03<<6);
        rPDATE=rPDATE&(~(0x01<<4))|(0x01<<3);
            for(i=0;i            
           
           
}

void Ts_Sep(void)
{
     int i;
   
    //TSPX(GPE3) TSMX(GPE4)  TSPY(GPE6) TSMY(GPE7)
        //  0                1               1          0
        rPDATE=rPDATE|(0x03<<6);
    rPDATE=rPDATE&(~(0x01<<4))|(0x01<<3);
    for(i=0;i     Uart_Printf("[ADC in Test.]Press KEY0-KEY3 in HF44b0x \n");
     Uart_Printf("\nType any key to exit!!!\n");
      
    rEXTINT=0x0;//0x22222222;
    rINTCON=0x5;
    pISR_EINT4567=(int)Adc_or_TsSep;
   
    rCLKCON=0x7ff8;
    rADCPSR=0x4;
    rINTMSK=~(BIT_GLOBAL|BIT_EINT4567);
    Uart_Getch();
    rINTMSK |=BIT_GLOBAL|BIT_EINT4567;
  
   
}

最新回复

应该是此款LCD有待触摸屏和不带触摸屏两款。只是引脚兼容而已。 同样driver 程序也一样啊。 如果楼主没有触摸屏,也觉得这些代码没用,完全可以去掉。  详情 回复 发表于 2009-10-22 17:47
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
问题1、没有具体看过数据手册,如果有设置的话,猜测可能为了软件兼容带触摸的
问题2、我觉得LZ可能没有理解这句delay to set up the next channel 中国式英语
       我的理解是这句话可能要翻译成 : 延时一下,然后设置下个通道
       不过,看上去其实更像程序偷懒,拷贝这段延时代码,连注释都没去掉,因为看到
       了好几处,都看不出和通道有什么关系,:)
问题3、看变量字面意思,应该是给上层函数用的,判断到adcend等于1了,就读取相应的
        ADC数据,然后由上层重新置0
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
应该是此款LCD有待触摸屏和不带触摸屏两款。只是引脚兼容而已。
同样driver 程序也一样啊。
如果楼主没有触摸屏,也觉得这些代码没用,完全可以去掉。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表
  缈昏瘧锛