mipi协议:Camera Control Interface(I3C-SDR)

CCI(I3C SDR) Data Transfer Protocol:

CCI(I3C)数据传输协议遵循I3C规范。启动条件(START)、重复启动条件(Repeated START)和停止条件(STOP),以及数据传输协议,都在[MIPI03]中进行了规定。如果支持CCI(I3C),那么必须支持CCI(I3C SDR),而CCI(I3C DDR)则可以选择支持。在进行CCI(I3C)数据传输之前,主设备应通过发送I3C通用命令码(CCCs)GETMRL和GETMWL来获取从设备的最大读取长度(MRL)和最大写入长度(MWL)。

CCI(I3C SDR) Message Type:

CCI(I3C SDR)主设备通常应以7'h7E开始一条消息,并且可以选择以从设备地址开始一条消息。

基本的CCI(I3C SDR)消息以7'h7E开始消息的组成部分包括:

● START条件

● 7'h7E与写位

● 从设备的确认应答

● 重复的START条件

● 从设备地址与读/写位

● 从设备的确认应答

● 从设备内部寄存器的子地址(INDEX)(在当前位置的单次读取中不使用)

● 来自主设备的过渡位(奇偶校验位)(在当前位置的单次读取中不使用)

然后根据不同操作:

● 对于写操作:

○ 来自主设备的数据字节

○ 来自主设备的过渡位(奇偶校验位)

○ STOP或重复的START条件;

● 对于读操作:

○ 重复的START条件(在当前位置的单次读取中不使用)

○ 带有读位的从设备地址(在当前位置的单次读取中不使用)

○ 来自从设备的确认应答(在当前位置的单次读取中不使用)

○ 来自从设备的数据字节

○ 来自主设备或从设备的过渡位(数据结束位)

○ STOP或重复的START条件。

其他以从设备地址开始的CCI(I3C SDR)消息包括:

● START或重复的START条件

● 带有读/写位的从设备地址

● 从设备的确认应答

● 从设备内部寄存器的子地址(INDEX)(在当前位置的单次读取中不使用)

● 来自主设备的过渡位(奇偶校验位)(在当前位置的单次读取中不使用)

然后根据不同操作:

● 对于写操作:

○ 来自主设备的数据字节

○ 来自主设备的过渡位(奇偶校验位)

○ STOP或重复的START条件;

● 对于读操作:

○ 重复的START条件(在当前位置的单次读取中不使用)

○ 带有读位的从设备地址(在当前位置的单次读取中不使用)

○ 从设备的确认应答(在当前位置的单次读取中不使用)

○ 来自从设备的数据字节

○ 来自主设备或从设备的过渡位(数据结束位)

○ STOP或重复的START条件。

在CCI(I3C SDR)中,从设备地址是7位长的。CCI(I3C SDR)支持8位的INDEX和8位的数据,或者16位的INDEX和8位的数据。使用哪种消息类型由相关的从设备定义。

CCI(I3C SDR)Read/Write Operations:

兼容CCI(I3C SDR)的设备应支持表2中所示的四种读操作和两种写操作,具体细节如下小节所述。

531d1404ed8fc323a0b2dea4b83facce.png

从设备中的INDEX在每次读/写操作后必须自动递增。这一点在以下章节中也有解释。

CCI(I3C SDR) Single Read from Random Location:

在从随机位置进行单次读取操作时(图10所示),主设备会先对目标INDEX执行一次虚拟写操作,然后发出一个重复的START条件,并随后再次使用读操作寻址从设备。在确认从设备地址后,从设备开始在SDA线上输出数据。主设备通过设置一个过渡位(Transition bit)来中止读操作,并发出STOP或重复的START条件。

ce6c06fc33716a9a5819a40796cce8eb.png

1、使用8位索引和8位数据,包含7'h7E地址:

● START条件(S):主设备发出START条件。

● 7'h7E保留字节:主设备发送7'h7E保留字节作为前缀。

● 从设备地址:主设备发送从设备地址,并附加写位。

● ACK应答:从设备返回ACK信号。

