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;
}