Other Protocols

Common Command Codes (CCC)

PCIeMaster 2024. 11. 26. 18:25

5.1.9 Common Command Codes (CCC)

Common Command Codes(CCC)는 I3C의 표준화된 명령 집합입니다. SDR 모드에서, 몇몇 CCC는 필수로 요구되며, 일부는 조건부 필수이고, 나머지는 선택적으로 지원 가능합니다(표 16 참조). 이 섹션은 SDR 모드에서 CCC가 어떻게 구성되고 I3C 버스에서 전송되는지, 각 CCC의 동작 방식, 그리고 SDR 모드에서 타겟이 지원해야 하는 필수, 조건부, 선택적 CCC를 명시합니다.

  • 참고:
    • HDR 모드에서는, 타겟이 표 14에 나열된 CCC 명령을 지원할 필요가 없습니다. 각 제조사는 HDR 모드에서 모든 명령을 지원하거나 일부 또는 전혀 지원하지 않는 것을 자유롭게 선택할 수 있습니다.
    • 아래에 설명된 바와 같이, CCC에는 두 가지 주요 유형이 있습니다:
  • 브로드캐스트 CCC:
    • I3C 버스의 모든 타겟 디바이스에 전송됩니다.
    • 모든 브로드캐스트 CCC는 쓰기(Write) 명령입니다.
  • 직접 CCC:
    • 일반적으로 I3C 버스에서 동적 주소를 통해 특정 타겟에 지정됩니다. 일부 Direct Write CCC의 경우 그룹 주소도 사용할 수 있습니다(섹션 5.1.9.4 참조).
    • Direct CCC 정의에 따라 타겟의 응답이 필요한 경우, 오직 단일, 특정 주소로 지정된 타겟만 응답합니다.
    • 직접 CCC는 읽기(Read), 쓰기(Write), 읽기/쓰기(Read/Write)의 세 가지 유형이 있습니다.

5.1.9.1 CCC Command Formats

 

