AMOLED S3 Touch - I2C port interference with QWIIC port?
-
Does the touch display use the same I2C interface as is on the STEMMA / QWIIC connector?
I am getting some random I2C error reading some devices.
By the schematic, it appears that that is the case. I am using a mutex in FreeRTOS to access the I2C port between several tasks. Is there a way to make sure lvgl uses the same mutex before accessing the port?
I am trying to solve it by adding a Take and Give for my mutex around each access to lv_task_handler(), but not sure if that is the way to go
void do_lv_task_handler() { xSemaphoreTake(I2C_Mutex, portMAX_DELAY); lv_task_handler(); xSemaphoreGive(I2C_Mutex); }
-
@rs77can AMOLED S3 Touch has two qwiic ports,
GPIO 2,3 and
GPIO 43, 44.
I don't see a conflict on the schematic!
https://github.com/Xinyuan-LilyGO/LilyGo-AMOLED-Series/blob/master/schematic/T-Display-S3-AMOLED-Touch.pdf -
I was lopoking at these 2 pieces of the schematic
The top is the touch interface, and the bottom is the Qwiic port - they both seem to be using the same GPIO2/3
U0RXD U0TXD (44/43) are the RS232 Serial connections - no?
-
U0RXD U0TXD (44/43) are the RS232 Serial connections...and... are the standard I2C ports on LilyGO T-Display S3 and T-HMI and several others.
As you may know you inform the compiler withWire.begin(43, 44);
I don't have a LilyGO T-Display S3 AMOLED Touch here!
So I suppose the 6pin is the Touch and is between the Display and the board???You should check here:
https://github.com/Xinyuan-LilyGO/LilyGo-AMOLED-Series/issues/9#issuecomment-1888466187And perhaps raise your own issue?
@lewisxhe is very good but very busy
cheers, Terry -
Thanks, I realize that I can change the definitions of Wire to the other pin, but then would the Touch display not function appropriately?
I would prefer to define GPIO2 and GPIO3 as Wire1 and not Wire, and have the touch display use that interface. I would then define Wire as the new pins (as per your example above).
Is there a software option to do this? I am using some libraries that are hardcoded to Wire, and don't want to manually change them myself.
If not possible, the Mutex method around the lv_task_handler() seems to work well - the board has been running for about 2 weeks with no issues, and no bad data.