Test and Measurement Technical Data
dS-NET Serial Protocol
Introduction
dS-NET is a proprietary, open protocol for controlling dScope Series III peripherals. By default the bearer is RS232 although the dS-NET hardware can be configured as RS485 using internal jumpers. The normal use for the protocol is for peripherals connected directly to the dScope Series III audio analyzer using a D-Sub 9 RS232 connection. In this application, the functions of the peripherals are integrated into the dScope software so that they behave as part of the dScope itself. It is also possible to control peripherals directly from a standard PC serial port.
dS-NET uses 9600 baud, No Parity, 8 data bits, and 1 stop bit. Using multiple peripherals consists of daisy chaining them, one after the other (each peripheral has two connections, one for connecting to the master or previous peripheral and one for connecting to the next slave). They must then each be given a unique address using the DIP switches on the rear panel. Up to 64 devices can be connected in this way.
Protocol
The concept behind the protocol is that the system operates with a single master and multiple slaves. Simple (non-dS-NET) operation can be achieved with the master talking, but not listening although slaves can be requested to return a status response so that the master can listen to status messages if required. The master can issue two types of command, individual or broadcast. Individual commands are addressed to individual slaves and may optionally request a response from that slave. If requested, the slave must start to respond within 10ms and finish within 50ms. Broadcast commands are sent to all devices on the bus and are never responded to.
A dS-NET command consists of seven parts. These are
START | ADDR | COUNT | CODE | (COUNT x DATA) | CSUM | END |
Each section, with the exception of the data, is one byte. Each of the sections of the command is described below:
START: There are two possible start codes: 0x55 is the command start code and 0x5A is a slave response start code.
ADDR: This is the address of the dS-NET slave being commanded, or which is responding. This can have any value in the range 0x00 through to 0x3F.
CODE: This is the command or status code; different types of slave may have different CODE sets, some CODEs are universal.
COUNT: This is the number of bytes in the DATA that follows this byte. Its value depends on the particular CODE.
DATA: Not all commands require data. If not present, the COUNT is set to 0x00. Otherwise, the number of bytes indicated in COUNT are present here.
CSUM: The check-sum, CSUM is calculated such that ADDR+COUNT+CODE+DATA(0..COUNT-1)+CSUM = 0x55H
END: There are two possible command end codes: 0xAA is the command end code when a response is required; 0xA5 is the command end code when no response is required.
Command Structure
The four main types of command are shown below
Individual Command, response requested
0x55 | ADDR | COUNT | CODE | (COUNT x DATA) | CSUM | 0xAA |
Individual Command, response not requested
0x55 | ADDR | COUNT | CODE | (COUNT x DATA) | CSUM | 0xA5 |
Broadcast Command (response never requested)
0x55 | 0xFF | COUNT | CODE | (COUNT x DATA) | CSUM | 0xA5 |
Response
0x5A | ADDR | COUNT | CODE | (COUNT x DATA) | CSUM | 0xA5 |
Examples: The command "0x55 0x00 0x00 0x80 0xD5 0xAA" is a RELAY_STATUS_ALL command from the I/O switcher group, addressed to switcher 00. This is a request for the status of the device, and has no data so the COUNT is set to zero, and there is no data byte. A response is requested by the last byte being set to 0xAA. The response to this command is the also a RELAY_STATUS_ALL response. This response would take the form "0x5A 0x00 0x06 0x80 0x01 0x00 0x00 0x00 0x00 0x00 0xCE 0xA5". Here the device responding uses its address 00, and there are six data bytes so the count is set to 0x06. In this case the 01 in the first data byte indicates that the first relay on bus A is set, and the remaining data bytes all set at zero show that this is the only relay that is set. See below for more information on this command and response.
As a further example, staying with the I/O switcher example, in order to set the second relay on Bus A, we could use the RELAY_ADD_A command (code 84) which would look like "0x55 0x00 0x01 0x84 0x01 0xCF 0xAA". Here there is a single data byte, so the count is set to 0x01. This command expects a RELAY_STATUS_A response in the form "0x5A 0x00 0x03 0x81 0x03 0x00 0x00 0xCE 0xA5" - note that the RELAY_ADD_A command is zero indexed so that the data byte 0x00 turns on relay 1, 0x01 turns on relay 2 and 0x0F turns on relay 16, however, the response has 1s where the relays are set when the bytes are displayed as binary, with each byte representing 8 connections. In this way, the 0x03 is 00000011 in binary and shows relays 1 and 2 both set.
Synchronization
In the 'waiting' state, devices should compare any received bytes to 0x55 or 0x5A, and remain 'waiting' until it is received.
Mis-sync is detected by:
- ADDR greater than 0x3F but not 0xFF
- incorrect CSUM
- Command end code (0xAA or 0xA5) not detected after CSUM
- No data received for more than 50ms
Half duplex considerations
In the RS-485 case, one data line is used for all communication, i.e. only the master OR one slave can be talking at once. The protocol takes note of this limitation (even if the units are jumpered for RS-232). In the case where the commands are sent expecting no response, no problems occur. If responses are used, an addressed slave should respond ASAP after receipt of 0xAA (but in any case within 10ms) and complete ASAP. The master must wait until receipt of the 0xA5 at the end of the response, or until 50ms after end of previous command before issuing a new command.
Universal Commands and Responses (all dS-NET slaves)
Please note that the command tables below do not attempt to show the command structure. This is given above. In particular, please be aware that the CODE and COUNT columns are not in the order in which they are sent.
GET_STATUS
Type: Individual Command, Response Requested.
Response: BASIC_STATUS
CODE=0x00 | COUNT=0x00 |
RESET
Type: Individual Command, Response Requested.
Response: BASIC_STATUS
CODE=0xFF | COUNT=0x01 | DATA0 | Bit 0: ON | ON=0: Clear all relays and enter STANDBY ON=1: Clear all states, exit STANDBY if applicable |
BASIC_STATUS
Type: Response
Response: None
CODE=0x00 | COUNT=0x03 | DATA0 | Bit[7..4]: CLASS[3..0] | CLASS 0x01 is switchers |
Bit[3..0]: TYPE[3..0] | TYPE 0x01 is I/O switcher | |||
DATA1 | Bit[7..4]: FIRMWARE[3..0] | FIRMWARE 0x01 is Rev B | ||
Bit[3..0]: HARDWARE[3..0] | HARDWARE 0x01 is Rev B | |||
DATA2 | Bit0: ON | ON=0: In STANDBY, ON=1: ON | ||
Bit1: CLEAR | If ON=1, CLEAR=1: all settings as at RESET | |||
Bit[7..6]: DIPs | State of 2 MS DIP switches, 1=down |
I/O Switcher specific Commands and Responses
Please note that the command tables below do not attempt to show the command structure. This is given above. In particular, please be aware that the CODE and COUNT columns are not in the order in which they are sent.
WARNING!: Switchers and connected equipment can be damaged if the wrong connections are made. Test carefully before connecting equipment. If the equipment connected to the switcher may be damaged by having more than one relay connected at a time (e.g. power amplifiers), you must make sure that you include an extra call to turn existing connected relays off before turning the new relays on. One way to do this is to include a call RELAY_MASK_ALL with a mask of 0 in between calls to turn new relays on. This will ensure that all connections are broken before any new ones are made. Please also be aware of the current ratings of the switcher relays before routing power signals through the switchers.
RELAY_STATUS_ALL
Type: Individual Command, Response Requested
Response: RELAY_STATUS_ALL
Description: Requests an I/O switcher to return the status of all its relays
CODE=0x80 | COUNT=0x00 |
RELAY_MASK_ALL
Type: Individual Command
Response: RELAY_STATUS_ALL
Description: Set the state of all relays on a device. This has six data bytes, each byte of which represents the relays when shown in binary. 0x03 hex is 00000011 binary, and indicates that relays 1 and 2 are on. The response is in the same format.
CODE=0x81 | COUNT=0x06 | DATA0 | X to A | binary: 1s where relays set |
DATA1 | Y to A | binary: 1s where relays set | ||
DATA2 | AUX_A: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set | ||
DATA3 | X to B | binary: 1s where relays set | ||
DATA4 | Y to B | binary: 1s where relays set | ||
DATA5 | AUX_B: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set |
RELAY_MASK_A
Type: Individual Command
Response: RELAY_STATUS_A
Description: Sets the state of all relays on bus A. This has three data bytes, each byte of which represents the relays when shown in binary. 0x03 hex is 00000011 binary, and indicates that relays 1 and 2 are on. The response is in the same format.
CODE=0x82 | COUNT=0x03 | DATA0 | X to A | binary: 1s where relays set |
DATA1 | Y to A | binary: 1s where relays set | ||
DATA2 | AUX_A: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set |
RELAY_MASK_B
Type: Individual Command
Response: RELAY_STATUS_B
Description: Sets the state of all relays on bus B. This has three data bytes, each byte of which represents the relays when shown in binary. 0x03 hex is 00000011 binary, and indicates that relays 1 and 2 are on. The response is in the same format.
CODE=0x83 | COUNT=0x03 | DATA0 | X to B | binary: 1s where relays set |
DATA1 | Y to B | binary: 1s where relays set | ||
DATA2 | AUX_B: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set |
RELAY_ADD_A
Type: Individual Command
Response: RELAY_STATUS_A
Description: Turn on an individual relay on Bus A. This command addresses each relay individually by a zero indexed number, so 0x00 turns on relay 1 etc. It is also possible to use this command to turn on all the relays in group X and/or Y or the balance and load resistors. This command only turns relays on. See RELAY_REMOVE_A to turn them off again
CODE=0x84 | COUNT=0x01 | DATA0 | RELAY_INDEX | 0..7: X, 8..15: Y, 16: BAL, 17: LOAD, 0x40: all X, 0x80: all Y, 0xC0 all X & Y |
RELAY_ADD_B
Type: Individual Command,
Response: RELAY_STATUS_B
Description: Turn on an individual relay on Bus B. This command addresses each relay individually by a zero indexed number, so 0x00 turns on relay 1 etc. It is also possible to use this command to turn on all the relays in group X and/or Y or the balance and load resistors. This command only turns relays on. See RELAY_REMOVE_B to turn them off again
CODE=0x85 | COUNT=0x01 | DATA0 | RELAY_INDEX | 0..7: X, 8..15: Y, 16: BAL, 17: LOAD, 0x40: all X, 0x80: all Y, 0xC0 all X & Y |
RELAY_REMOVE_A
Type: Individual Command
Response: RELAY_STATUS_A
Description: Turn off an individual relay on Bus A. This command addresses each relay individually by a zero indexed number, so 0x00 turns off relay 1 etc. It is also possible to use this command to turn off all the relays in group X and/or Y or the balance and load resistors. This command only turns relays off. See RELAY_ADD_A to turn them on.
CODE=0x86 | COUNT=0x01 | DATA0 | RELAY_INDEX | 0..7: X, 8..15: Y, 16: BAL, 17: LOAD, 0x40: all X, 0x80: all Y, 0xC0 all X & Y |
RELAY_REMOVE_B
Type: Individual Command
Response: RELAY_STATUS_B
Description: Turn off an individual relay on Bus B. This command addresses each relay individually by a zero indexed number, so 0x00 turns off relay 1 etc. It is also possible to use this command to turn off all the relays in group X and/or Y or the balance and load resistors. This command only turns relays off. See RELAY_ADD_B to turn them on.
CODE=0x87 | COUNT=0x01 | DATA0 | RELAY_INDEX | 0..7: X, 8..15: Y, 16: BAL, 17: LOAD, 0x40: all X, 0x80: all Y, 0xC0 all X & Y |
RELAY_STATUS_A
Type: Individual Command
Response: RELAY_STATUS_A
Description: Requests an I/O switcher to return the status of all its relays on Bus A
CODE=0x88 | COUNT=0x00 |
RELAY_STATUS_B
Type: Individual Command
Response: RELAY_STATUS_B
Description: Requests an I/O switcher to return the status of all its relays on Bus B
CODE=0x89 | COUNT=0x00 | Request Channel B status of device |
RELAY_AUX_A
Type: Individual Command
Response: RELAY_STATUS_A
Description: Turns the Bus A balance and load relays on or off
CODE=0x8A | COUNT=0x01 | DATA0 | AUX_A: Bit0: BAL, Bit1: LOAD | 1s where relays set |
RELAY_AUX_B
Type: Individual Command
Response: RELAY_STATUS_B
Description: Turns the Bus B balance and load relays on or off
CODE=0x8B | COUNT=0x01 | DATA0 | AUX_B: Bit0: BAL, Bit1: LOAD | 1s where relays set |
RELAY_MASK_X_TO_A
Type: Individual Command.
Response: RELAY_STATUS_X_TO_A
Description: Sets the state of the X group relays on Bus A
CODE=0x8C | COUNT=0x01 | DATA0 | X to A | 1s where relays set |
RELAY_MASK_X_TO_B
Type: Individual Command.
Response: RELAY_STATUS_X_TO_B
Description: Sets the state of the X group relays on Bus B
CODE=0x8D | COUNT=0x01 | DATA0 | X to B | 1s where relays set |
RELAY_MASK_Y_TO_A
Type: Individual Command.
Response: RELAY_STATUS_Y_TO_A
Description: Sets the state of the Y group relays on Bus A
CODE=0x8E | COUNT=0x01 | DATA0 | Y to A | 1s where relays set |
RELAY_MASK_Y_TO_B
Type: Individual Command.
Response: RELAY_STATUS_Y_TO_B
Description: Sets the state of the Y group relays on Bus B
CODE=0x8F | COUNT=0x01 | DATA0 | Y to B | 1s where relays set |
GET_DC_A
Type: Individual Command, Response Requested.
Response: DC_STATUS_A
Description: Requests the DC voltage measured on Bus A
CODE=0x90 | COUNT=0x00 |
GET_DC_B
Type: Individual Command, Response Requested.
Response: DC_STATUS_B
Description: Requests the DC voltage measured on Bus B
CODE=0x91 | COUNT=0x00 |
GET_DC_AB
Type: Individual Command, Response Requested.
Response: DC_STATUS_AB
Description: Requests the DC voltage measured on both Bus A and Bus B
CODE=0x92 | COUNT=0x00 |
RELAY_STATUS_ALL
Type: Response
Response: None
Description: Gives the status of all the relays
CODE=0x80 | COUNT=0x06 | DATA0 | X to A | binary: 1s where relays set |
DATA1 | Y to A | binary: 1s where relays set | ||
DATA2 | AUX_A: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set | ||
DATA3 | X to B | binary: 1s where relays set | ||
DATA4 | Y to B | binary: 1s where relays set | ||
DATA5 | AUX_B: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set |
RELAY_STATUS_A
Type: Response
Response: None
Description: Gives the status of all the relays on Bus A
CODE=0x81 | COUNT=0x03 | DATA0 | X to A | binary: 1s where relays set |
DATA1 | Y to A | binary: 1s where relays set | ||
DATA2 | AUX_A: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set |
RELAY_STATUS_B
Type: Response
Response: None
Description: Gives the status of all the relays on Bus B
CODE=0x82 | COUNT=0x03 | DATA0 | X to B | binary: 1s where relays set |
DATA1 | Y to B | binary: 1s where relays set | ||
DATA2 | AUX_B: Bit0: BAL, Bit1: LOAD | binary: 1s where relays set |
RELAY_STATUS_X_TO_A
Type: Response
Response: None
Description: Gives state of the X group relays on Bus A
CODE=0x83 | COUNT=0x01 | DATA0 | X to A | 1s where relays set |
RELAY_STATUS_X_TO_B
Type: Response
Response: None
Description: Gives state of the X group relays on Bus B
CODE=0x84 | COUNT=0x01 | DATA0 | X to B | 1s where relays set |
RELAY_STATUS_Y_TO_A
Type: Response
Response: None
Description: Gives state of the Y group relays on Bus A
CODE=0x85 | COUNT=0x01 | DATA0 | Y to A | 1s where relays set |
RELAY_STATUS_Y_TO_B
Type: Response
Response: None
Description: Gives state of the Y group relays on Bus B
CODE=0x86 | COUNT=0x01 | DATA0 | Y to B | 1s where relays set |
DC_STATUS_A
Type: Response
Response: None
Description: Gives DC voltage reading on Bus A
CODE=0x87 | COUNT=0x02 | DATA0 | A+_TO_GND | Hex byte where 80 = 0VDC |
DATA1 | A-_TO_GND | Hex byte where 80 = 0VDC |
DC_STATUS_B
Type: Response
Response: None
Description: Gives DC voltage reading on Bus B
CODE=0x88 | COUNT=0x02 | DATA0 | B+_TO_GND | Hex byte where 80 = 0VDC |
DATA1 | B-_TO_GND | Hex byte where 80 = 0VDC |
DC_STATUS_AB
Type: Response
Response: None
Description: Gives DC voltage readings on Bus A and Bus B
CODE=0x89 | COUNT=0x04 | DATA0 | A+_TO_GND | Hex byte where 80 = 0VDC |
DATA1 | A-_TO_GND | Hex byte where 80 = 0VDC | ||
DATA2 | B-_TO_GND | Hex byte where 80 = 0VDC | ||
DATA3 | B-_TO_GND | Hex byte where 80 = 0VDC |
VSIO specific Commands and Responses
Please note that the command tables below do not attempt to show the command structure. This is given above. In particular, please be aware that the CODE and COUNT columns are not in the order in which they are sent.
GET_UNIT_STATUS
Type: Individual Command, Response Requested.
Response: UNIT_STATUS
Description: Request the status of a device
CODE=0xC0 | COUNT=0x00 |
RELAY_CTRL
Type: Individual Command.
Response: SHORT_ACK
Description: Control the state of the relays used for routing within a VSIO
CODE=0xC1 | COUNT=0x01 | DATA0 | Bit[2]: GEN_THRU | Generator AES Pass Thru, PASS=0 |
Bit[1]: ANA_THRU | Analyser AES Pass Thru, PASS=0 | |||
Bit[0]: REF_THRU | Ref Sync AES Pass Thru, PASS=0 |
IO_CTRL
Type: Individual Command
Response: SHORT_ACK
Description: Set the hardware I/O parameters such as voltage levels and enabling/disabling I/O
CODE=0xC2 | COUNT=0x01 | DATA0 | Bit[7]: CTRL_EN | Enable Control Outputs, ON=1 |
Bit[6..4]: CTRL_VSEL | Control IO Voltage Select, 1V8=000, 2V5=001, 3V3=010 | |||
Bit[3]: AUD_EN | Enable Audio Outputs, ON=1 | |||
Bit[2..0]: AUD_VSEL | Audio IO Voltage Select, 1V8=000, 2V5=001, 3V3=010 |
GEN_ROUTE
Type: Individual Command
Response: SHORT_ACK
Description: Set up the Generator routing parameters
CODE=0xC3 | COUNT=0x04 | DATA0 | ON_15_8 | Slot 15 to 8 Enable, ON=1 |
DATA1 | ON_7_0 | Slot 7 to 0 Enable, ON=1 | ||
DATA2 | AB_15_8 | Slot 15 to 8 AB Select, B=1 | ||
DATA3 | AB_7_0 | Slot 7 to 0 AB Select, B=1 |
GEN_FORMAT
Type: Individual Command
Response: SHORT_ACK
Description: Set up the Generator serial data parameters
CODE=0xC4 | COUNT=0x03 | DATA0 | Bit[7]: SIGN_EXT | Sign Extend, ON=1 |
Bit[6]: X | ||||
Bit[5..4]: SLOT_LEN | Slot Length, 8=00, 16=01, 24=10, 32=11 | |||
Bit[3]: LSB_FIRST | LSB First Operation, ON=1 | |||
Bit[2]: X | ||||
Bit[1..0]: N_CHAN | Chans / Wire, 2=00, 4=01, 8=10, 16=11 | |||
DATA1 | LEAD_PAD | Lead Pad Length, 0 to 31 | ||
DATA2 | TRAIL_PAD | Trail Pad Length, 0 to 31 |
GEN_CLOCKS
Type: Individual Command
Response: SHORT_ACK
Description: Set up the Generator clocks
CODE=0xC5 | COUNT=0x02 | DATA0 | Bit[7]: MCK_DIR | Master Clock Direction, IN=1 |
Bit[6]: MCK_USE | Use Master Clock, YES=1 | |||
Bit[5..3]: X | ||||
Bit[2..0]: MCK_RATE | 64fs=000, 96fs, 128fs, 192fs, 256fs, 384fs, 512fs=110 | |||
DATA1 | Bit[7]: SCK_DIR | Serial Clocks Direction, IN=1 | ||
Bit[6]: SCK_INV | Invert Bit Clock, INV=1 | |||
Bit[5]: LRCK_BIT | Bit Wide LR Clock, BIT=1 | |||
Bit[4]: LRCK_EARLY | Early LR Clock, EARLY=1 | |||
Bit[3]: LRCK_INV | Invert LR Clock, INV=1 | |||
Bit[2..0]: X |
ANA_ROUTE
Type: Individual Command.
Response: SHORT_ACK
Description: Set up the Analyzer routing
CODE=0xC6 | COUNT=0x02 | DATA0 | A_SOURCE | Channel A Source, Slot 0 to 15 |
DATA1 | B_SOURCE | Channel B Source, Slot 0 to 15 |
ANA_FORMAT
Type: Individual Command.
Response: SHORT_ACK
Description: Set up the Analyzer serial data parameters
CODE=0xC7 | COUNT=0x02 | DATA0 | Bit[7..6]: X | |
Bit[5..4]: SLOT_LEN | Slot Length, 8=00, 16=01, 24=10, 32=11 | |||
Bit[3]: LSB_FIRST | LSB First Operation, ON=1 | |||
Bit[2]: X | ||||
Bit[1..0]: N_CHAN | Chans / Wire, 2=00, 4=01, 8=10, 16=11 | |||
DATA1 | LEAD_PAD | Lead Pad Length, 0 to 31 | ||
DATA2 | TRAIL_PAD | Trail Pad Length, 0 to 31 |
ANA_CLOCKS
Type: Individual Command
Response: SHORT_ACK
Description: Set up the Analyzer clocks
CODE=0xC8 | COUNT=0x02 | DATA0 | Bit[7]: MCK_DIR | Master Clock Direction, IN=1 |
Bit[6]: MCK_USE | Use Master Clock, YES=1 | |||
Bit[5..3]: X | ||||
Bit[2..0]: MCK_RATE | 64fs=000, 96fs, 128fs, 192fs, 256fs, 384fs, 512fs=110 | |||
DATA1 | Bit[7]: SCK_DIR | Serial Clocks Direction, IN=1 | ||
Bit[6]: SCK_INV | Invert Bit Clock, INV=1 | |||
Bit[5]: LRCK_BIT | Bit Wide LR Clock, BIT=1 | |||
Bit[4]: LRCK_EARLY | Early LR Clock, EARLY=1 | |||
Bit[3]: LRCK_INV | Invert LR Clock, INV=1 | |||
Bit[2..0]: X |
CTRL_MODE
Type: Individual Command
Response: SHORT_ACK
Description: Set up the Control port mode
CODE=0xC9 | COUNT=0x01 | DATA0 | Bit[7..3]: X | |
Bit[2]: CPOL | SPI Clock Polarity | |||
Bit[1]: CPHA | SPI Clock Phase | |||
Bit[0]: SPI / I2C | SPI=0 / I2C=1 |
CTRL_SPI_TX
Type: Individual Command
Response: CTRL_SPI_RX
Description: Transmit an SPI command
CODE=0xCA | COUNT=n | DATA0 | DATA[0] | n Data bytes to transmit (n=1..10) |
DATAN-1 | DATA[N-1] |
CTRL_I2C_WR
Type: Individual Command
Response: SHORT_ACK
Description: Write to an I2C device
CODE=0xCB | COUNT=n+1 | DATA0 | SLAVE ADDRESS | I2C Device Address |
DATA1 | DATA[0] | n Data bytes to transmit (n=1..10) | ||
DATAN | DATA[N-1] |
CTRL_I2C_RD
Type: Individual Command
Response: CTRL_I2C_RX
Description: Read from an I2C device
CODE=0xCC | COUNT=0x02 | DATA0 | SLAVE ADDRESS | I2C Device Address |
DATA1 | COUNT | Number of bytes to read (1..10) | ||
DATAN | DATA[N-1] |
GET_FS
Type: Individual Command, Response Requested.
Response: MEAS_FS
Description: Get the sample rate
CODE=0xCD | COUNT=0x00 |
SET_DELAYS
Type: Individual Command, Response Requested.
Response: SHORT_ACK
Description: Set delays
CODE=0xCE | COUNT=0x00 | DATA0 | Bit[7]: X | Delay value 0...7 |
Bit[3]: X | ||||
DATAN | DATA[N-1] | |||
DATAN | Bit[2..0]: Generator | Delay value 0...7 |
UNIT_STATUS
Type: Response
Response: None
Description: Gives complete status of a VSIO device
CODE=0xC0 | COUNT=0x11 | DATA0 | Bit[2]: GEN_THRU | Generator AES Pass Thru, PASS=0 |
Bit[1]: ANA_THRU | Analyser AES Pass Thru, PASS=0 | |||
Bit[0]: REF_THRU | Ref Sync AES Pass Thru, PASS=0 | |||
DATA1 | Bit[7]: CTRL_EN | Enable Control Outputs, ON=1 | ||
Bit[6..4]: CTRL_VSEL | Control IO Voltage Select, 1V8=000, 2V5=001, 3V3=010 | |||
Bit[3]: AUD_EN | Enable Audio Outputs, ON=1 | |||
Bit[2..0]: AUD_VSEL | Audio IO Voltage Select, 1V8=000, 2V5=001, 3V3=010 | |||
Generator | ||||
DATA2 | ON_15_8 | Slot 15 to 8 Enable, ON=1 | ||
DATA3 | ON_7_0 | Slot 7 to 0 Enable, ON=1 | ||
DATA4 | AB_15_8 | Slot 15 to 8 AB Select, B=1 | ||
DATA5 | AB_7_0 | Slot 7 to 0 AB Select, B=1 | ||
DATA6 | Bit[7]: SIGN_EXT | Sign Extend, ON=1 | ||
Bit[6]: X | ||||
Bit[5..4]: SLOT_LEN | Slot Length, 8=00, 16=01, 24=10, 32=11 | |||
Bit[3]: LSB_FIRST | LSB First Operation, ON=1 | |||
Bit[2]: X | ||||
Bit[1..0]: N_CHAN | Chans / Wire, 2=00, 4=01, 8=10, 16=11 | |||
DATA7 | LEAD_PAD | Lead Pad Length, 0 to 31 | ||
DATA8 | TRAIL_PAD | Trail Pad Length, 0 to 31 | ||
DATA9 | Bit[7]: MCK_DIR | Master Clock Direction, IN=1 | ||
Bit[6]: MCK_USE | Use Master Clock, YES=1 | |||
Bit[5..3]: X | ||||
Bit[2..0]: MCK_RATE | 64fs=000, 96fs, 128fs, 192fs, 256fs, 384fs, 512fs=110 | |||
DATA10 | Bit[7]: SCK_DIR | Serial Clocks Direction, IN=1 | ||
Bit[6]: SCK_INV | Invert Bit Clock, INV=1 | |||
Bit[5]: LRCK_BIT | Bit Wide LR Clock, BIT=1 | |||
Bit[4]: LRCK_EARLY | Early LR Clock, EARLY=1 | |||
Bit[3]: LRCK_INV | Invert LR Clock, INV=1 | |||
Bit[2..0]: LRCK_RATE | 32k=001, 44k1, 48k, 88k2, 96k, 176k4, 192k=111 | |||
Analyser | ||||
DATA11 | A_SOURCE | Channel A Source, Slot 0 to 15 | ||
DATA12 | B_SOURCE | Channel B Source, Slot 0 to 15 | ||
DATA13 | Bit[7..6]: X | |||
Bit[5..4]: SLOT_LEN | Slot Length, 8=00, 16=01, 24=10, 32=11 | |||
Bit[3]: LSB_FIRST | LSB First Operation, ON=1 | |||
Bit[2]: X | ||||
Bit[1..0]: N_CHAN | Chans / Wire, 2=00, 4=01, 8=10, 16=11 | |||
DATA14 | LEAD_PAD | Lead Pad Length, 0 to 31 | ||
DATA15 | TRAIL_PAD | Trail Pad Length, 0 to 31 | ||
DATA16 | Bit[7]: MCK_DIR | Master Clock Direction, IN=1 | ||
Bit[6]: MCK_USE | Use Master Clock, YES=1 | |||
Bit[5..3]: X | ||||
Bit[2..0]: MCK_RATE | 64fs=000, 96fs, 128fs, 192fs, 256fs, 384fs, 512fs=110 | |||
DATA17 | Bit[7]: SCK_DIR | Serial Clocks Direction, IN=1 | ||
Bit[6]: SCK_INV | Invert Bit Clock, INV=1 | |||
Bit[5]: LRCK_BIT | Bit Wide LR Clock, BIT=1 | |||
Bit[4]: LRCK_EARLY | Early LR Clock, EARLY=1 | |||
Bit[3]: LRCK_INV | Invert LR Clock, INV=1 | |||
Bit[2..0]: LRCK_RATE | 32k=001, 44k1, 48k, 88k2, 96k, 176k4, 192k=111 | |||
Control | ||||
DATA18 | Bit[7..3]: X | |||
Bit[2]: CPOL | SPI Clock Polarity | |||
Bit[1]: CPHA | SPI Clock Phase | |||
Bit[0]: SPI / I2C | SPI=0 / I2C=1 |
CTRL_SPI_RX
Type: Response
Response: None
Description: SPI control message response
CODE=0xCA | COUNT=n | DATA0 | DATA[0] | n Data bytes received (n=1..10) |
DATAN-1 | DATA[N-1] |
CTRL_I2C_RX
Type: Response
Response: None
Description: Response to a request to read from an I2C device
CODE=0xCC | COUNT=n | DATA0 | DATA[0] | n Data bytes received (n=1..10) |
DATAN-1 | DATA[N-1] |
MEAS_FS
Type: Response
Response: None
Description: Sample rate returned from VSIO device
CODE=0xCD | COUNT-0x01 | DATA0 | Bit[7..4] | Analyzer FS 32k=001, 44k1, 48k, 88k2, 96k, 176k4, 192k=111 |
Bit[3..0] | Generator FS 32k=001, 44k1, 48k, 88k2, 96k, 176k4, 192k=111 |
SHORT_ACK
Type: Response
Response: None
Description: Acknowledgement of command
CODE=0xCF | COUNT-0x00 |