Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf2740c1

Browse files
committed
Finally got the GT911 to work properly!!!!
1 parentc7559e6 commitf2740c1

File tree

2 files changed

+69
-50
lines changed

2 files changed

+69
-50
lines changed

‎driver/frozen/other/i2c.py‎

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33

44
classI2CBus(object):
55

6-
_busses= {}
7-
8-
def__init__(self,scl,sda,freq=400000,host=None,timeout=50000,use_locks=False):
6+
def__init__(self,scl,sda,freq=400000,host=None,use_locks=False):
97
ifhostisNone:
108
if (scl,sda)== (19,18):
119
host=0
@@ -16,14 +14,12 @@ def __init__(self, scl, sda, freq=400000, host=None, timeout=50000, use_locks=Fa
1614
host,
1715
scl=machine.Pin(scl),
1816
sda=machine.Pin(sda),
19-
freq=freq,
20-
timeout=timeout
17+
freq=freq
2118
)
2219

2320
ifuse_locks:
2421
import_thread
2522
self._lock=_thread.allocate_lock()
26-
2723
else:
2824
classLock(object):
2925

@@ -51,6 +47,18 @@ def scan(self):
5147
self._lock.release()
5248
returndata
5349

50+
defstart(self):
51+
self._bus.start()
52+
53+
defstop(self):
54+
self._bus.stop()
55+
56+
defreadinto(self,buf,nack=True):
57+
self._bus.readinto(buf,nack)
58+
59+
defwrite(self,buf):
60+
self._bus.write(buf)
61+
5462
defreadfrom(self,addr,nbytes,stop=True):
5563
returnself._bus.readfrom(addr,nbytes,stop)
5664

@@ -72,6 +80,9 @@ def readfrom_mem_into(self, addr, memaddr, buf, addrsize=8):
7280
defwriteto_mem(self,addr,memaddr,buf,addrsize=8):
7381
self._bus.writeto_mem(addr,memaddr,buf,addrsize=addrsize)
7482

83+
defadd_device(self,dev_id,reg_bits=8):
84+
returnI2CDevice(self,dev_id,reg_bits)
85+
7586

7687
classI2CDevice(object):
7788

@@ -107,13 +118,13 @@ def write_mem(self, memaddr, buf):
107118
addrsize=self._reg_bits
108119
)
109120

110-
defread(self,num_bytes=None,buf=None,stop=True):
121+
defread(self,num_bytes=None,buf=None):
111122
withself._bus:
112123
ifnum_bytesisnotNone:
113-
returnself._bus.readfrom(self.dev_id,num_bytes,stop)
124+
returnself._bus.readfrom(self.dev_id,num_bytes)
114125
else:
115-
self._bus.readfrom_into(self.dev_id,buf,stop)
126+
self._bus.readfrom_into(self.dev_id,buf)
116127

117-
defwrite(self,buf,stop=True):
128+
defwrite(self,buf):
118129
withself._bus:
119-
self._bus.writeto(self.dev_id,buf,stop)
130+
self._bus.writeto(self.dev_id,buf)

‎driver/indev/gt911.py‎

Lines changed: 47 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@
66

77
frommicropythonimportconst
88
importpointer_framework
9-
importi2c
109
importmachine
1110
importtime
1211

1312

13+
_CMD_REG=const(0x8040)
14+
_CMD_CHECK_REG=const(0x8046)
15+
_CMD_RECEIVE=const(0x22)
16+
17+
_ESD_CHECK_REG=const(0x8041)
18+
1419
_CONFIG_START_REG=const(0x8047)
1520

1621
_X_OUTPUT_MAX_LOW_POS=const(0x01)
@@ -30,13 +35,9 @@
3035

3136
_CONFIG_FRESH_REG=const(0x8100)
3237

33-
_READ_XY_REG=const(0x814E)
38+
_STATUS_REG=const(0x814E)
3439

35-
_POINT_1_REG=const(0x814F)
36-
_POINT_2_REG=const(0x8157)
37-
_POINT_3_REG=const(0x815F)
38-
_POINT_4_REG=const(0x8167)
39-
_POINT_5_REG=const(0x816F)
40+
_POINT_1_REG=const(0x8150)
4041

4142
_PRODUCT_ID_REG=const(0x8140)
4243
_FIRMWARE_VERSION_REG=const(0x8144)
@@ -45,17 +46,23 @@
4546
_X_CORD_RES_REG=const(0x8146)
4647
_Y_CORD_RES_REG=const(0x8148)
4748

49+
4850
_ADDR1=const(0x5D)
4951
_ADDR2=const(0x14)
5052

5153

54+
# 0-15 * 32
55+
_VER_SPACE_REG=const(0x805B)# low 4 bits are bottom and hight is top
56+
_HOR_SPACE_REG=const(0x805C)# low 4 biits is right and high is left
57+
58+
5259
classGT911(pointer_framework.PointerDriver):
5360

5461
def__init__(self,i2c_bus,reset_pin=None,interrupt_pin=None,touch_cal=None):
55-
buf=self._buf=bytearray(7)
56-
mv=self._mv=memoryview(self._buf)
57-
58-
self._i2c=i2c.I2CDevice(i2c_bus,_ADDR1)
62+
self._buf=bytearray(6)
63+
self._mv=memoryview(self._buf)
64+
self._i2c_bus=i2c_bus
65+
self._i2c=i2c_bus.add_device(_ADDR1,16)
5966

6067
ifisinstance(reset_pin,int):
6168
reset_pin=machine.Pin(reset_pin,machine.Pin.OUT)
@@ -68,20 +75,27 @@ def __init__(self, i2c_bus, reset_pin=None, interrupt_pin=None, touch_cal=None):
6875

6976
# self.touch_reset()
7077

71-
self._i2c.read_mem(_PRODUCT_ID_REG,buf=mv[:4])
72-
print('Product id:',buf[:4])
78+
self._i2c.read_mem(_PRODUCT_ID_REG,buf=self._mv[:4])
79+
print('Product id:',self._buf[:4])
80+
81+
self._i2c.read_mem(_FIRMWARE_VERSION_REG,buf=self._mv[:2])
82+
print('Firmware version:',hex(self._buf[0]+ (self._buf[1]<<8)))
83+
84+
self._i2c.read_mem(_VENDOR_ID_REG,buf=self._mv[:1])
85+
print('Vendor id:',hex(self._buf[0]))
7386

74-
self._i2c.read_mem(_FIRMWARE_VERSION_REG,buf=mv[:2])
75-
print('Firmware version:',hex(buf[0]+ (buf[1]<<8)))
87+
self._i2c.read_mem(_X_CORD_RES_REG,buf=self._mv[:2])
88+
print('Configured width:',self._buf[0]+ (self._buf[1]<<8))
7689

77-
self._i2c.read_mem(_VENDOR_ID_REG,buf=mv[:1])
78-
print('Vendor id:',hex(buf[0]))
90+
self._i2c.read_mem(_Y_CORD_RES_REG,buf=self._mv[:2])
91+
print('Configured height:',self._buf[0]+ (self._buf[1]<<8))
7992

80-
self._i2c.read_mem(_X_CORD_RES_REG,buf=mv[:2])
81-
print('Configured width:',buf[0]+ (buf[1]<<8))
93+
self._buf[0]=0x00
94+
self._i2c.write_mem(_ESD_CHECK_REG,buf=self._mv[:1])
8295

83-
self._i2c.read_mem(_Y_CORD_RES_REG,buf=mv[:2])
84-
print('Configured height:',buf[0]+ (buf[1]<<8))
96+
self._buf[0]=_CMD_RECEIVE
97+
self._i2c.write_mem(_CMD_CHECK_REG,buf=self._mv[:1])
98+
self._i2c.write_mem(_CMD_REG,buf=self._mv[:1])
8599

86100
super().__init__(touch_cal=touch_cal)
87101

@@ -132,28 +146,22 @@ def _reflash_config(self, width, height):
132146
self._i2c.write_mem(_CONFIG_FRESH_REG,buf=mv[:1])
133147

134148
def_get_coords(self):
135-
buf=self._buf
136-
mv=self._mv
149+
self._i2c.read_mem(_STATUS_REG,buf=self._mv[:1])
150+
touch_cnt=self._buf[0]&0x0F
137151

138-
self._i2c.read_mem(_READ_XY_REG,buf=mv[:1])
152+
ifself._buf[0]&0x80ortouch_cnt<6:
153+
self._buf[0]=0x00
154+
self._i2c.write_mem(_STATUS_REG,buf=self._mv[:1])
139155

140-
if (buf[0]&0x80)==0x00:
141-
buf[0]=0x00
142-
self._i2c.write_mem(_READ_XY_REG,buf=mv[:1])
143-
returnNone
144-
else:
145-
touch_cnt=buf[0]&0x0F
146-
iftouch_cnt>5ortouch_cnt==0:
147-
buf[0]=0x00
148-
self._i2c.write_mem(_READ_XY_REG,buf=mv[:1])
149-
returnNone
156+
iftouch_cnt==1:
157+
self._i2c.read_mem(_POINT_1_REG,buf=self._mv)
150158

151-
self._i2c.read_mem(_READ_XY_REG,buf=mv)
159+
x=self._buf[0]+ (self._buf[1]<<8)
160+
y=self._buf[2]+ (self._buf[3]<<8)
152161

153-
x=buf[1]+ (buf[2]<<8)
154-
y=buf[3]+ (buf[4]<<8)
162+
print(x,y)
155163

156-
buf[0]=0x00
157-
self._i2c.write_mem(_READ_XY_REG,buf=mv[:1])
164+
self._buf[0]=0x00
165+
self._i2c.write_mem(_STATUS_REG,buf=self._mv[:1])
158166

159167
returnself.PRESSED,x,y

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp