新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 四 ARM9(S3C2440)的ADC和觸摸屏控制——理論知識(shí)

四 ARM9(S3C2440)的ADC和觸摸屏控制——理論知識(shí)

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
概述

10 位CMOS ADC(模/數(shù)轉(zhuǎn)換器)是一個(gè)8 通道模擬輸入的再循環(huán)類型設(shè)備。其轉(zhuǎn)換模擬輸入信號(hào)為10 位二
進(jìn)制數(shù)字編碼,最大轉(zhuǎn)換率為2.5MHz A/D 轉(zhuǎn)換器時(shí)鐘下的500 KSPS。A/D 轉(zhuǎn)換器支持片上采樣-保持功能和掉電
模式的操作。
觸摸屏接口可以控制/選擇觸摸屏X、Y 方向的引腳(XP,XM,YP,YM)的變換。觸摸屏接口包括觸摸屏引
腳控制邏輯和帶中斷發(fā)生邏輯的ADC 接口邏輯。

本文引用地址:http://m.butianyuan.cn/article/201611/322169.htm

觸摸屏接口模式
1. 普通轉(zhuǎn)換模式
單轉(zhuǎn)換模式是最合適的通用ADC 轉(zhuǎn)換。此模式可以通過(guò)設(shè)置ADCCON(ADC 控制寄存器)初始化并且通過(guò)讀寫
ADCDAT0(ADC 數(shù)據(jù)寄存器0)就能夠完成。
2. 分離的X/Y 方向轉(zhuǎn)換模式
觸摸屏控制器可以工作在兩個(gè)轉(zhuǎn)換模式之一。方向轉(zhuǎn)換模式如下方法操作。X 方向模式寫X 方向轉(zhuǎn)換數(shù)據(jù)到
ADCDAT0,故觸摸屏接口產(chǎn)生中斷源給中斷控制器。Y 方向模式寫Y 方向轉(zhuǎn)換數(shù)據(jù)到ADCDAT1,故觸摸屏接口產(chǎn)
生中斷源給中斷控制器。
3. 自動(dòng)(順序)X/Y 方向轉(zhuǎn)換模式
自動(dòng)(順序)X/Y 方向轉(zhuǎn)換模式操作如下。觸摸屏控制器順序變換觸摸X 方向和Y 方向。在自動(dòng)方向轉(zhuǎn)變模式中觸摸
控制器在寫入X 測(cè)量數(shù)值到ADCDAT0 和寫入Y 測(cè)量數(shù)值到ADCDAT1 后,觸摸屏接口產(chǎn)生中斷源給中斷控制器。
4. 等待中斷模式
當(dāng)筆尖落下時(shí)觸摸屏控制器產(chǎn)生中斷(INT_TC)信號(hào)。等待中斷模式設(shè)置值為rADCTSC=0xd3; // XP_PU,XP_Dis,
XM_Dis,YP_Dis,YM_En
觸摸屏控制器產(chǎn)生中斷信號(hào)(INT_TC)后,必須清除等待中斷模式。(XY_PST 設(shè)置到無(wú)操作模式)
待機(jī)模式
當(dāng)ADCCON [2]被設(shè)置為1時(shí)激活待機(jī)模式。此模式中,停止A/D 轉(zhuǎn)換操作并且ADCDAT0、ADCDAT1 寄存
器包含的是先前轉(zhuǎn)換的數(shù)據(jù)。

寄存器的功能可以看一下數(shù)據(jù)手冊(cè)

下面是結(jié)合FL2440開(kāi)發(fā)板的觸摸屏操作實(shí)例:

觸摸屏工作流程以及程序設(shè)計(jì)流程:
一、觸摸屏初始化:
1、設(shè)置觸摸屏接口為中斷等待模式(ADCTSC寄存器),等待觸摸筆按下
2、清除源掛起寄存器(SRCPND)、中斷掛起寄存器(INTPND)、子源掛起寄存器

(SUBSRCPND)
3、程序入口函數(shù),關(guān)中斷屏蔽寄存器和子中斷屏蔽寄存器(INTMSK,INTSUBMSK),中斷

模式和中斷優(yōu)先級(jí)默認(rèn)即可
二、觸摸屏中斷服務(wù)子程序:
一)觸摸筆按下中斷
4、如果中斷發(fā)生,設(shè)置x,y坐標(biāo)為自動(dòng)轉(zhuǎn)換模式
5、啟動(dòng)AD轉(zhuǎn)換,然后檢測(cè)AD轉(zhuǎn)換是否啟動(dòng)
6、檢測(cè)AD轉(zhuǎn)換是否結(jié)束,若結(jié)束,獲取x,y坐標(biāo)的值
7、對(duì)幾個(gè)寄存器寫1清零,防止反復(fù)發(fā)生中斷(這里的中斷是筆尖按下中斷)
二)觸摸筆抬起中斷
8、設(shè)置觸摸屏即可為等待中斷模式,等待觸摸筆抬起(ADCTSC,關(guān)鍵是要設(shè)置觸摸

筆抬起中斷信號(hào))
9、如果發(fā)生中斷,不做任何操作,只打印出一句觸摸筆抬起中斷信息
10、觸摸筆抬起之后,把得到的x,y坐標(biāo)值發(fā)送給PC機(jī),顯示出具體數(shù)值
三)再次設(shè)置觸摸屏為等待中斷模式,等待下次觸摸屏被按下


#include"2440addr.h"
#include"def.h"
//void Touch_Screen_Off(void);
int key=0,xdata,ydata;
void __irq ADC_ISR(void) ;
void ledcontrol();
void Touch_Screen_Init(void)
{
rADCDLY=50000;//Normal conversion mode delay about (1/3.6864M)*50000=13.56ms
// Enable Prescaler=39,Prescaler A/D converter freq. = 50 MHz/(39+1) = 1.25MHz
//Conversion time = 1/(1.25MHz / 5cycles) = 1/250 kHz = 4 us
//AIN0,Normal,Disable read start,No operation

rADCCON = (1<<14)|(39<<6)|(0<<3)|(0<<2)|(0<<1)|(0);
//YM=GND,YP=AIN5,XM=Hi-z,XP=AIN7,XP pullup En,Normal ADC,Waiting for interrupt mode

rADCTSC = (0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);

pISR_ADC= (unsigned)ADC_ISR; //中斷服務(wù)函數(shù)地址賦給中斷指針


ClearSubPending(BIT_SUB_TC);//清子掛起寄存器
ClearSubPending(BIT_SUB_ADC);
ClearPending(BIT_ADC);//清掛起寄存器
EnableSubIrq(BIT_SUB_TC); //使能子中斷
EnableIrq(BIT_ADC);//使能中斷
}


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: ARM9S3C2440ADC觸摸屏控

評(píng)論


技術(shù)專區(qū)

關(guān)閉