I had a similar deal going on... the touch driver uses a HAL layer. If you're attempting to do another I2C instance on a different thread using the same I2C channel, you've got problems. The touch driver doesn't like to co-exist with anything else. I ended up putting all my other peripherals on the other I2C bus (channel) and leaving the touch system on it's own I2C channel (bus). The other peripherals have to run on the shared framework driver if they are running on multiple threads. alternatively, you could use the HAL layer with it's own mutex to deal with the multiple threading problem.
↧