基于PXA255的觸摸屏控制器ADS7843驅(qū)動(dòng)程序設(shè)計(jì)
5) ADS7843 具體操作函數(shù)
①ADS7843 串行輸出控制字函數(shù)
void ADS7843_din (char command)
udelay(DELA Y) ; / / 延時(shí)
for (int i = 0 ; i 8 ; i + + ) / / 從串行輸入端輸入8 位控制字
{ ADS7843_ClearBit (0 , ADS7843_CL K) ; / / 時(shí)鐘變低,下降沿輸出
if ( (command > > i) 0x1)
ADS7843_SetBit (0 , ADS7843_DIN) ; / / 數(shù)據(jù)位為1
el se
ADS7843_ClearBit (0 , ADS7843_DIN) ; / / 數(shù)據(jù)位為0
udelay (DELA Y) ;
ADS7843_SetBit (0 , ADS7843_CL K) ;}} / / 時(shí)鐘變高
②微處理器讀取X 坐標(biāo)值函數(shù)(讀取Y坐標(biāo)值函數(shù)相類似,控制字為0x90)
int ADS7843_t s_measure_x (void)
{ char i , int touch_data = 0 ;
ADS7843_ClearBit (0 , ADS7843_CS) ; / / 片選端置低電平
udelay(DELA Y) ;
ADS7843_din (0xD0) ; / / 向ADS7843 發(fā)送讀X 坐標(biāo)控制字0xD0
ADS7843_ClearBit (0 , ADS7843_CL K) ;
udelay(DELA Y) ;
while ( ! ( GPLR0 GPIO_ bit (ADS7843 _BUSY) ) ) print k ( “BUSY1 n” ) ;
ADS7843_ClearBit (0 , ADS7843_CL K) ;
for (i = 0 ; i 15 ; i + + ) / / 讀取坐標(biāo)值
{ touch_data = 1 ;
if ( GPLR0 GPIO_bit (ADS7843_DOU T) )
touch_data | = 0x01 ;
else
touch_data = 0xffffe ;
ADS7843_SetBit (0 , ADS7843_CL K) ;
udelay(DELA Y) ;
ADS7843_ClearBit (0 , ADS7843_CL K) ;}
touch_data > > = 3 ;/ / 對(duì)最后4 位自動(dòng)置0 處理
return (touch_data 0xfff) ;}
評(píng)論