linux i2c 使用问题
经过测试,多个线程同时使用i2c进行读写,会导致i2c崩溃打印如下:
i2c_designware i2c_designware.2: timeout waiting for bus ready
使用互斥锁,或其他同步方式可以解决改问题。使用互斥锁方式举例如下:
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&lock);
/* i2c 读写操作 */
i2c_read_block_data(file, SLAVE_ADDR, 0, 5, &read_buf);
i2c_write_block_data(file, SLAVE_ADDR, 0, 5, (unsigned char *)&read_buf);
...
pthread_mutex_unlock(&lock);