?? tchscr.c
字號:
#include "../inc/drivers.h"
#include "../inc/lib.h"
#include "inc/gpio.h"
#include "inc/spi.h"
#include <stdio.h>
#define DPRINTF(...) //printfNULL
#define ADS7843_PIN_PEN (GPIO_MODE_IN | GPIO_PULLUP_EN | GPIO_F5)
#define ADS7843_PIN_CS (GPIO_MODE_OUT | GPIO_PULLUP_DIS | GPIO_G12)
#define ADS7843_CTRL_START 0x80
#define ADS7843_GET_X 0x50
#define ADS7843_GET_Y 0x10
#define ADS7843_CTRL_12MODE 0x0
#define ADS7843_CTRL_8MODE 0x8
#define ADS7843_CTRL_SER 0x4
#define ADS7843_CTRL_DFR 0x0
#define ADS7843_CTRL_DISPWD 0x3 // Disable power down
#define ADS7843_CTRL_ENPWD 0x0 // enable power down
#define ADS7843_CMD_X (ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE|ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)
#define ADS7843_CMD_Y (ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE|ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)
#define enable_7843() write_gpio_bit(ADS7843_PIN_CS, 0)
#define disable_7843() write_gpio_bit(ADS7843_PIN_CS, 1)
#define ADS7843_SPI_CHANNEL 0
#define GPFCON (*(volatile unsigned *)0x56000050)
#define GPFUP (*(volatile unsigned *)0x56000058)
#define LCDWIDTH 320
#define LCDHEIGHT 240
int TchScr_Xmin=145,TchScr_Xmax=902,
TchScr_Ymin=142,TchScr_Ymax=902;
__inline static void set7843toIRQmode(void)
{
enable_7843();
SPISend(ADS7843_CMD_X, ADS7843_SPI_CHANNEL);
SPIRecv(ADS7843_SPI_CHANNEL);
SPIRecv(ADS7843_SPI_CHANNEL);
disable_7843();
}
void TchScr_init()
{
set_gpio_ctrl(ADS7843_PIN_CS);
write_gpio_bit(ADS7843_PIN_CS, 1);
SPI_initIO(ADS7843_SPI_CHANNEL);
Set_SIO_mode(ADS7843_SPI_CHANNEL, SPCON_SMOD_POLL |
SPCON_ENSCK | SPCON_MSTR |SPCON_CPOL_HIGH |
SPCON_CPHA_FMTA, 33, 2, NULL, NULL, NULL);
GPFCON=GPFCON&0xf3ff;
GPFUP=GPFUP&0xdf;
//set7843toIRQmode();
}
#define CLOCK_DELAY() do{int i; for(i=0; i<10; i++);}while(0)
void TchScr_GetScrXY(int *x, int *y)
{
unsigned int temp;
enable_7843();
SPISend (ADS7843_CMD_X, ADS7843_SPI_CHANNEL);
temp=SendReadData(0, ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(ADS7843_CMD_X, ADS7843_SPI_CHANNEL)>>3);
*x=temp;
temp=SendReadData(0, ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(ADS7843_CMD_X, ADS7843_SPI_CHANNEL) >>3);
*x+=temp;
temp=SendReadData(0, ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(ADS7843_CMD_X, ADS7843_SPI_CHANNEL)>>3);
*x+=temp;
temp=SendReadData(0,ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(ADS7843_CMD_Y, ADS7843_SPI_CHANNEL)>>3);
*x+=temp;
*x>>=4; //x=x/4/4; change to 10bit
temp=SendReadData(0, ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(ADS7843_CMD_Y, ADS7843_SPI_CHANNEL) >>3);
*y=temp;
temp=SendReadData(0, ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(ADS7843_CMD_Y, ADS7843_SPI_CHANNEL) >>3);
*y+=temp;
temp=SendReadData(0, ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(ADS7843_CMD_Y, ADS7843_SPI_CHANNEL) >>3);
*y+=temp;
temp=SendReadData(0, ADS7843_SPI_CHANNEL);
temp<<=5;
temp|= (SendReadData(0, ADS7843_SPI_CHANNEL)>>3);
*y+=temp;
*y>>=4; //y=y/4/4;
*x=(*x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax-TchScr_Xmin);
*y=(*y-TchScr_Ymin)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin);
disable_7843();
}
//#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -