新聞中心

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

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

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

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

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

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

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

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

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

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

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

筆抬起中斷信號)
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);//使能中斷
}


上一頁 1 2 下一頁

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

評論


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

關(guān)閉