1

I send and SDO request to read a 1 byte value like this:

|11 bit COD-ID | byte 0 | byte 1 | byte 2 | byte 3   | byte 4 | byte 5 | byte 6 | byte 7 |
| 0x0601       | 0x40   |      index      | subindex | 0x00   | 0x00   | 0x00   | 0x00   |

and the device responds with:

|11 bit COD-ID | byte 0 | byte 1 | byte 2 | byte 3   | byte 4 | byte 5 | byte 6 | byte 7 |
| 0x581        | 0x4F   |      index      | subindex | 0xFF   | 0x00   | 0x00   | 0x00   |

0x4F means that the returned value is only 8 bit wide, only byte 4 is set. What about byte 5, 6, and 7. Are they guaranteed to be zero by the standard?

knivil
  • 787
  • 3
  • 11

1 Answers1

2

Yes, CAN frames involved in SDO requests always have an 8-byte payload. Unused bytes are set to 0 and should be ignored by the recipient.

This is guaranteed by CiA 301 section 7.2.4.3, which describes the SDO protocol.

Jos Seldenthuis
  • 381
  • 1
  • 5