重复开始条件(repeated start condition)
有时master需要在一次通信中进行多次消息交换(例如与不同的slave传输消息,或切换读写操作),并且期间不希望被其他master干扰,这时可以使用“重复开始条件”-----在一次通信中,master可以产生多次start condition,来完成多次消息交换,最后再产生一个stop condition结束整个通信过程。由于期间没有stop condition,因此master 一直占用总线,其他master无法切入。
为了产生一个重复的开始条件,SDA在SCL低电平时拉高,然后SCL拉高,接着master就可以产生一个开始条件继续新的消息传输(按照正常的7-bit/10bit地址传输时序)。重复开始条件的传输时序如图所示:
P.S.:
某写ISP (GeoSemi GW5200),在一次通讯过程中,传输的payload比较长。但是SOC, 支持的payload 会 <= 某值,例如 8155
there is a limitation on the length of bytes that could be written(and may be read) in a single i2c transaction: max 11 bytes.