Would greatly appreciate any expertise/suggestions on this little conundrum!
- Raspberry Pi Zero W
- SSD1306 screen running over I2C using luma.oled package in Python3, has worked well for a few months when used in conjunction with touch control using an AT42QT1070 in standalone mode with three keys tied to GPIO pins
- However I’m now putting the setup in a plastic enclosure and the sensitivity in standalone mode isn’t sufficient to detect the touch, therefore I need to run the QT1070 in comms mode (I2C), as that lets you adjust the sensitivity.
i2cdetect shows both devices fine (3c is the screen, 1b is the touch controller). I have a Python script to control the screen and another for touch control. If I just load the screen script it will start the screen and update fine but then after a few seconds it will then crash.
It seems that if I just run with the screen connected or just with the touch controls it works OK but when both are connected they’re somehow interacting with each other, despite both showing up correctly and both working to some extent before they abort.
On my breadboard layout (I created one for the VQFN package - unfortunately the larger 14-pin SOIC seems to be out of stock thanks to the worldwide chip shortages) they seem to work OK so I’m worried I’ve done something stupid with my PCB! As I say I can interrogate the registers on the AT42QT1070 OK, it’s more like something destabilises the I2C bus when I’ve got the screen running too?
My KiCAD PCB layout as follows (the weird outline is due to other components/fixings in the case I have to work around), please just say if any more info would be useful…
My question is whether there are any obvious flaws people can see from the point of view of designing a PCB layout when dealing with I2C.