Communication Protocol Spec

ABSTRACT

The MSP USS Design Center communication protocol is a communications specification for sending ultrasonic specific data. It enables MSP430 USS-equipped microcontrollers to communicate with design, debug, and tuning tools on host PCs. In addition to this function, it can also provide a mechanism for interfacing a USS MCU to another host MCU or SoC in the context of a larger system. This document discusses the details of the protocol: packet types, packet structure, and transmission. It does not discuss implementations, either for target or host.

MSP430 USS Design Center Packet Structure

MSP USS Design Center generic Packet Structure
[0] [1] [2] [3] [4] [5] [6] ... [N +1] [N+2] [N+3]
MSP Design
Center ID
Byte
Command ID Byte Read/Write Command Byte Payload
Byte0
Payload
Byte 1
Payload
Byte2
Payload
Byte3
... Payload
Byte N
Checksum (LSB) Checksum (MSB)
Byte Name Byte Description MSP430 Design Center ID Byte This byte identifies the package as a command for a specific Design Center GUI. In the case of MSP USS Desing Center this byte is always 0x04. Command ID Byte This byte specifies the command type. Each command has a fixed predefined lenght Read/Write Command Byte This byte specifies is the command should be perform a read or write operation. 0x00 == Read 0x01 == Write Payload Contains package payload Checksum Checksum is a unsigned 16-bit value which contains the sum of Byte[0] - Byte[N+1]

Configuration Parameters Description

All Configuration Parameter (Commands 0x80-0xAF) contains 4 payload bytes. The table below represents the packet structure of a configuration parameter.

MSP USS Design Center generic Packet Structure
[0] [1] [2] [3] [4] [5] [6] [7] [8]
MSP Design
Center ID
Byte
Command ID Byte Read/Write Command Byte Payload
Byte0
Payload
Byte 1
Payload
Byte2
Payload
Byte3
Checksum (LSB) Checksum (MSB)

Command 0x80 (Gap Between Pulse Start and ADC Capture)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x80
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Gap between pulse start and ADC capture uint16_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x81 (Number of Pulses)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x81
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Number of Pulses uint16_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x82 (Gap Between Up stream and Down stream)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x82
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Gap Between Up stream and Down stream uint16_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x83 (Gap Between Down stream and Up stream)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x83
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Gap Between Down stream and Up stream uint16_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x84 (Gain Control)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x84
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] Gain Control Selection uint8_t -6.5 db ==17
-5.5 db ==18
-4.6 db ==19
-4.1 db ==20
-3.3 db ==21
-2.3 db ==22
-1.4 db ==23
-0.8 db ==24
0.1 db ==25
1.0 db ==26
1.9 db ==27
2.6 db ==28
3.5 db ==29
4.4 db ==30
5.2 db ==31
6.0 db ==32
6.8 db ==33
7.7 db ==34
8.7 db ==35
9.0 db ==36
9.8 db ==37
10.7 db ==38
11.7 db ==39
12.2 db ==40
13.0 db ==41
13.9 db ==42
14.9 db ==43
15.5 db ==44
16.3 db ==45
17.2 db ==46
18.2 db ==47
18.8 db ==48
19.6 db ==49
20.5 db ==50
21.5 db ==51
22.0 db ==52
22.8 db ==53
23.6 db ==54
24.6 db ==55
25.0 db ==56
25.8 db ==57
26.7 db ==58
27.7 db ==59
28.1 db ==60
28.9 db ==61
29.8 db ==62
30.8 db ==63
Bytes [4-6] Don't care N/A N/A

Command 0x85 (Meter Constant)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x85
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Meter Constant float +/-3.40 282 346e+38 Byte[3](LSB)
Byte[6](MSB)

Command 0x86 (XT2 Frequency in KHz)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x86
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] XT2 Frequency in KHz uint16_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x87 (ADC Sampling Frequency in KHz)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x87
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] ADC Sampling Frequency in KHz uint16_t 0x00-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x88 (Signal Sampling Frequency)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x88
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Signal Sampling Frequency uint16_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x89 (Oversampling Rate)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x89
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] ADC Oversampling Rate uint8_t 0x00-0xff
Bytes [4-6] Don't care N/A N/A

Command 0x8A (Delta ToF Offset in ps)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x8A
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Delta ToF Offset in ps int32_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[6](MSB)

Command 0x8B (Absolute ToF additional delay in ns)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x8B
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Absolute ToF additional delay in ns int32_t 0x0000-0xFFFFFFF
Byte[3](LSB)
Byte[6](MSB)

Command 0x8C (Capture Duration in usec)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x8C
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Capture Duration in usec uint16_t 0x0000-0xFFFF
Byte[3](LSB)
Byte[4](MSB)
Bytes [5-6] Don't care N/A N/A

Command 0x8D ([Param1])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x8D
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #1 int32_t 0x0-0xffffffff

Command 0x8E ([Param2])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x8E
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #2 int32_t 0x0000-0xffffffff

Command 0x8F ([Param3])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x8F
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #3 int32_t 0x0000-0xffffffff

Command 0x90 ([Param4])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x90
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #4 int32_t 0x0000-0xffffffff

Command 0x91 ([Param7])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x91
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #7 int32_t 0x0000-0xffffffff

Command 0x92 ([Param8])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x92
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #8 int32_t 0x0000-0xffffffff

Command 0x93 ([Param9])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x93
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #9 int32_t 0x0000-0xffffffff

Command 0x94 ([Param10])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x94
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #10 int32_t 0x0000-0xffffffff

Command 0x95 (LEA enabled)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x95
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] LEA enabled bool true == Computation with LEA is enabled
false == Computation with LEA is NOT enabled
Bytes [4-6] Don't care N/A N/A

Command 0x96 (Request Application Configuration Update)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x96
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] Request configuration update bool true == Design Center is requesting a configuration update
false == Design Center is NOT requesting a configuration update
Bytes [4-6] Don't care N/A N/A

Command 0x97 (Request Delta ToF, Abs ToF and Volume Flow data)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x97
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] Request configuration update bool true == Design Center is requesting Delta ToF, Abs ToF and Volume Flow data
false == Design Center is NOT requesting Delta ToF, Abs ToF and Volume Flow data
Bytes [4-6] Don't care N/A N/A

Command 0x98 (Request UPS and DNS captures)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x98
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] Request configuration update bool true == Design Center is requesting UPS and DNS captures
false == Design Center is NOT requesting UPS and DNS captures
Bytes [4-6] Don't care N/A N/A

Command 0x99 (Application version)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x99 Requests USS DC application version
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] Application Type uint8_t 0x00 == Gas Meter
0x01 == Water Meter
0x02-0xff (Reserved)
Bytes [4] Device ID uint8_t 0x00 == MSPFR6047
0x01 == MSP430FR5994
0x02 == MSP430FR6043
0x03-0xff (Reserved)
Bytes [5] Hardware ID uint8_t 0x00 == EVM
0x01 == Launchpad
0x02-0xff (Reserved)
Bytes [5] Firmware ID uint8_t 0x00 - 0xff Indicates the version of comm protocol supported

Command 0x9A (Error package)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x9A Reports Error occurred on application code
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] Error Type uint8_t See the [Application Error Messages](ch_errors.html#full-library-error-list)
Bytes [4-6] Don't care N/A N/A

Command 0x9B (F1 and f2 package)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x9B Provides f1 and f2 application values
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Frequency 1 value uint16_t 1-65,535 Frequency is in KHz
Bytes [5-6] Frequency 2 value uint16_t 1-65,535 Note 1: Frequency is in KHz
Note 2: Currently only used for Gas Meter applications

Command 0x9C (Pattern option)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x9C Provides pattern option
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3] Pattern option uint8_t 0x00 == Single Tone
0x01 == Dual Tone
0x02 == f1 to f2 sweep Tone
0x03-0xff (reserved)
Bytes [4-6] Don't care N/A N/A

Command 0x9D (User message display)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x9D Provides messages to be displayed in pop-up message form in Design Center
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-4] Message Code uint16_t 0x0000 == Configuration update successful
0x0001 == Configuration update error
0x0003-0xffff (reserved)
Bytes [4-6] Don't care N/A N/A

Command 0x9E ([Param5])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x9E Provides start PGAandINBias count
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #5 int32_t 0x0000-0xffffffff

Command 0x9F ([Param6])

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0x9F Provides start PGAandINBias count
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] General Purpose Param #6 int32_t 0x0000-0xffffffff

Command 0xA0 (Advanced Calibration Table)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xA0
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Byte 3 Advanced Calibration Table Status uint8_t 0x00 == The MCU has the calibration table disabled. (requested by GUI)
0x01 == The MCU has the calibration table enabled.
0xFF == The MCU has the calibration table disabled (invalid calibration table in MCU)
Bytes [4-6] Don't care N/A N/A

Command 0xA1-0xAF (Reserved Commands)

Plotting Parameters Description

All plotting parameter (Commands 0xB0-0xCF) contains 8 payload bytes. The table below represents the packet structure of a plotting parameter.

MSP USS Design Center generic Packet Structure
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
MSP Design
Center ID
Byte
Command ID Byte Read/Write Command Byte Payload
Byte0
Payload
Byte 1
Payload
Byte2
Payload
Byte3
Payload
Byte4
Payload
Byte5
Payload
Byte6
Payload
Byte7
Checksum (LSB) Checksum (MSB)

Command 0xB0 (Payload contains Delta ToF computation)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB0
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-10] Payload contains Delta ToF computation float float date type valid range Byte[3](LSB)
Byte[6](MSB)

Command 0xB1 (Payload contains Absolute ToF Up stream computation)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB1
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Payload contains Absolute ToF Up stream computation float float date type valid range Byte[3](LSB)
Byte[6](MSB)
Bytes [7-10] Don't care N/A N/A

Command 0xB2 (Payload contains Absolute ToF Down stream computation)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB2
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Payload contains Absolute ToF Down stream computation float float date type valid range Byte[3](LSB)
Byte[6](MSB)
Bytes [7-10] Don't care N/A N/A

Command 0xB3 (Payload contains Volume Flow Rate computation)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB3
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Payload contains Absolute ToF Down stream computation float float date type valid range Byte[3](LSB)
Byte[6](MSB)
Bytes [7-10] Don't care N/A N/A

Command 0xB4 (Payload contains ADC UPS capture start/stop flags and number of expected packages)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB4
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes 3 Contains ADC UPS start/stop condition bool true == Transmission of ADC UPS capture data will start false == Transmission of ADC UPS capture data is done
Bytes 4 Payload contains ADC UPS number of packets to be transmitted uint8_t Valid number of packages (1-255)
Bytes [5-10] Don't care N/A N/A

Command 0xB5 (Payload contains ADC DNS capture start/stop flags and number of expected packages)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB5
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes 3 Contains ADC DNS start/stop condition bool true == Transmission of ADC UPS capture data will start false == Transmission of ADC UPS capture data is done
Bytes 4 Payload contains ADC DNS number of packets to be transmitted uint8_t Valid number of packages (1-255)
Bytes [5-10] Don't care N/A N/A

Command 0xB6 (Generic Plotter command)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB6 Allows user to send data to generic ploter
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Generic Plotter command float float date type valid range
Bytes [7-10] Don't care N/A N/A

Command 0xB7 (Advanced Generic Plotter command)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xB7 Allows user to send data to generic plotter defined in cmd
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Generic Plotter command float float date type valid range
Byte 7 Plotter Number uint8_t 1 to 4
Bytes [8-10] Don't care N/A N/A

Command 0xB8-0xBF (Reserved plotting commands)

Variable Length Plotting Parameters Description

All plotting parameter (Commands 0xC0-0xCF) contains 60 payload bytes.

MSP USS Design UPS/DNS Capture Packet Structure
[0] [1] [2] [3] [4] [5] [6] [...] [58] [59] [60] [61] [62]
MSP Design
Center ID
Byte
Command ID Byte Read/Write Command Byte Payload
Byte0
Payload
Byte 1
Payload
Byte2
Payload
Byte
... Payload
Byte 55
Payload
Byte 56
Payload
Byte 57
Checksum (LSB) Checksum (MSB)

Command 0xC0 (Payload contains UPS ADC capture)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xC0
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Byte 3 Specifies UPS package number uint8_t (1-255)
Byte 4 Specifies number of captures (CAP_SIZE) contained in the package uint8_t (1-255)
Bytes [5-((2*CAP_SIZE) + 4)] Contains UPS captures int16_t (-32768,32767)
Bytes [(2*CAP_SIZE) + 5) - 59] Don't care N/A N/A IMPORTANT: This is only valid when (CAP_SIZE < 27)
Byte 60 Don't care N/A N/A

Command 0xC1 (Payload contains DNS ADC capture)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xC0
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Byte 3 Specifies DNS package number uint8_t (1-255)
Byte 4 Specifies number of captures (CAP_SIZE) contained in the package uint8_t (1-255)
Bytes [5-((2*CAP_SIZE) + 4)] Contains UPS captures int16_t (-32768,32767)
Bytes [(2*CAP_SIZE) + 5) - 59] Don't care N/A N/A IMPORTANT: This is only valid when (CAP_SIZE < 27)
Byte 60 Don't care N/A N/A

Command 0xC2-0xCF (Reserved variable length plotting commands)

Calibration Parameters Description

All calibration parameter (Commands 0xD0-0xDF) contains 20 payload bytes.

MSP USS Design Calibration Packet Structure
[0] [1] [2] [3] [4] [5] [6] [...] [18] [19] [20] [31] [32]
MSP Design
Center ID
Byte
Command ID Byte Read/Write Command Byte Payload
Byte0
Payload
Byte 1
Payload
Byte2
Payload
Byte
... Payload
Byte 25
Payload
Byte 26
Payload
Byte 27
Checksum (LSB) Checksum (MSB)

Command 0xD0 (Request Calibration Config)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xD0 Request target calibration configuration
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Byte 3 Number of Calibration Ranges uint8_t 1 to 16
Byte 4 Calibration Mode uint8_t 0x01 == Linear Regression
Byte 5 Calibration Update bool true == Calibration Parameters update in progress
false == Calibration Parameters update completed
Bytes [6-20] Don't care N/A N/A

Command 0xD1 (Maximum Volume Flow Rate)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xD1
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Bytes [3-6] Maximum Volume Flow Rate float float date type valid range Byte[4](LSB)
Byte[7](MSB)
Bytes [7-20] Don't care N/A N/A

Command 0xD2 (Calibration Linear Constants)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xD2
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Byte 3 Range Number uint8_t 1 to 16
Bytes [4-7] Minimum Alpha (VFR/meter constant) float float date type valid range Byte[4](LSB)
Byte[7](MSB)
Bytes [8-11] Slope Meter Constant float float date type valid range Byte[8](LSB)
Byte[11](MSB)
Bytes [12-15] Offset Meter Constant float float date type valid range Byte[12](LSB)
Byte[15](MSB)
Bytes [16-20] Don't care N/A N/A

Command 0xD3 (Device ACK)

Byte # Description Data Type Valid Value/Range Notes
Byte 0 Design Center ID uint8_t 0x04
Byte 1 Command uint8_t 0xD3
Byte 2 Read/Write Command uint8_t 0x00 == Read
0x01 == Write
Byte 3 Command uint8_t Acknowledged Command ID
Bytes [4-20] Don't care N/A N/A

Command 0xD4-0xDF (Reserved calibration commands)a