● 子地址(INDEX):主设备发送8位的子地址(即索引)。

● 重复START条件(Sr):主设备发送重复的START条件。

● 从设备地址:主设备再次发送从设备地址,并附加读位。

● ACK应答:从设备返回ACK信号。

● 数据:从设备在SDA线上发送数据字节。

● 过渡位(数据结束位):主设备发送过渡位以中止操作。

● STOP或重复START条件:主设备发出STOP或重复START条件。

2、使用8位索引和8位数据,不包含7'h7E地址:

● 此流程与第一种情况类似,只是省略了7'h7E保留字节。

3、使用16位索引和8位数据,包含7'h7E地址:

● START条件(S):主设备发出START条件。

● 7'h7E保留字节:主设备发送7'h7E保留字节作为前缀。

● 从设备地址:主设备发送从设备地址,并附加写位。

● ACK应答:从设备返回ACK信号。

● 子地址(INDEX)高8位:主设备发送子地址的高8位。

● 子地址(INDEX)低8位:主设备发送子地址的低8位。

● 重复START条件(Sr):主设备发送重复的START条件。

● 从设备地址:主设备再次发送从设备地址,并附加读位。

● ACK应答:从设备返回ACK信号。

● 数据:从设备在SDA线上发送数据字节。

● 过渡位(数据结束位):主设备发送过渡位以中止操作。

● STOP或重复START条件:主设备发出STOP或重复START条件。

4、使用16位索引和8位数据,不包含7'h7E地址:

● 此流程与第三种情况类似,只是省略了7'h7E保留字节。

CCI (I3C SDR) Single Read from Current Location:

也可以通过使用读操作对从设备寻址,从最后使用的INDEX进行读取(图11所示)。从设备通过将最后使用的INDEX的数据设置到SDA线上来进行响应。主设备通过设置一个过渡位并发出STOP或重复的START条件来中止读取操作。

36d888aec5f6b45a01bc72743628108f.png
  1. 使用7'h7E地址从当前位置进行单次读取

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个读位(标记为“1”),表示接下来将进行读取操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 数据传输: 从设备开始在SDA线上输出数据,这些数据来自于当前的INDEX位置(上次使用的INDEX位置)。

● 过渡位(T,数据结束位): 读操作结束后,主设备或从设备发送一个过渡位,标识读取操作的结束。

● STOP条件或重复START条件(P或Sr): 最后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值加1,准备好进行下一个读取操作。

  1. 不使用7'h7E地址从当前位置进行单次读取

● START条件(S): 主设备发出START条件,开始通信。● 从设备地址: 主设备发送从设备的7位地址,并附加一个读位(标记为“1”),表示接下来将进行读取操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 数据传输: 从设备开始在SDA线上输出数据,这些数据来自于当前的INDEX位置(上次使用的INDEX位置)。

● 过渡位(T,数据结束位): 读操作结束后,主设备或从设备发送一个过渡位,标识读取操作的结束。

● STOP条件或重复START条件(P或Sr): 最后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值加1,准备好进行下一个读取操作。

CCI (I3C SDR) Sequential Read from Random Location:

从随机位置开始的顺序读取操作如图12所示。主设备首先对目标INDEX执行一次虚拟写操作,然后发出一个重复的START条件,并随后再次使用读操作对从设备寻址。在确认从设备地址后,从设备开始将数据输出到SDA线上。如果主设备没有通过使用过渡位来中止读取事务,这将作为信号让从设备继续从下一个INDEX进行读取操作。当主设备读取到最后一个数据字节时,它可以通过设置过渡位来中止读取事务,并发出STOP或重复的START条件。此外,当主设备读取的数据量超过最大读取长度(MRL)限制时(参见I3C规范[MIPI03]),从设备也可以通过设置过渡位来终止读取事务。

注意:在为MRL选择合适的值时,从设备设计者和系统设计者应考虑CCI将承载的有效载荷需求。例如,在CCS数据传输接口[MIPI04]中,支持64字节或更大的MRL是有益的(即64字节用于数据有效载荷)。

