Skip to content

XU316 USB HiFi Decoder Zero-Code Product Configuration Protocol

Protocol Overview

Functional Positioning and Scope

This document provides a detailed description of the configuration protocol for communication between the XU316 USB HiFi decoder zero-code product and MCU via UART. The protocol offers a complete functional set for audio device configuration, status monitoring, and media control.

I. Protocol Basic Specification

1.1 Underlying Communication Protocol

Based on UART (Universal Asynchronous Receiver/Transmitter) Protocol

Parameter Value
Baud Rate 115200 bps
Data Bits 8
Parity None
Stop Bits 1
Flow Control None

1.2 Frame Format and Data Transmission

Generic Frame Format

All commands and responses follow this frame format:

Field Bytes Description
Frame Header 2 Fixed as 0x55aa
Version 1 Protocol version number
Command 1 Indicates frame function
Data Length 1 Length N of subsequent data, excluding final checksum byte
Data N Actual data content
Checksum 1 Byte-wise sum from frame header, modulo 256

Data Transmission Notes

All multi-byte data uses big-endian transmission. Example data in protocol is shown in hexadecimal.

1.3 Communication Mechanism

1.3.1 Acknowledgment Mechanism

Acknowledgment and Timeout Handling

  • All commands require acknowledgment from the receiver
  • Default command timeout is 300ms, timeout results in communication failure
  • Special commands may have different timeout values, specified in respective command descriptions

1.3.2 Retry and Fault Tolerance Mechanism

flowchart TD
    A[Send Command] --> B{Wait for Response}
    B -->|Timeout| C[Resend Command]
    C --> D{Retry Count<4?}
    D -->|Yes| B
    D -->|No| E[Use Default Configuration]
    B -->|Response Received| F[Process Response]

II. Device Startup and Initialization

2.1 Startup Interaction Flow

sequenceDiagram
    participant XU316
    participant MCU
    participant Flash

    rect
        Note over XU316,Flash: System Loader Firmware


        rect
            Note over XU316,MCU: Power-On Startup Phase
            XU316->>MCU: Send Startup Command (0x00)
            Note over XU316:
            alt Timeout without response (max 4 attempts, enters USB->I2S mode if all fail)
                XU316->>MCU: Resend Startup Command (0x00)
            end
            MCU-->>XU316: Return Startup Options
            Note over XU316: Parse Startup Options
        end

        rect
            Note over XU316,Flash: Basic Information Update Phase
            alt Startup option excludes 0x01 (no basic product info update)
                XU316->>Flash: Read Basic Product Info
                Flash-->>XU316: Return Basic Product Info
            else Startup option includes 0x01 (update basic product info) or Flash data incomplete
                XU316->>MCU: Send Read Basic Product Info Command (0x01)
                MCU-->>XU316: Return New Basic Product Info
                XU316->>Flash: Save Configuration
            end
        end

        rect
            Note over XU316,Flash: Power-On Configuration Phase
            alt Startup option excludes 0x02 (no power-on config update)
                XU316->>Flash: Read Power-On Config
                Flash-->>XU316: Return Power-On Config Data
            else Startup option includes 0x02 (update power-on config) or Flash data incomplete
                XU316->>MCU: Send Get Power-On Config Command (0x02)
                MCU-->>XU316: Return New Power-On Config
                XU316->>Flash: Save New Power-On Config
            end
        end

        rect
            Note over XU316: Loading Application Mode Phase
            XU316->>MCU: Send Get Current Mode Command (0x03)
            MCU-->>XU316: Return Current Mode
            Note over XU316: Load corresponding mode based on current mode
         end

    end

    rect
        Note over XU316,MCU: APP Running Phase
        XU316->>MCU: Get Current User Config Command (0x04)
        MCU-->>XU316: Return Current User Config
        Note over XU316: Initialize APP and apply current user config
        XU316->>MCU: Send Startup Complete Command (0x05)
        MCU-->>XU316: Return Complete Command Response
        par Parallel Processing
            loop Status Reporting
                XU316->>MCU: Send on status change or 15s timer
            end
            loop Business Processing
                MCU->>XU316: Send business commands
                XU316-->>MCU: Respond to business commands
            end
        end
    end

2.2 Detailed Startup Flow Description

  1. XU316 sends startup command (command 0x00) to MCU upon power-on, containing:
    • UAC1.0 VID/PID
    • UAC2.0 VID/PID
    • Basic info CRC
    • Power-on config info CRC
  2. MCU receives startup command, checks if info needs update, sends response
  3. XU316 waits for MCU response
  4. If timeout without response, XU316 resends startup command up to 4 times
  5. If still no response, loads default USB configuration and enumerates USB
  6. If normal response received, XU316 parses startup options

Execution Condition: Startup option includes 0x01 (update basic product info)

Steps:

  1. XU316 sends 0x01 command to request basic product info
  2. MCU returns new basic product info to XU316
  3. XU316 updates and saves config to internal storage

Execution Condition: Startup option includes 0x02 (update power-on config) or Flash data incomplete

Steps:

  1. XU316 sends 0x02 command to request power-on config
  2. MCU returns new power-on config to XU316
  3. XU316 updates and saves config to internal storage

Steps:

  1. XU316 sends 0x03 command to get current input/output mode
  2. MCU returns current mode info to XU316
  3. XU316 loads corresponding input/output mode based on returned mode

Steps:

  1. XU316 sends 0x04 command to get current user config
  2. MCU returns current user config to XU316
  3. XU316 initializes application and applies relevant config
  4. XU316 sends 0x05 command to indicate startup complete
  5. MCU returns acknowledgment response

III. Protocol Command Set

3.1 Command Classification Overview

Command Command Description Direction
0x00 Startup XU316→MCU
0x01 Read Product Info XU316→MCU
0x02 Read Power-On Config XU316→MCU
0x03 Get Current Input/Output Mode XU316→MCU
0x04 Get Current User Config XU316→MCU
0x05 Startup Complete XU316→MCU
Command Command Description Direction
0x20 Report Application Status XU316→MCU
0x21 Media Control MCU→XU316
0x22 Report Playback Audio Stream Format and Type XU316→MCU
0x23 Set Input/Output Mode MCU→XU316
0x24 Send Playback Volume MCU→XU316
0x25 Send Recording Volume MCU→XU316
0x26 Switch MCLK MCU→XU316
Command Command Description Direction
0xEE HID-initiated transparent transmission to MCU via XU316 XU316→MCU
Command Command Description Direction
0xF0 DAC Configuration Selection MCU→XU316

Command Usage Instructions

  1. All commands must follow basic frame format specification
  2. Each command requires acknowledgment from receiver to be considered successful
  3. Business control commands (0x20 and above) can only be used after device startup completion

3.2 Basic Function Command Details

3.2.1 Startup (0x00)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x00
Data Length:     1 byte  - 17
Data:            17 bytes
                 B0:     Restart reason (0x00 power-on, 0x01 mode switch, 0xFF other)
                 B1-2:   USB Vendor ID (UAC1.0)
                 B3-4:   USB Product ID (UAC1.0)
                 B5-6:   USB Vendor ID (UAC2.0)
                 B7-8:   USB Product ID (UAC2.0)
                 B9-12:  Basic info 32-bit CRC
                 B13-16: Power-on config info 32-bit CRC
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x00
Data Length:     1 byte  - 0x1
Data:            1 byte
                 B0: Startup options
                     0x00 Use all default info
                     0x01 Need to update basic product info
                     0x02 Need to update power-on config
                     0x04 Need to update other config
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  1. This command is sent first by XU316 upon power-on or restart to inform MCU that device has started
  2. XU316 sends current stored product info CRC and config info CRC to MCU
  3. MCU compares CRC to determine if XU316 config info needs update
  4. MCU uses startup option field in response to inform XU316 of subsequent operations
flowchart TB
    A[XU316 Startup] -->B[Send 0x00 Command]
    B -->C{MCU Response}
    C -->|Timeout| D[Resend Command]
    D -->E{Retry Count<4?}
    E -->|Yes| C
    E -->|No| F[Use Default Config]
    C -->|Normal Response| G[Parse Startup Options]
    G -->|0x01| H[Update Basic Product Info]
    G -->|0x02| I[Update Power-On Config]
    G -->|0x04| J[Update Other Config]
    G -->|0x00| K[Continue Startup Flow]
  • If MCU has no response, XU316 will use stored default config to continue startup
  • Restart reason field can be used by MCU to identify specific reason for XU316 restart for different handling
  • When multiple items need update, MCU can combine multiple options via bitwise operations

3.2.2 Read Product Info (0x01)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x01
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x01
Data Length:     1 byte  - 0x3C (60 bytes)
Data:            60 bytes - Product basic info, see data field description
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by XU316 to get product basic info such as VID/PID, product name, etc.
  • Execution condition: Startup option includes 0x01 flag or product info CRC mismatch
  • XU316 updates internal stored product basic info after receiving this info

Product basic info data structure (60 bytes):

VID1 (UAC1.0):        2 bytes
PID1 (UAC1.0):        2 bytes
VID2 (UAC2.0):        2 bytes
PID2 (UAC2.0):        2 bytes
ManufactureName:     16 bytes (string)
ProductName:         16 bytes (string)
SerialNumber:        16 bytes (string)
CRC:                  4 bytes (32-bit CRC checksum)

3.2.3 Read Power-On Config (0x02)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x02
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x02
Data Length:     1 byte  - 0x0E (14 bytes)
Data:            14 bytes - Power-on config info, see Section 4.1
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by XU316 to get initial power-on config info
  • Execution condition: Startup option includes 0x02 flag or power-on config CRC mismatch
  • XU316 sets default input/output mode, volume, and other parameters based on this config info

Power-on config info data structure (14 bytes):

Default Input/Output Mode:     5 bytes
Mute Duration:                 2 bytes (0-65535ms)
Microphone Default Volume:     1 byte
DAC Left Channel Default Vol:  1 byte
DAC Right Channel Default Vol: 1 byte
CRC:                           4 bytes (32-bit CRC checksum)

3.2.4 Get Current Input/Output Mode (0x03)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x03
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x03
Data Length:     1 byte  - 0x05 (5 bytes)
Data:            5 bytes - Input/output mode, see data field section
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by XU316 during startup to query current input/output mode to enable
  • XU316 loads corresponding application firmware based on returned mode
  • This command is used for mode matching and confirmation during device startup

3.2.5 Get Current User Config (0x04)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x04
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x04
Data Length:     1 byte  - 0xE (14 bytes)
Data:            14 bytes - User config parameters, see Section 4.1
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by XU316 to get current user-selected volume, mode, and other config
  • Executed after application firmware loading and before application startup
  • Application initializes corresponding parameters based on returned info

3.2.6 Startup Complete (0x05)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x05
Data Length:     1 byte  - N
Data:            N bytes
                 B0: Startup status (0 success, 1 mode mismatch, other values failure)
                 B1-BN: Application runtime parameters, see Section 4.1
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x05
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command indicates XU316 startup flow is complete and ready to begin normal operation
  • Contains startup status info to inform MCU if startup succeeded or encountered problems
  • All subsequent business commands can only be used after this command is sent successfully

3.3 Business Control Command Details

Usage Prerequisites

The following commands can only be used after XU316 startup completion (after sending 0x05 command and receiving response)

3.3.1 Report Application Status (0x20)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x20
Data Length:     1 byte  - N
Data:            N bytes - Application runtime parameters, see Section 4.1
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x20
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by XU316 to report current application status to MCU
  • Typically sent when status changes, such as volume change, mode switch, etc.
  • MCU can update UI display or adjust related functions based on this info

3.3.2 Media Control (0x21)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x21
Data Length:     1 byte  - 0x01 (1 byte)
Data:            1 byte  - Media control command
                 0x00 Volume Up / Vol Up
                 0x01 Volume Down / Vol Down
                 0x02 Play/Pause / PLAY/PAUSE
                 0x03 Next Track / NEXT
                 0x04 Previous Track / PREV
                 0x05 Fast Forward / FORWARD
                 0x06 Rewind / REWIND
                 0x07 Mute / MUTE
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x21
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by MCU to send media control commands to XU316
  • XU316 converts received commands to corresponding HID commands and sends to PC
  • Suitable for implementing remote control or physical button media playback control
Control Code Function USB HID Usage
0x00 Volume Up Increase system volume
0x01 Volume Down Decrease system volume
0x02 Play/Pause Control media playback state
0x03 Next Track Switch to next track
0x04 Previous Track Switch to previous track
0x05 Fast Forward Fast forward in current track
0x06 Rewind Rewind in current track
0x07 Mute Toggle system mute state

3.3.3 Report Playback Audio Stream Format and Type (0x22)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x22
Data Length:     1 byte  - 0x02 (2 bytes)
Data:            2 bytes - Audio stream format and type, see audio stream format and type field
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x22
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by XU316 to report current audio stream format and type to MCU
  • Typically sent when playback starts or format changes
  • MCU can update display based on this info, such as displaying PCM/DSD/MQA/DOP status