SDR 모드에서, CCC 명령은 항상 I3C 브로드캐스트 주소(7’h7E)로 시작합니다. (참조 7'h7E는 7비트 길이의 16진수 값 7E를 의미합니다.)즉, START 또는 Repeated START 이후, CCC 명령의 주소 필드는 항상 7’h7E 값을 포함해야 하며, RnW 비트 필드에는 항상 값 1’b0(쓰기)가 포함되어야 합니다.

 

모든 I3C 타겟은 다음을 인식해야 합니다:

  • 7’h7E 브로드캐스트 주소
  • 할당된 자신의 동적 주소 (동적 주소가 할당된 경우)
  • 선택적으로 할당된 그룹 주소 (할당된 경우)

 

  • 참고:
    • 7’h7E 값은 I3C 브로드캐스트 주소로, I3C 버스에 잠재적으로 존재할 수 있는 레거시 I2C 디바이스와의 충돌을 방지하기 위해 선택되었습니다. I2C 사양에 따라 (NXP01의 섹션 3.1.2 참조), 어떤 I2C 디바이스도 주소 7’h7E에 응답하지 않습니다.
  • 참고:
    • HDR 명령 프레임의 형식은 SDR 모드의 CCC 명령 형식과 다르며, 이 섹션에서 설명되지 않습니다. HDR 모드의 명령 형식은 별도로 섹션 5.2.1.2에 지정되어 있습니다.

CCC 명령은 항상 SDR 모드에서 사용 가능하며, 일부 CCC 명령은 HDR 모드에서도 사용 가능합니다 (표 16 참조).
일반적으로, 동적 주소를 할당하거나 I3C 버스 모드를 변경하거나 I3C 버스 컨트롤러 역할을 전환하는 CCC 명령은 HDR 모드에서 허용되지 않습니다.

I3C 컨트롤러는 동적 주소(Dynamic Address)가 할당되기 전과 후에 모두 CCC 명령을 발행할 수 있습니다. 

 

CCC 명령의 4가지 범주

 

브로드캐스트 쓰기 (Broadcast Write):  브로드캐스트 쓰기 CCC는 모든 I3C 타겟에 의해 감지됩니다. 모든 타겟은 수신한 브로드캐스트 명령을 검사해야 하며, 타겟이 브로드캐스트 명령을 무시하더라도 이를 확인해야 합니다.모든 브로드캐스트 쓰기 CCC 명령은 Repeated START 또는 STOP으로 종료됩니다.

  • 참고:
    • CCC 명령이 새로운 모드로 전환되면, 해당 모드는 자체 규칙에 따라 종료됩니다.

 

직접 읽기/쓰기 (Direct Read/Write): 직접 읽기/쓰기 CCC는 특정 I3C 타겟으로부터 데이터를 읽거나, 특정 I3C 타겟에 데이터를 쓰는 작업을 수행합니다. 대상 타겟은 **동적 주소(Dynamic Address)**를 통해 하나씩 선택됩니다.

  • 예를 들어, 데이터를 쓰고 다시 읽어서 변경 사항이 성공적으로 적용되었는지 확인할 수 있습니다.
  • 모든 직접 읽기/쓰기 CCC 명령은 STOP 또는 Repeated START로 종료되며, 이후 **I3C 브로드캐스트 주소(7’h7E)**가 뒤따릅니다.

참고:
이 유형은 CCC(명령 코드)와 각 쓰기 작업에서 제공되는 데이터를 동시에 포함할 수도 있습니다.


  1. 직접 쓰기 (Direct Write):
    • 직접 쓰기 CCC는 특정 I3C 타겟(하나 이상)을 대상으로 데이터를 씁니다. 대상 타겟은 **동적 주소(Dynamic Address)**를 통해 선택됩니다.
    • 이 CCC 유형은 오직 쓰기 작업에만 허용됩니다. 일반적으로 I3C v1.0의 레거시 CCC만 이 유형에 해당합니다.
    • 모든 직접 쓰기 CCC 명령은 STOP 또는 Repeated START로 종료되며, 이후 **I3C 브로드캐스트 주소(7’h7E)**가 뒤따릅니다.

  1. 직접 읽기 (Direct Read):
    • 직접 읽기 CCC는 특정 I3C 타겟(하나 이상)에서 데이터를 읽어옵니다. 대상 타겟은 **동적 주소(Dynamic Address)**를 통해 선택됩니다.
    • 이 CCC 유형은 오직 읽기 작업에만 허용됩니다. 일반적으로 I3C v1.0의 레거시 CCC만 이 유형에 해당합니다.
    • 모든 직접 읽기 CCC 명령은 STOP 또는 Repeated START로 종료되며, 이후 **I3C 브로드캐스트 주소(7’h7E)**가 뒤따릅니다.

 

참조)

  • SDR Mode : Single Data Rate Mode. I3C의 기본 전송 모드로, I2C와 유사한 방식으로 동작합니다. 최대 12.5 Mbps 의 속도로 데이터를 전송할 수 있습니다.(I2C의 경우 최대 1Mbps) 모든 I3C 디바이스는 SDR 모드를 반드시 지원해야 합니다. 데어터 전달 방식은 클럭 신호에 동기화된 단일 데이터 전송 방식 입니다.  SDR Mode 일 경우,  I2C 장치도 같은 버스에서 동작합니다.  (SDR 모드 에서는 하강 에지에서 데이터 샘플링이 이루어진다., 상승 에지는 클럭 신호를 안정화하거나 버스 상태를 제어하는 데 사용된다.)
  • HDR Mode : High Data Rate Mode. SDR 모드보다 훨씬 더 높은 데이터 전송 속도를 제공합니다. 최대 33.3 Mbps 의 속도로  데이터를 전송할 수 있습니다. HDR 지원 여부와 구현 방식은 제조사별 선택 사항 입니다. HDR의 전송 유형은 다음과 같습니다. 
    • HDR-DDR(Double Data Rate) : 클럭의 상승 및 하강 에지에서 데이터를 전송. 
    • HDR-TSP(Ternary Symbol Protocol) : 3진법 기호를 사용해 데이터 전송 효율 향상
    • HDR-TSL(Ternary Symbol Legacy): 3진법 기호를 사용한 호환성 있는 데이터 전송 