c6e9bbefbfbc5e6d9b9279023b1f7b74.png
  1. 使用8位索引和8位数据,包含7'h7E地址

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个写位(标记为“0”),表示接下来将进行写入操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 子地址(INDEX): 主设备发送8位的子地址(INDEX),指定要读取的随机位置。

● 重复START条件(Sr): 主设备发出重复的START条件,以切换到读取操作。

● 从设备地址: 主设备再次发送从设备地址,并附加一个读位(标记为“1”),表示开始读取操作。

● ACK应答(A): 从设备确认地址后,返回ACK信号。

● 数据传输: 从设备开始在SDA线上输出数据。这个数据来自于当前的INDEX位置(M值)。

● 过渡位(T,数据结束位): 如果主设备不终止读取操作,过渡位的存在指示从设备继续从下一个INDEX位置(M + 1)进行读取。

● 数据传输继续: 数据读取可以连续进行,直到主设备通过设置过渡位中止操作,或者达到最大读取长度(MRL)时从设备中止读取操作。

● STOP或重复START条件(P或Sr): 最后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增。

  1. 使用8位索引和8位数据,不包含7'h7E地址

● 此流程与第一种情况类似,只是省略了7'h7E保留字节,其他步骤完全相同。

  1. 使用16位索引和8位数据,包含7'h7E地址

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个写位(标记为“0”),表示接下来将进行写入操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 子地址(INDEX)高8位: 主设备发送子地址的高8位,指定要读取的随机位置。

● 子地址(INDEX)低8位: 主设备发送子地址的低8位,进一步指定具体的位置。

● 重复START条件(Sr): 主设备发出重复的START条件,以切换到读取操作。

● 从设备地址: 主设备再次发送从设备地址,并附加一个读位(标记为“1”),表示开始读取操作。

● ACK应答(A): 从设备确认地址后,返回ACK信号。

● 数据传输: 从设备开始在SDA线上输出数据。这个数据来自于当前的INDEX位置(M值)。

● 过渡位(T,数据结束位): 如果主设备不终止读取操作,过渡位的存在指示从设备继续从下一个INDEX位置(M + 1)进行读取。

● 数据传输继续: 数据读取可以连续进行,直到主设备通过设置过渡位中止操作,或者达到最大读取长度(MRL)时从设备中止读取操作。

● STOP或重复START条件(P或Sr): 最后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增。

  1. 使用16位索引和8位数据,不包含7'h7E地址

● 此流程与第三种情况类似,只是省略了7'h7E保留字节,其他步骤完全相同。

CCI (I3C SDR) Sequential Read from Current Location:

从当前位置开始的顺序读取(图13所示)与从随机位置开始的顺序读取类似。唯一的区别是在这种情况下没有虚拟写操作。主设备或从设备通过设置过渡位来终止读取事务,然后发出STOP或重复的START条件。

898d55bd0250b8e188bddeb03f2a92ea.png
  1. 使用7'h7E地址从当前位置开始的顺序读取

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个读位(标记为“1”),表示接下来将进行读取操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 数据传输: 从设备开始在SDA线上输出数据,这个数据来自于当前的INDEX位置(上次使用的INDEX)。数据传输是连续的,从INDEX (K) 位置开始,并依次读取到INDEX (K + L - 1)。

● 过渡位(T,数据结束位): 主设备在读取完成最后一个数据字节后发送过渡位,表示读取操作结束。

● STOP或重复START条件(P或Sr): 最后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增,为下一次操作做准备。

  1. 不使用7'h7E地址从当前位置开始的顺序读取

● START条件(S): 主设备发出START条件,开始通信。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个读位(标记为“1”),表示接下来将进行读取操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 数据传输: 从设备开始在SDA线上输出数据,这个数据来自于当前的INDEX位置。数据传输是连续的,从INDEX (K) 位置开始,并依次读取到INDEX (K + L - 1)。

● 过渡位(T,数据结束位): 主设备在读取完成最后一个数据字节后发送过渡位,表示读取操作结束。

● STOP或重复START条件(P或Sr): 最后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增,为下一次操作做准备。