3.3.4 Set Input/Output Mode (0x23)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x23
Data Length:     1 byte  - 0x05 (5 bytes)
Data:            5 bytes - Input/output mode, see input/output mode field
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x23
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by MCU to request XU316 to switch to specific input/output mode
  • Typically triggered by user operation, such as pressing mode selection button
  • XU316 may need to restart to load new mode firmware

3.3.5 Send Playback Volume (0x24)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x24
Data Length:     1 byte  - 0x02 (2 bytes)
Data:            2 bytes
                 Byte 1: Left channel (0xFF Mute, 0-0dB, -127: -127dB)
                 Byte 2: Right channel (0xFF Mute, 0-0dB, -127: -127dB)
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x24
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by MCU to set current playback volume to XU316

3.3.6 Send Recording Volume (0x25)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x25
Data Length:     1 byte  - 0x01 (1 byte)
Data:            1 byte  - 0xFF Mute, 0-0dB -127: -127dB
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x25
Data Length:     1 byte  - 0x00
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by MCU to set current microphone recording volume to XU316

3.3.7 Switch MCLK (0x26)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x26
Data Length:     1 byte  - 1
Data:            1 byte  - 0: Internal MCLK, 1: External MCLK
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x26
Data Length:     1 byte  - 0
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used by XU316 to control master clock source switching
  • Can switch between internal clock or external clock
  • Important for certain audio applications requiring precise synchronization

3.3.8 Set Unmute (0x27)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x27
Data Length:     1 byte  - 2
Data:            2 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x27
Data Length:     1 byte  - 0
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • DAC unmute time delay during mode switching, unit is milliseconds

3.3.9 Send Audio Format Time Delay (0x28)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0x28
Data Length:     1 byte  - 2
Data:            2 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0x28
Data Length:     1 byte  - 0
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • Send audio format time delay

3.3.10 Get Firmware Version (0xF1)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0xF1
Data Length:     1 byte  - 2
Data:            2 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0xF1
Data Length:     1 byte  - 0
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • Get firmware version

3.4 DAC Configuration Selection (0xF0)

MCU Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0xF0
Data Length:     1 byte  - 4
Data:            4 bytes
                 Byte 0: 0: Enable I2C DAC configuration  1: Disable I2C DAC configuration
                 Byte 1 - 3: reserved
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

XU316 Returns

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0xF0
Data Length:     1 byte  - 0
Data:            0 bytes
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • Test command for MCU to set DAC configuration selection to XU316. Let XU316 configure DAC through DAC I2C or MCU configure DAC itself
  • This command is product-specific and not supported by all products. Refer to product specification for specific support details.

3.5 HID and MCU Transparent Data Transmission Commands via XU316

3.5.1 HID Transparent Transmission to MCU via XU316 (0xEE)

XU316 Sends

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x00
Command:         1 byte  - 0xEE
Data Length:     1 byte  - 0x39 (57 bytes), due to HID protocol limitation, data length must be 57 bytes
Data:            57 bytes - Due to HID protocol limitation, must be 57 bytes transparent data
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

MCU Returns (can return multiple frames)

Frame Header:    2 bytes - 0x55aa
Version:         1 byte  - 0x03
Command:         1 byte  - 0xEE
Data Length:     1 byte  - 0x39 (57 bytes), due to HID protocol limitation, data length must be 57 bytes
Data:            57 bytes - Due to HID protocol limitation, must be 57 bytes transparent data
Checksum:        1 byte  - Byte-wise sum from frame header, modulo 256

  • This command is used for HID-initiated transparent data transmission to MCU via XU316
  • Typically transparent data is MCU OTA data or MCU data reply to HID

IV. Data Structure Definition

4.1 Product Configuration Data Structure

Field Bytes Description
VID1 2 USB Vendor ID (UAC1.0)
PID1 2 USB Product ID (UAC1.0)
VID2 2 USB Vendor ID (UAC2.0)
PID2 2 USB Product ID (UAC2.0)
ManufactureName 16 USB Manufacturer Name (string, max 16 bytes)
ProductName 16 USB Product Name (string, max 16 bytes)
SerialNumber 16 Product Serial Number (string, max 16 bytes)
CRC 4 32-bit CRC checksum calculated over all fields

CRC Usage Instructions

MCU can determine whether basic product info needs update based on CRC value returned by XU316. When CRC mismatch occurs, complete basic product info should be sent.

