| Field | Value |
|---|---|
| Document ID | ICD-XXX |
| Version | 0.1 |
| Status | Draft |
| Date | YYYY-MM-DD |
| Owner | [Name or working group] |
| Reviewers | [Names] |
| Version | Date | Author | Changes |
|---|---|---|---|
| 0.1 | YYYY-MM-DD | [Name] | Initial draft |
[Describe the interface's purpose in the system. What does it enable? What components rely on it?]
This document specifies:
- [Aspect 1]
- [Aspect 2]
- [Aspect 3]
This document does not cover:
- [Out of scope item 1]
- [Out of scope item 2]
| Component | Hardware | Role |
|---|---|---|
| [Component A] | [MCU/board] | [What it does in this interface] |
| [Component B] | [MCU/board] | [What it does in this interface] |
| Parameter | Value | Notes |
|---|---|---|
| Bus type | [e.g., CAN 2.0B, RS-422] | |
| Bit rate | [e.g., 1 Mbit/s] | |
| Signaling | [e.g., differential] | |
| Voltage levels | [e.g., 0-3.3V] |
| Pin | Signal | Direction | Notes |
|---|---|---|---|
| 1 | [Signal name] | [In/Out/Bidir] | |
| 2 | [Signal name] | [In/Out/Bidir] |
[Wire gauge, shielding, maximum length, termination requirements]
[How are messages structured? What is the byte order? Are there sync words, length fields, checksums?]
| Parameter | Value | Notes |
|---|---|---|
| [Parameter name] | [Value] | [Context] |
| ID Range | Owner | Purpose |
|---|---|---|
| [Range] | [Owner] | [Use case] |
| Field | Value |
|---|---|
| ID | [Identifier] |
| Direction | [A → B or B → A or bidirectional] |
| Length | [Bytes] |
| Frequency | [How often this is sent] |
| Purpose | [What this message conveys] |
Payload Structure:
| Offset | Size | Type | Field | Description |
|---|---|---|---|---|
| 0 | 4 B | uint32 LE | [field_name] | [description] |
| 4 | 1 B | uint8 | [field_name] | [description] |
| 5 | 3 B | uint24 | reserved | Set to 0 |
Example:
Hex bytes: 0x37 0x05 0x00 0x00 0x01 0x00 0x00 0x00
Decoded: field_name=1335, status=ENABLED
Notes:
[Any clarifications about field semantics, edge cases, valid ranges]
[Repeat structure above for each message]
[How is corruption detected? CRC? Length check? Magic word?]
[What does each party do when a corrupted message is detected?]
[What if expected messages don't arrive? Timeout values, fallback behaviour]
[What if messages arrive in unexpected order?]
| Constant | Value | Description |
|---|---|---|
| [CONSTANT_NAME] | [Value] | [Meaning] |
[Hex bytes of a valid message]
Expected interpretation: [What this message means]
[Another valid example]
[Hex bytes of an invalid message]
Expected behaviour: [How implementations should respond]
[Anything implementers should know that isn't strictly part of the specification]
- Related ADRs: ADR-XXX
- Related ICDs: ICD-YYY
- Standards: [Relevant standard reference]
- Implementation:
path/to/code/ - Datasheet: [Link to component datasheet if applicable]
| Term | Definition |
|---|---|
| [Term] | [Definition] |