1.有的時候讀寫的時候,從設備的反應時間不見得那么快 ,所以經常會出現i2c讀寫概率性的超時失敗。特別是一次讀寫很多個byte的時候
所以需要將i2c中的超時等待時間調大一點。但是調太大的話會影響單次i2c的傳輸速率
2.i2c driver中有個retry操作,對於每次寫單個byte都會概率性的出現i2c失敗顯示超時,即沒有收到ack,那么不妨在設置retry次數為2.即當每次失敗的時候
在重新發送或者讀寫一次。已降低發生i2c超時的概率
case I2C_RETRIES:
client->adapter->retries = arg;
break;
case I2C_TIMEOUT:
/* For historical reasons, user-space sets the timeout
* value in units of 10 ms.
*/
client->adapter->timeout = msecs_to_jiffies(arg * 10);
break;