CCI (I3C SDR) Single Write to Random Location:

图14展示了对随机位置进行写操作的过程。主设备向从设备发起写操作,在从设备确认写操作后,主设备发送INDEX和数据。写操作通过主设备发出的STOP或重复的START条件终止。

a649d90949bd79e66558f49cdb41ab16.png
  1. 使用8位索引和8位数据,包含7'h7E地址

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个写位(标记为“0”),表示接下来将进行写入操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 子地址(INDEX): 主设备发送8位的子地址(INDEX),指定要写入的随机位置。

● 数据传输: 主设备发送要写入的数据字节。

● 过渡位(T,奇偶校验位): 主设备发送过渡位以完成写操作。

● STOP或重复START条件(P或Sr): 主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增,为下一次操作做准备。

  1. 使用8位索引和8位数据,不包含7'h7E地址

● 此流程与第一种情况类似,只是省略了7'h7E保留字节,其他步骤完全相同。

  1. 使用16位索引和8位数据,包含7'h7E地址

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个写位(标记为“0”),表示接下来将进行写入操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 子地址(INDEX)高8位: 主设备发送子地址的高8位,指定要写入的随机位置。

● 子地址(INDEX)低8位: 主设备发送子地址的低8位,进一步指定具体的位置。

● 数据传输: 主设备发送要写入的数据字节。

● 过渡位(T,奇偶校验位): 主设备发送过渡位以完成写操作。

● STOP或重复START条件(P或Sr): 主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增,为下一次操作做准备。

  1. 使用16位索引和8位数据,不包含7'h7E地址

● 此流程与第三种情况类似,只是省略了7'h7E保留字节,其他步骤完全相同。

CCI (I3C SDR) Sequential Write Starting from Random Location:

图15展示了从随机位置开始的顺序写操作过程。在接收到每个数据字节后,从设备会自动递增INDEX。该顺序写操作通过主设备发出的STOP或重复的START条件终止。

b581e96e4440bece1cdefb0d4c4083e8.png
  1. 使用8位索引和8位数据,包含7'h7E地址

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个写位(标记为“0”),表示接下来将进行写入操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 子地址(INDEX): 主设备发送8位的子地址(INDEX),指定要写入的随机位置。

● 数据传输: 主设备发送要写入的数据字节。数据是连续传输的,从索引M开始,直到索引M + L - 1。

● 过渡位(T,奇偶校验位): 主设备在每个数据字节之后发送过渡位,以确保数据的完整性。

● STOP或重复START条件(P或Sr): 当所有数据字节都被写入后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增,为下一次操作做准备。

  1. 使用8位索引和8位数据,不包含7'h7E地址

● 此流程与第一种情况类似,只是省略了7'h7E保留字节,其他步骤完全相同。

  1. 使用16位索引和8位数据,包含7'h7E地址

● START条件(S): 主设备发出START条件,开始通信。

● 7'h7E保留字节: 主设备发送7'h7E保留字节,这个字节作为协议的特殊标记。

● 从设备地址: 主设备发送从设备的7位地址,并附加一个写位(标记为“0”),表示接下来将进行写入操作。

● ACK应答(A): 从设备收到地址后,返回ACK信号确认通信。

● 子地址(INDEX)高8位: 主设备发送子地址的高8位,指定要写入的随机位置。

● 子地址(INDEX)低8位: 主设备发送子地址的低8位,进一步指定具体的位置。

● 数据传输: 主设备发送要写入的数据字节。数据是连续传输的,从索引M开始,直到索引M + L - 1。

● 过渡位(T,奇偶校验位): 主设备在每个数据字节之后发送过渡位,以确保数据的完整性。

● STOP或重复START条件(P或Sr): 当所有数据字节都被写入后,主设备发出STOP条件或重复的START条件,结束此次通信。此时,INDEX值会自动递增,为下一次操作做准备。

  1. 使用16位索引和8位数据,不包含7'h7E地址

● 此流程与第三种情况类似,只是省略了7'h7E保留字节,其他步骤完全相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值