Field Bytes Description
Default Input/Output Mode 5 See input/output mode field description
Mute Duration 2 0-65535 (ms)
Microphone Default Volume 1 See microphone volume field description
DAC Left Channel Default Volume 1 See DAC volume field description
DAC Right Channel Default Volume 1 See DAC volume field description
CRC 4 32-bit CRC checksum calculated over all fields
Field Bytes Description
Input/Output Mode 5 See input/output mode field description
Mute Duration 2 0-65535 (ms)
Microphone Volume 1 See microphone volume field description
DAC Left Channel Volume 1 See DAC volume field description
DAC Right Channel Volume 1 See DAC volume field description
CRC 4 32-bit CRC checksum calculated over all fields
Field Bytes Description
Input/Output Mode 5 See input/output mode field description
Mute Duration 2 0-65535 (ms)
Microphone Volume 1 See microphone volume field description
DAC Left Channel Volume 1 See DAC volume field description
DAC Right Channel Volume 1 See DAC volume field description
CRC 4 32-bit CRC checksum calculated over all fields

4.2 Input/Output Mode Data Format

Byte Function Description
BYTE 0-BYTE4 Specific values defined in product specification

4.3 Control Parameter Data Format

Value Description
0x00 Power-on restart
0x01 Mode switch restart
0xFF Other reason restart
Value Description
0x00 Default mode, use power-on config info parameters at startup
0x01 Power-off memory mode, use user config parameters from MCU at startup

Microphone Volume

Value Description
0xFF Mute
0x00-0xFE Volume value, specific mapping defined by application

DAC Volume

Value Description
0x00 Mute
0x01-0xFF Volume value, specific mapping defined by application
Value Format Parameters
0x00 AUDIO_PCM_44100 44.1kHz PCM
0x01 AUDIO_PCM_48000 48kHz PCM
0x02 AUDIO_PCM_88200 88.2kHz PCM
0x03 AUDIO_PCM_96000 96kHz PCM
0x04 AUDIO_PCM_176400 176.4kHz PCM
0x05 AUDIO_PCM_192000 192kHz PCM
0x06 AUDIO_PCM_352800 352.8kHz PCM
0x07 AUDIO_PCM_384000 384kHz PCM
0x08 AUDIO_PCM_705600 705.6kHz PCM
0x09 AUDIO_PCM_768000 768kHz PCM
0x0A AUDIO_PCM_1441200 1.4112MHz PCM
0x0B AUDIO_PCM_1536000 1.536MHz PCM
0x0C AUDIO_PCM_32000 32kHz PCM
0x0D AUDIO_PCM_64000 64kHz PCM
0x0E AUDIO_PCM_128000 128kHz PCM
0x0F AUDIO_PCM_256000 256kHz PCM
0x10 AUDIO_PCM_512000 512kHz PCM
0x11 AUDIO_DSD_64 DSD64
0x12 AUDIO_DSD_128 DSD128
0x13 AUDIO_DSD_256 DSD256
0x14 AUDIO_DSD_512 DSD512
0x15 AUDIO_DSD_1024 DSD1024
0x16 AUDIO_MQA_44100 44.1kHz MQA
0x17 AUDIO_MQA_88200 88.2kHz MQA
0x18 AUDIO_MQA_176400 176.4kHz MQA
0x19 AUDIO_MQA_352800 352.8kHz MQA
0x1A AUDIO_MQA_705600 705.6kHz MQA
0x1B AUDIO_MQA_1411200 1.4112MHz MQA
0x1C AUDIO_MQA_2822400 2.8224MHz MQA
0x1D AUDIO_MQA_5644800 5.6448MHz MQA
0x1E AUDIO_MQA_48000 48kHz MQA
0x1F AUDIO_MQA_96000 96kHz MQA
0x20 AUDIO_MQA_192000 192kHz MQA
0x21 AUDIO_MQA_384000 384kHz MQA
0x22 AUDIO_MQA_768000 768kHz MQA
0x23 AUDIO_MQA_1536000 1.536MHz MQA
0x24 AUDIO_MQA_3072000 3.072MHz MQA
0x25 AUDIO_MQA_6144000 6.144MHz MQA
0xFF AUDIO_NO_USED Not used
Value Type Description
0x00 PCM Standard PCM audio
0x01 DoP Reserved
0x02 MQA MQA encoded audio
0x03 MQB MQB encoded audio
0x04 MQA_Studio MQA Studio encoded
0x05 DSD Native DSD encoded audio

V. Consultation and Feedback

Click to expand consultation and feedback form
×

Notice

Company Name:

Email Address:

Subject:

Message: