I3C协议Single Data Rate(SDR)模式研读(七):SDR错误检测和恢复方法

本节主要提供指定的错误检测和恢复方法,来避免发生错误时的致命状况。本节为I3C主机和从机分别指定了一组必需的方法。图53到图56显示了所有SDR错误类型的来源。

一、I3C从设备SDR错误检测和恢复方法

所有I3C从设备都应支持表52中汇总的七个错误类型。 下表下方进一步说明了每种错误类型。

Error Type S0

如果在分配动态地址后在广播地址/ W或动态地址/ RnW期间发生错误,则从机将无法区分该传输是CCC传输还是专用RnW传输。例如,在进行ENTHDR CCC传输的情况下,从机无法知道I3C总线已更改为HDR模式。如果未检测到并处理这种情况,可能会导致致命事故,因为从机可能会因为看到许多START和STOP而变得困惑,如图24所示,并且可能会试图解释HDR传输,就好像I3C总线仍处于SDR模式一样。

为了避免这种情况,主机不得使用任何可能的错误情况地址:7’h7F,7’h7C,7’h7A,7’h76、7’h6E,7’h5E和7’h3E。 除了在动态地址仲裁过程中,从设备应将接收到任何这些受限制的地址或接收到7'h7E / R视为错误,然后应忽略其余信号,直到检测到HDR EXIT模式为止。

Error Type S1

则从设备将无法知道I3C总线已更改为HDR模式。 这类似于错误类型S0中的情况。为了避免这种情况,如果从设备在CCC代码期间检测到奇偶校验错误,则从设备将忽略其余信号,直到检测到HDR EXIT模式为止。

Error Type S2

如果从机在写入数据期间检测到奇偶校验错误,则从机应等待STOP或重复START。如果从机在收到CCC后检测到此错误,则从站应:

1.保持CCC状态,直到从机检测到CCC命令结束(即,通过“重复启动”条件恢复从站),否则

2.当从机通过STOP条件恢复时,停止CCC。

Error Type S3

如果从机在动态地址仲裁过程中在分配地址的PAR位中检测到奇偶校验错误,则从机应生成NACK(在PAR之后),然后等待另一个重复的START和7E / R重新发送临时ID。

Error Type S4

在动态地址仲裁过程中,如果从机在重复启动之后检测到7′h7E / R以外的任何值,则从机应生成NACK(在7′h7E / R之后),然后等待STOP退出ENTDAA模式。

  如果从机在收到CCC后检测到此错误,则从站应:

1.保持CCC状态,直到从机检测到CCC命令结束(即,通过“重复启动”条件恢复从站),否则

2.当从机通过STOP条件恢复时,停止CCC。

Error Type S5

如果从机检测到非法格式化的CCC,则从机将生成NACK(在动态地址之后),然后等待STOP或Repeated START。如果从机在GETBCR CCC期间收到动态地址/写入,则格式非法。

    如果从机在收到CCC后检测到此错误,则从机应:

1.保持CCC状态,直到从机检测到CCC命令结束(即,通过“重复启动”条件恢复从站),否则

2.当从机通过STOP条件恢复时,停止CCC。

Error Type S6

如果在专用读取传输中的RnW位中发生错误,则来自主机的写入数据可能会与来自从设备的读取数据发生冲突。

从机应始终监视其传输的数据。如果被监视的数据与从机打算发送的数据不同(除了在动态地址仲裁过程中传输的数据),从机将认为这是一个错误。如果从机检测到此错误,它将停止发送,然后等待STOP或Repeated START。

如果从机在收到CCC后检测到此错误,则从机应:

1.保持CCC状态,直到从机检测到CCC命令结束(即,通过“重复启动”条件恢复从站),否则

2.当从机通过STOP条件恢复时,停止CCC。

Option Recovery Method for Error Types S0 and S1

I3C从机不仅可以通过检测HDR EXIT模式,还可以通过监视SCL和SDA线路来从错误类型S0或错误类型S1的情况中恢复。 如果从机检测到两条线路都保持高电平的时间超过60μs,则I3C从机可以将总线视为在非HDR模式下运行。 然后,I3C从机可以从S0或S1情况中恢复,并等待STOP或START条件以恢复正常操作。

二、I3C主机设备的SDR错误检测和恢复方法

对所有的I3C主机设备,都应支持下表中给出的两种错误类型:

Error Type M0

如果主机检测到非法格式化的CCC,则主机应停止传输,发送STOP,然后重试传输。非法格式化的CCC的一个示例是主设备仅以GETMWL CCC代码从从设备接收一个字节,因为主设备需要两个字节。

Error Type M1

当I3C主设备检测到所传输的数据与主设备要传输的数据不同时,将发生错误类型M1。当I3C规范定义的事务(包括IBI)期间I3C主设备或I3C从设备误解了RnW位或ACK / NACK时,可能会发生这种情况。本节仅描述错误类型M1的两种发生条件,以及每种错误的恢复方法。

如果在专用写入传输的RnW位中发生错误,则来自主机的写入数据可能会与来自从机的读取数据发生冲突。例如,如果RnW位中存在错误,则从机可能会将专用写入传输错误地解释为读取传输,结果是来自主机的写数据将与来自从机的读取数据发生冲突。

主机应始终监视其传输的数据。如果主机这样做,则如果被监视的数据与主机打算传输的数据不同(在动态地址仲裁过程中传输的数据除外),主机应认为这是一个错误。如果主机检测到该错误,它将停止发送,然后发送STOP并重试发送。

如果从机没有应答,则主机应发送包括HDR EXIT和STOP在内的模式。无论当时I3C总线处于SDR模式还是HDR模式,该要求均适用。

例如:

主机在尝试恢复从机时应尝试以下步骤:

1.主机多次传输专用读。

•如果从机做出响应(包括ACK),则从机暂时没有响应所需的数据。

•如果从机没有响应,则继续下一步。

2.主机发送包括HDR EXIT和STOP在内的码型。

•如果从机做出响应(包括ACK),则从机检测到非法格式或检测到错误。

•如果从机没有响应,则I3C总线上不存在具有该地址的从机。

Error Type M2

如果主机没有收到发送的广播地址(7’h7E)的ACK,则它必须发送HDR退出模式,然后再发送STOP,以便在S0,S1,S2,S5和S6错误后恢复任何从机。

Master Error Detection and Escalation Handling

如果主机未收到发送到从机的专用消息的ACK,并且满足以下所有条件:

 •活动状态为0(并且一直为)

 •从机未通过GETMXDS指示读取周转延迟,或者从机已指示GETMXDS周期,并且已超过GETMXDS的周期

 •从机尚未通过私有合同带内中断(以及GETSTATUS或私有活动状态状态)通知主机它将进入较低的活动状态,

那么主机具有以下升级选项来恢复系统:

1.  如果主机知道从机有时可能需要额外的时间,则主机可以选择在短暂的延迟后重试。

2.  如果失败,则主机应通过向从机发出GETSTATUS来检查从机是否响应。这里的想法是,由于从属服务器的内部系统尚未就绪,它可能被迫对私人消息进行NACK,而GETSTATUS是一个轻量级的请求,不一定涉及内部系统。

3.  如果失败,则主机应使用M2错误处理来发出序列:

4.  如果失败,并且从站仍然没有响应,则下一步取决于BCR“具有离线功能”位(位[3])的值:

如果从机不具有离线功能,则:

主机可以尝试通过降低占空比来降低SCL时钟速率,或者尝试降低其有效速率。如果失败,则任何进一步的升级都将超出I3C规范的范围。

如果从机具有离线功能,则:

如果已知从机(即通过私有联系)具有较长的唤醒周期,并且在该唤醒周期内也已知要监视I3C总线,然后主机会根据已知或预期的唤醒时间进行延迟,然后简单地延迟并稍后再尝试。升级和GETSTATUS可确保发布了从机的动态地址; 应该用作唤醒触发器。从机可能会在稍后发出带内中断的通知主机,表明主机已准备好,否则主机可能会发起重试。

如果不知道从机具有较长的唤醒时间,并且始终监视I3C总线,则主机会将从机标记为离线。然后,主机可以保留从机的动态地址以供重用,也可以将其丢弃。

下一个动作是使从机发出热加入请求,以便重新加入I3C总线。 在热加入操作中,主机将为从机分配一个动态地址。 新地址可以是从机在被标记为脱机之前使用的相同地址,也可以是其他地址。

猜你喜欢

转载自blog.csdn.net/yinuoheqian123/article/details/108335032
今日推荐