1. 在标准中,i2c的scl线并不是在整个通讯过程中都由master控制的。依据标准,在slave发送完一个字节的ACK之后,slave根据自身的情况,如果认为自己没能力在短时间内继续接收后续数据,则slave有权将scl改成输出引脚并拉低,所以master方必须在收到ACK后进行scl的输入电平判断,只有等到高电平后方可继续发送后续数据。
2.关于gpio模拟i2c,linux内核已经有现成的驱动模块,并符合i2c-core的框架,与硬件相关只需做好底层适配即可。见 buss/i2c/i2c-gpio.c.
阅读(1428) | 评论(0) | 转发(0) |