基于PXA255的触摸屏控制器ADS7843驱动程序设计
5)ADS7843具体操作函数
①ADS7843串行输出控制字函数
voidADS7843_din (char command)
udelay(DELA Y) ; / / 延时
for (int i = 0 ; i 8 ; i + + ) / / 从串行输入端输入8 位控制字
{ ADS7843_ClearBit (0 , ADS7843_CL K) ; / / 时钟变低,下降沿输出
if ( (command > > i) 0x1)
ADS7843_SetBit (0 , ADS7843_DIN) ; / / 数据位为1
el se
ADS7843_ClearBit (0 , ADS7843_DIN) ; / / 数据位为0
udelay (DELA Y) ;
ADS7843_SetBit (0 , ADS7843_CL K) ;}} / / 时钟变高
②微处理器读取X 坐标值函数(读取Y坐标值函数相类似,控制字为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 发送读X 坐标控制字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 + + ) / / 读取坐标值
{ 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 ;/ / 对最后4 位自动置0 处理
return (touch_data 0xfff) ;}
评论