FT6336UA觸摸驅動用于FT6336觸摸芯片軟件調試參考
單片機源程序如下:
- #include "FT6336.h"
- #include "lcd.h"
- #include "delay.h"
- #include "tp_iic.h"
- //---------------------------------------------------------------------------------------------------
- //#define LED_EN PBout(12)//RST信號
- void FT6336_init(void)
- {
- CT_IIC_Init();
- }
- u8 FT6336_read_firmware_id(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_FIRMARE_ID);
- }
- u8 FT6336_read_device_mode(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_DEVICE_MODE);
- }
- u8 FT6336_read_td_status(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TD_STATUS);
- }
- //第一觸點
- u8 FT6336_read_touch1_event(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_EVENT)>>4;
- }
- u8 FT6336_read_touch1_id(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_ID)>>4;
- }
- //左下角為坐標零點,水平Y軸,垂直X軸
- //Y軸范圍0~479
- //X軸范圍0~479
- //touch1和touch2排列順序為按面積排列,而ID號為按下的時間先后標號,該標號可代表按下的手指
- //在第一點按下后ID記為0,事件為8,而抬起后ID與坐標保持最后數值,事件為4,此時第二個點數據一直為FF
- //在第一點按下前提下按第二個點,ID記為1,事件為8,抬起后全恢復FF,而當第二個點的接觸面積大于第一個點時,
- //它將保持ID與坐標前提下與第一個點更換存儲地址,第一個點抬起后,第二個點的依舊ID為1
- //按下第三個點時,將與其它兩個點進行面積對比后,直接拋棄面積最小的點
- u16 FT6336_read_touch1_x(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_X,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
- u16 FT6336_read_touch1_y(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_Y,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
- //第二觸點
- u8 FT6336_read_touch2_event(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_EVENT)>>4;
- }
- u8 FT6336_read_touch2_id(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_ID)>>4;
- }
- u16 FT6336_read_touch2_x(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_X,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
- u16 FT6336_read_touch2_y(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_Y,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
復制代碼- #ifndef __FT6336_H
- #define __FT6336_H
- #include "sys.h"
- #define LED_EN PBout(12)
- #define I2C_ADDR_FT6336 0x38
- #define FT6336_ADDR_DEVICE_MODE 0x00
- #define FT6336_ADDR_TD_STATUS 0x02
- #define FT6336_ADDR_TOUCH1_EVENT 0x03
- #define FT6336_ADDR_TOUCH1_ID 0x05
- #define FT6336_ADDR_TOUCH1_X 0x03
- #define FT6336_ADDR_TOUCH1_Y 0x05
- #define FT6336_ADDR_TOUCH2_EVENT 0x09
- #define FT6336_ADDR_TOUCH2_ID 0x0B
- #define FT6336_ADDR_TOUCH2_X 0x09
- #define FT6336_ADDR_TOUCH2_Y 0x0B
- #define FT6336_ADDR_FIRMARE_ID 0xA6
- void FT6336_init(void);
- u8 FT6336_read_firmware_id(void);
- u8 FT6336_read_device_mode(void);
- u8 FT6336_read_td_status(void);
- u16 FT6336_read_touch1_x(void);
- u16 FT6336_read_touch1_y(void);
- u8 FT6336_read_touch1_event(void);
- u8 FT6336_read_touch1_id(void);
- u8 FT6336_read_touch2_event(void);
- u8 FT6336_read_touch2_id(void);
- u16 FT6336_read_touch2_x(void);
- u16 FT6336_read_touch2_y(void);
- #endif
復制代碼
|