모든 CCC 명령은 동일한 일반 프레임 형식을 공유하며, Broadcast CCC에 대한 그림 30과 Direct CCC에 대한 그림 31에 나타나 있습니다. 각 CCC 명령은 고유한 명령 코드를 가지고 있습니다. 이 프레임 형식 내의 필드들은 표 15에 상세히 설명되어 있습니다.

그림 30
그림 31

 

  • S or Sr  : CCC Frame는  언제나 START 또는 Repeated START 로 시작한다. 
  • I3C Address Header : 해당 필드는 3가지 파트로 구성되어 있다. 
    • 7`h7E : CCC 프레임은 글로벌 브로드캐스트 주소 7’h7E로 시작됩니다. 이로 인해 버스에 있는 모든 I3C 타겟이 뒤에 오는 CCC 코드를 확인할 수 있습니다.
    • W (Write Bit): RnW(Bit)는 1’b0으로 설정되며, 이는 컨트롤러가 타겟에게 메시지를 쓰고 있음을 나타냅니다. 이 메시지는 항상 CCC 코드와 함께 포함되며, 선택적으로 추가 데이터가 포함될 수 있습니다(CCC 코드 값에 따라 다름).
    • ACK (Acknowledge): 모든 I3C 타겟이 ACK 신호(SDA를 Low로 설정)를 통해 응답합니다.
  • Command Code / T 
    • 8비트 값으로, 어떤 명령이 전송되고 있는지를 나타냅니다. 뒤에 T-Bit이 추가됩니다.
    • 모든 명령 코드 값은 Section 5.1.9.3 을 확인하세요 정의되어 있습니다.
  • Defining Byte / T
    • 이 필드는 브로드캐스트 CCC 메시지 또는 일부 Direct Read/Write CCC 메시지에서 사용됩니다. T-Bit이 뒤따릅니다.
    • Section 5.1.9.3 에서 각 CCC 코드에 대해 정의 바이트를 선택자(Selector)나 하위 명령(Sub-Command)으로 사용하는 방법이 명시되어 있으며, 이는 CCC 기능을 확장하거나 CCC와 연관된 동작을 지정합니다.
    • Defining Byte가 Direct CCC 메시지에서 사용되는 경우, 새로운 Direct CCC 메시지가 전송될 때까지 모든 후속 Direct CCC 메시지(예: 세그먼트)에 적용됩니다.
    • 일부 Direct CCC에서는 Defining Byte 가 선택 사항이지만, 다른 경우에는 반드시 필요합니다.
  • Sub-Command Byte / T
    • 이 필드는 일부 Direct CCC에서 사용되며, T-Bit이 뒤따릅니다.
    • Direct CCC 프레이밍에서는 이 필드가 항상 특정 Direct Write/SET CCC 메시지(즉, 세그먼트)를 위한 타겟 주소(또는 그룹 주소) 뒤에 오며, 해당 메시지에만 적용됩니다.
    • 섹션 5.1.9.3에서 각 정의된 CCC 코드에 대해 Sub-Command Byte가 필수인지 선택사항인지 지정합니다.
    • 참고: Sub-Command Byte는 일반적으로 Broadcast CCC에서는 지원되지 않습니다.
  • Data / T
    • 이 필드는 Broadcast CCC 메시지에서 사용되며, 타겟별 Direct Read/Write CCC 메시지(또는 일부 Write CCC의 경우 그룹별)에서도 사용됩니다.
    • T-Bit이 뒤따릅니다.
    • 섹션 5.1.9.3에서 각 정의된 CCC 코드에 대해 데이터가 얼마나 필요한지(필요 여부 포함)가 명시되어 있습니다.
    • 참고:
      • Direct Read/GET CCC의 경우, 타겟은 섹션 5.1.2.3.4에 명시된 일반적인 SDR 읽기 전송과 동일한 방식으로 T-Bit을 사용해야 합니다.
  • Sr / Broadcast Address or P
    • 모든 CCC는 항상 STOP 또는 Repeated START와 Broadcast Address로 종료됩니다.

5.1.9.2 Broadcast CCCs vs Direct CCCs

Command Code(명령 코드) 공간은 Broadcast Commands(브로드캐스트 명령)와 Direct Commands(직접 명령)으로 나뉩니다:

  • Broadcast Commands는 Command Code 범위가 0x00에서 0x7F까지입니다.
  • Direct Commands는 Command Code 범위가 0x80에서 0xFE까지입니다.
  • Command Code 0xFF는 예약되어 있습니다.

결과적으로 7번째 비트 = 0: Broadcast 명령, 7번째 비트 = 1: Direct 명령 

 

5.1.9.2.1 End of a CCC Command

CCC(Command Code and Control) 명령은 다음 세 가지 I3C 버스 조건 중 하나에서 종료됩니다:

 

  • 명령 또는 데이터 이후에 STOP 신호.
  • Broadcast Command의 경우, (주소 값에 관계없이) Repeated START 신호.
  • Direct Command의 경우, Repeated START 뒤에 7’h7E (새로운 CCC의 시작일 수 있으며, 추가적으로 Repeated START가 따라올 수도 있음).

 

비정상적인 사용의 경우, 컨트롤러는 특정 타겟(Target)을 지정하지 않고 Direct CCC 명령을 종료할 수도 있습니다.

컨트롤러가 CCC와 관련된 데이터를 잘못 조기에 종료하면, 타겟은 종료를 처리하고 적절한 조치를 취하기 위해 최선의 노력을 다해야 합니다. 즉, 타겟은 이 이벤트를 무시(효과 없음)하거나, 불완전한 데이터를 처리하려고 시도할 수 있습니다.

 

5.1.9.2.2 Framing Model for Direct CCC Commands

Direct CCC 명령의 구성
Direct CCC 명령에서 프레임은 다음 순서로 구성됩니다:

  • Command Code(명령 코드)
  • 하나 이상의 Repeated START
  • 타겟 주소
  • 데이터
  • STOP 또는 Repeated START와 7’h7E.

하나의 Direct CCC 명령이 여러 타겟을 지정하는 경우

 

  • 단일 Direct CCC 명령은 선택적으로 여러 타겟 장치를 지정할 수 있습니다. 이를 위해, 각 추가 타겟 장치에 대해 추가 블록이 최종 7’h7E 이전에 삽입됩니다(Figure 31 참고).
  • 각 추가 블록은 다음을 포함합니다:
    • Repeated START
    • 추가 지정된 타겟 장치의 타겟 주소
    • 해당 타겟 장치로 보내거나 받을 데이터
  • 섹션 5.1.9.4에 따라, Direct Write 또는 Direct SET CCC 명령에서 그룹 주소를 사용할 수도 있으며, 이를 통해 지정된 그룹으로 메시지를 보낼 수 있습니다.

Direct Read/Write 명령의 데이터 처리

  • Direct Read/Write CCC 명령에서 명령 코드는 Defining Byte(정의 바이트)와 같은 데이터를 포함할 수 있습니다.
  • 자세한 내용은 각 CCC에 대한 설명에서 다룹니다.
  • 각 타겟 접근은 다음과 같은 방식일 수 있습니다:
    • Write: 컨트롤러로부터 0개 이상의 데이터 바이트가 이어짐.
    • Read: 타겟에서 1개 이상의 데이터 바이트가 이어짐. 이 경우, 타겟이 읽기 요청에 대해 ACK를 반환한 이후 데이터를 전송.
    • 섹션 5.1.9.3: Direct CCC 명령에서 Write와 Read가 어떻게 사용되는지 설명.

ACK/NACK 처리

  • 각 지정된 타겟 장치는 Direct CCC 명령에 대해 ACK(승인) 또는 NACK(거부)를 반환할 수 있습니다.
  • Read 요청의 경우, 타겟 장치는 SDR Read 모델에 따라 요청된 데이터를 반환하며, 데이터를 끝내기 위해 T-Bit를 사용합니다(섹션 5.1.2.3.4 참고).

참고(Note)

  • 향후 I3C CCC 정의는 현재 I3C 사양에서 정의된 바이트 외에도 추가 데이터 바이트를 포함하도록 확장될 수 있습니다.
  • 이러한 이유로, 모든 I3C 컨트롤러와 타겟 장치는 사양에서 정의되지 않은 추가 데이터 바이트(즉, 인식되지 않는 데이터)를 무시해야 합니다.

지원되지 않는 Direct CCC 처리 (Target Handling of Unsupported Direct CCCs)

  • 타겟이 지원되지 않는 Direct CCC를 감지하면, 타겟은 자신과 일치하는 주소(즉, 할당된 주소)를 가진 Direct CCC 프레임에 대해 NACK을 생성해야 하며, 이후에는 STOP 또는 Repeated START를 대기해야 합니다.

CCC가 지원되지 않는 경우로 간주되는 사례

  • 타겟이 지원하지 않는 Command Code(명령 코드)를 감지한 경우.
  • 타겟이 지원하지 않는 Defining Byte(정의 바이트)를 감지한 경우, 단 해당 명령 코드는 타겟이 지원하는 경우에 한함.
  • 타겟이 일치하는 주소(예: Dynamic 또는 Group Address)를 수신했으나, CCC 정의에 따라 Direct Read 또는 Direct GET이 예상되는데 Write를 수신한 경우.
  • 타겟이 일치하는 Dynamic Address를 수신했으나, CCC 정의에 따라 Direct Write 또는 Direct SET이 예상되는데 Read를 수신한 경우.

참고(Note)

  • 지원되지 않는 CCC를 처리하는 것은 반드시 오류 유형 TE5와 연관되지 않습니다. (섹션 5.1.10.1.6 참고). 이 섹션은 타겟이 불법적으로 형식화된 CCC를 처리하는 방법을 정의합니다.
  • 지원되지 않는 CCC에 대해 타겟이 NACK을 생성하면, 이는 I3C 컨트롤러의 관점에서 동일한 결과로 보일 수 있습니다.

선택적 Defining Bytes (Optional Defining Bytes)

I3C Basic v1.1.1 및 I3C v1.1부터, 이전 I3C 버전에서 Defining Bytes(정의 바이트)가 없는 것으로 정의되었던 일부 Direct GET CCC들이 이제 선택적으로 Defining Bytes를 사용할 수 있게 되었습니다.
이 메커니즘은 다음을 가능하게 합니다:

  • 타겟의 동작을 확장.
  • Defining Byte 값에 따라 타겟이 대체 상태 또는 기능을 나타냄.

참고(Note):

  • 이 섹션은 Table 16에 명시된 바와 같이, Defining Byte 필드가 필수로 정의된 Direct CCC 및 이 사양에 정의된 CCC에는 적용되지 않습니다.

이러한 경우, 해당 CCC에 대해 Defining Bytes를 지원하는 I3C 타겟은 일반적으로 Defining Byte 값이 0일 때, Defining Byte가 없었던 것처럼 처리해야 합니다. 즉, Defining Byte 없이 동일한 CCC가 전송되었을 때와 동일한 동작을 수행합니다.

 

Defining Byte가 없는 Direct CCC와 있는 Direct CCC의 구분

Defining Byte 없이 전송된 Direct CCC와 Defining Byte가 포함된 Direct CCC를 올바르게 구분하려면, 각 타겟(Target)은 Command Code 값과 Defining Byte 값(있는 경우)을 추적해야 합니다. 타겟은 자신과 일치하는 주소 이전에 Repeated START를 감지했을 때 적절히 응답합니다. 실제로, 타겟은 이러한 Direct CCC를 다음 두 가지 중 하나로 간주할 수 있습니다:

  • 8비트 Command Code.
  • 선택적 Defining Byte가 포함된 16비트 Command Code.

타겟이 특정 조건에서 Direct CCC를 지원하지 않을 경우

만약 타겟이 Defining Byte 없이 Direct CCC를 지원하지만, 특정 Defining Byte 값과 함께 사용된 동일한 Direct CCC를 지원하지

않는 경우, 타겟은 해당 타겟 주소 이후 NACK을 반환해야 합니다.

이 상황에서:

  • 컨트롤러는 타겟이 해당 Direct CCC에 대해 특정 Defining Byte 값을 지원하지 않는다고 가정해야 합니다.
  • 그러나, 타겟이 특정 CCC와 Defining Byte 조합에 대해 NACK을 반환한 사실만으로 특정 타겟 기능이나 역량의 존재 유무를 추론해서는 안 됩니다.
  • 또한, 타겟이 Direct CCC를 일반적으로 지원하지 않는다고 가정해서도 안 됩니다.

참고(Note)

  1. Defining Byte 지원 여부 확인:
    • 컨트롤러는 특정 CCC에 대해 타겟이 Defining Byte를 지원하는지 확인할 책임이 있습니다.
    • 이는 일반적으로 타겟이 광고하는 상태 비트나 기능(예: Direct GET CCC에서 반환된 값 읽기)을 통해 확인할 수 있습니다.
  2. I3C 버전 호환성 확인:
    • 컨트롤러는 타겟이 Defining Byte를 전반적으로 지원하는지 여부도 확인해야 합니다.
    • 예: 타겟이 I3C Basic v1.1.1 이상 또는 전체 I3C 사양을 준수하는지.
    • 만약 컨트롤러가 Defining Byte를 포함한 Direct CCC를 Defining Byte를 지원하지 않는 타겟(I3C Basic v1.1.1 이하 또는 v1.1 미만)으로 전송하려 하면, 그 결과는 정의되지 않을 수 있습니다.

5.1.9.2.3 Retry Model for Direct GET CCC Commands

I3C는 Direct GET CCC 명령에 대해 단일 재시도 모델(single-retry model)을 규정합니다.

Direct GET CCC 명령은 먼저 Broadcast Address(7’h7E)**를 사용하여 모든 타겟에 GET 명령을 보낸 뒤, 각 타겟별로 Dynamic Address(동적 주소)를 전송하여 개별 응답을 유도합니다.
이를 통해 타겟이 자신의 주소가 전송될 때 즉각 응답할 수 있는 상태가 되도록 해야 합니다.
다만, 경우에 따라 타겟이 주소 전송을 준비하지 못한 상태(예: 응답을 하지 않아야 하는 경우)가 있을 수 있습니다.

하드웨어에서 지원하는 Direct GET CCC 명령(예: GETBCR)의 경우 이러한 문제는 거의 발생하지 않습니다.
그러나 소프트웨어나 타겟의 시스템에서 지원되는 Direct GET CCC 명령의 경우, 타겟이 시간 내에 명령에 응답하지 못할 가능성이 있습니다.

 

재시도 모델 처리 방식
이러한 상황은 다음과 같은 단일 재시도 모델(single-retry model)을 통해 처리됩니다. 이는 Direct GET CCC 명령에만 적용됩니다.

  • 타겟이 자신의 주소에 대해 NACK을 반환합니다.
  • 컨트롤러가 Repeated START를 전송한 뒤, 타겟 주소를 다시 전송합니다.
    • 두 번째 전송은 타겟이 응답을 준비할 추가 시간을 제공합니다.
    • 컨트롤러는 타겟의 NACK 이후, Repeated START 이전에 **지연 시간(delay)**을 추가로 둘 수 있습니다(섹션 5.1.2.5 참고).
  • 타겟은 2단계의 재시도 시도에 ACK으로 응답한 후, 요청된 결과를 전송해야 합니다.

제한 사항

  • 이 재시도 모델은 단일 재시도로 제한됩니다.
  • 어떤 이유로든 타겟이 2단계의 재시도 시도에 응답하지 못하면, NACK을 반환하며, 컨트롤러는 추가적인 재시도를 시도하지 않습니다.

 

참고 사항

  • 2단계는 타겟이 원래 Direct GET CCC 요청에 대해 NACK을 반환한 경우에만 발생합니다.
  • 이 재시도 모델은 타겟이 추가 시간이 필요한 경우를 제외하고, 시간 지연을 초래하지 않습니다

5.1.9.3 CCC Command Definitions

Broadcast CCCs:

Command Code Command Name Description
0x00 ENEC : Enable Events Command Enable Target event driven interrupts
Default State: On
0x01 DISEC : Disable Events Command Disable Target event driven interrupts
Default State: Off
0x02 ENTAS0 : Enter Activity State 0 Set Activity State 0 (normal operation).
Default State: On
0x03 ENTAS0 : Enter Activity State 1 Set Activity State 1
Default State: Off
0x04 ENTAS0 : Enter Activity State 2 Set Activity State 2
Default State: Off
0x05 ENTAS0 : Enter Activity State 3 Set Activity State 3
Default State: Off
0x06 RSTDAA : Reset Dynamic Address Assignment Forget current Dynamic Address and wait for new assignment
0x07 ENTDAA : Enter Dynamic Address Assignment Controller has started the Dynamic Address Assignment procedure. 
0x08 DEFTGTS : Define List of Targets Controller defines Dynamic Address, DCR Type, and Static Address (or 0) per Target
0x09 SETMWL : Set Max Write Length Maximum write length in a single command
0x0A SETMRL : Set Max Read Length Maximum read length in a single command
0x0B ENTTM : Enter Test Mode Controller has entered Test Mode
0x0C SETBUSCON : Set Bus Context Controller specifies a higher-level protocol and/or I3C
specification version that the Bus will use
0x0D – 0x11 Reserved   
0x12 ENDXFER : Data Transfer Ending Procedure Control Framework for Controllers and Targets to exchange setup parameters for ending data transfers in supported HDR Modes
0x13 – 0x1E Reserved   
0x1F Reserved for use in special CCC flows for HDR Modes only  
0x20 ENTHDR0 : Enter HDR Mode 0 Controller has entered HDR-DDR Mode
0x21 ENTHDR1 : Enter HDR Mode 1 Controller has entered HDR-TSP Mode
0x22 ENTHDR2 : Enter HDR Mode 2 Controller has entered HDR-TSL Mode
0x23 ENTHDR3 : Enter HDR Mode 3 Controller has entered HDR-BT Mode
0x24 ENTHDR3 : Enter HDR Mode 4 Controller has entered HDR – Future
0x25 ENTHDR3 : Enter HDR Mode 5 Controller has entered HDR – Future
0x26 ENTHDR3 : Enter HDR Mode 6 Controller has entered HDR – Future
0x27 ENTHDR3 : Enter HDR Mode 7 Controller has entered HDR – Future
0x28 SETXTIME : Exchange Timing Information Framework for exchanging event timing information
0x29 SETAASA : Set All Addresses to Static Addresses Controller tells every Target with a Static Address to use it as the Dynamic Address
0x2A RSTACT : Target Reset Action Configure and query Target Reset action and timing
0x2B DEFGRPA : Define List of Group Address Controller tells Secondary Controllers details about an indicated Group Address
0x2C RSTGRPA : Reset Group Address Controller removes a Target from an indicated Group Address by resetting the assigned Group Address
0x2D MLANE : Multi-Lane Data Transfer Control Controller removes a Target from an indicated Group Address by resetting the assigned Group Address
….    
0x61~0x7F   Vendor / Standards Extension - Broadcast CCCs

 

Direct CCCs:

Command Code Command Name Description
0x80 ENEC : Enable Events Command Enable Target event driven interrupts
Default State: On
0x81 DISEC : Disable Events Command Disable Target event driven interrupts
Default State: Off
0x82 ENTAS0 : Enter Activity State 0 Set Activity Mode to State 0 (normal operation).
Default State: On
0x83 ENTAS1 : Enter Activity State 1 Set Activity State 1
Default State: Off
0x84 ENTAS2 : Enter Activity State 2 Set Activity State 2
Default State: Off
0x85 ENTAS3 : Enter Activity State 3 Set Activity State 3
Default State: Off
0x87 SETDASA : Set Dynamic Address from Static Address Controller assigns a Dynamic Address to a Target with a known Static Address.
0x88 SETNEWDA : Set New Dynamic Address Controller assigns a new Dynamic Address to any I3C Target with an existing Dynamic Address
0x89 SETMWL : Set Max Write Length Maximum write length in a single command
0x8A SETMRL : Set Max Read Length Maximum read length in a single command
0x8B GETMWL : Get Max Write Length Get Target’s maximum possible write length
0x8C GETMRL : Get Max Read Length Get Target’s maximum possible read length
0x8D GETPID : Get Provisioned ID Get Target’s Provisioned ID
0x8E GETBCR : Get Bus Characteristics Register Get Target’s Bus Characteristic Register (BCR)
0x8F GETDCR : Get Device Characteristics Register Get a Device’s Device Characteristics Register (DCR)
0x90 GETSTATUS : Get Device Status Get a Device’s operating status
0x91 GETACCCR : Get Accept Controller Role Active Controller is passing the Bus Controller Role to a
Secondary Controller and confirming its acceptance
0x92 ENDXFER : Data Transfer Ending Procedure Contro Framework for Controllers and Targets to exchange setup parameters for ending data transfers in supported HDR Modes
0x93 SETBRGTGT : Set Bridge Targets Controller tells Bridge (to/from I2C, SPI, UART, etc.) what endpoints it is talking to (by Dynamic Address and type/ID)
0x94 GETMXDS : Get Max Data Speed Controller asks Target for its SDR Mode maximum. Read and Write data speeds (& optionally maximum Read Turnaround time)
0x95 GETCAPS : Get Optional Feature Capabilities
(formerly GETHDRCAPS)
Controller asks Target what optional capabilities it supports
0x96 SETROUTE : Set Route Controller tells Routing Device what Route(s) to enable
0x98 SETXTIME : Set Exchange Timing Information Framework for exchanging event timing information
0x99 GETXTIME : Get Exchange Timing Information Framework for exchanging event timing information
0x9A RSTACT : Target Reset Action Configure and query Target Reset action and timing
0x9B SETGRPA : Set Group Address Controller assigns Group Addresses
0x9C RSTGRPA : Reset Group Address Controller removes a Target from an indicated Group Address by resetting the assigned Group Address
0x9D MLANE : Multi-Lane Data Transfer Control Control a Multi-Lane Data Transfer
0xE0 – 0xFE  Vendor / Standards Extension – Direct CCCs  

 

 

######### 참조 ##########

T-Bit 이란?

T-Bit은 I3C 프로토콜에서 Toggle Bit 을 의미하며, 특정 데이터 전송 상황에서 상태를 구분하거나, 전송 흐름을 제어하는 데 사용되는 비트입니다. T-Bit은 특히 Command CodeDefining Byte 등과 함께 사용되며, 주로 다음과 같은 역할을 합니다:

  • T-Bit의 동작 방식
    • T-Bit은 기본적으로 0 또는 1로 설정되며, 각 전송 단위에서 현재 상태를 반영하거나 다음 상태로 변경합니다.
      • T-Bit = 0: 첫 번째 데이터 세그먼트를 나타냅니다.
      • T-Bit = 1: 두 번째 데이터 세그먼트 또는 연속적인 데이터를 나타냅니다.