
www.z-linear.comD223的USB通信协议定义了30多个命令码从获取设备参数到启动在线记录从DAC波形输出到PWM电机控制。每个命令码的数据格式是什么请求帧和响应帧有何区别本文是D223通信协议的完整命令字典。一、帧格式回顾1.1 统一帧结构┌──────┬───────┬──────────┬─────────────┬──────┐ │ Head │ CmdId │ FrameLen │ Data │ CRC │ │ 2B │ 1B │ 2B │ N Bytes │ 2B │ │0x55AA│ │ 大端 │ │ 大端 │ └──────┴───────┴──────────┴─────────────┴──────┘帧头0x55 0xAA固定命令ID1字节标识命令类型帧长度2字节大端含CRC的总长度数据段变长按命令不同CRC162字节大端CRC16-Modbus校验1.2 请求帧 vs 响应帧同一命令ID的请求帧和响应帧数据段不同请求帧上位机→采集卡数据段为命令参数响应帧采集卡→上位机数据段为返回数据二、ADC采集命令2.1 获取设备参数 (0x00)方向CmdId说明请求0x00获取ADC/DAC/DIO全部参数响应0x00返回完整参数结构体请求帧: 55 AA 00 00 07 00 [CRC16] 响应帧: 55 AA 00 00 [帧长] [adc_ch_Enable] [signalType] [range] [samplingRate] [trigCh] [trigValue] ... [CRC16]2.2 设置ADC量程 (0x01)请求: 55 AA 01 00 [帧长] [ch] [range(0±5V, 1±10V)] [CRC16] 响应: 无或ACK2.3 设置通道使能 (0x02)请求: 55 AA 02 00 [帧长] [ch_Enable(BIT0~7)] [CRC16] 响应: 无 示例: 55 AA 02 00 08 00 FF 55 → 全部8通道使能2.4 获取ADC值-单点 (0x08)请求: 55 AA 08 00 08 00 00 [CRC16] 响应: 55 AA 08 00 2B 03 00 00 00 [CH1_24B] [CH2_24B] ... [CH8_24B] [CRC16] 24位ADC值格式: 0x00800000 0V中点 0x00FFFFFF 满量程 0x00000000 -满量程2.5 获取ADC值-波形 (0x03)请求: 55 AA 03 00 08 00 [CRC16] 响应: 55 AA 03 00 [帧长] [参数] [waveData] [CRC16] 波形数据: 200点×8通道×2字节 3200字节2.6 启动在线记录 (0x16)请求: 55 AA 16 00 0C [ch_Enable] [signalType] [range] [samplingRate(大端)] [CRC16] 响应: 持续上传波形帧cmdId0x03 示例: 55 AA 16 00 0C FF 00 00 4E 20 44 77 → 8通道全使能电压型±5V20000Hz采样2.7 停止记录 (0x17)请求: 55 AA 17 00 07 00 [CRC16] 响应: 无停止数据上传2.8 启动SRAM记录 (0x18)请求: 55 AA 18 00 [帧长] [ch_Enable] [signalType] [range] [samplingRate] [recordLen] [trigEnable] [CRC16] 响应: 记录完成后自动上传cmdId0x192.9 读取SRAM记录 (0x19)请求: 55 AA 19 00 [帧长] [readAddr] [readLen] [CRC16] 响应: 55 AA 19 00 [帧长] [sramData] [CRC16]三、DAC波形输出命令3.1 设置DAC参数 (0x20)请求: 55 AA 20 00 [帧长] [ch] [freq(大端)] [duty] [waveType] [amplitude] [offset] [CRC16] 响应: 无 waveType: 0正弦, 1方波, 2三角, 3锯齿, 4任意波3.2 DAC波形数据 (0x21)请求: 55 AA 21 00 [帧长] [ch] [pointCount] [waveData[]] [CRC16] 响应: 无 用于任意波形上位机发送波形数据点3.3 启动/停止DAC输出 (0x22)请求: 55 AA 22 00 [帧长] [ch] [enable(0/1)] [CRC16] 响应: 无四、DIO数字接口命令4.1 获取DIO状态 (0x30)请求: 55 AA 30 00 07 00 [CRC16] 响应: 55 AA 30 00 [帧长] [dinState] [doState] [CRC16] dinState: BIT0~7 DIN1~DIN8 doState: BIT0~7 DOUT1~DOUT84.2 设置DO输出 (0x31)请求: 55 AA 31 00 [帧长] [ch] [state(0/1)] [CRC16] 响应: 无 示例: 55 AA 31 00 08 00 01 01 [CRC] → DOUT1ON4.3 设置全部DO (0x32)请求: 55 AA 32 00 [帧长] [doAllState] [CRC16] 响应: 无4.4 设置ADC信号类型 (0x33)请求: 55 AA 33 00 [帧长] [signalType(0电压,1电流)] [CRC16] 响应: 无五、PWM电机控制命令5.1 设置PWM参数 (0x40)请求: 55 AA 40 00 [帧长] [ch] [freq(大端)] [duty(大端)] [pulseNum(大端)] [accUnit] [CRC16] 响应: 无 参数说明: - freq: 目标频率1~10000Hz - duty: 占空比0~1000千分比 - pulseNum: 脉冲数0~655350持续 - accUnit: 加减速步长每0.1秒增加量5.2 启动/停止PWM (0x41)请求: 55 AA 41 00 [帧长] [ch] [enable(0/1)] [CRC16] 响应: 无 勾选开始运动加速→匀速→减速 取消停止PWM5.3 PWM完成通知 (0x42)请求: 无采集卡主动上传 响应: 55 AA 42 00 [帧长] [ch] [CRC16] 脉冲数发送完成后自动上传六、校准命令6.1 ADC标定A点 (0x50)请求: 55 AA 50 00 [帧长] [ch] [analogValue(大端)] [CRC16] 响应: 55 AA 50 00 [帧长] [ch] [digitalValue(大端)] [enableA1] [CRC16] 流程: 1. 输入已知模拟量如2.000V 2. 点击标定A 3. 采集卡读取当前ADC数字量 4. 存入FRAM的calibPointA 5. calibEnableA自动设为16.2 ADC标定B点 (0x51)请求: 55 AA 51 00 [帧长] [ch] [analogValue(大端)] [CRC16] 响应: 55 AA 51 00 [帧长] [ch] [digitalValue(大端)] [enableB1] [CRC16]6.3 DAC标定A点 (0x52)请求: 55 AA 52 00 [帧长] [ch] [analogValue(大端)] [CRC16] 响应: 55 AA 52 00 [帧长] [ch] [digitalValue(大端)] [enableA] [CRC16]6.4 DAC标定B点 (0x53)请求: 55 AA 53 00 [帧长] [ch] [analogValue(大端)] [CRC16] 响应: 55 AA 53 00 [帧长] [ch] [digitalValue(大端)] [enableB] [CRC16]6.5 清除标定 (0x54)请求: 55 AA 54 00 [帧长] [ch] [adcOrDac(0/1)] [CRC16] 响应: 无 清除后恢复理想转换曲线6.6 设置传感器单位 (0x55)请求: 55 AA 55 00 [帧长] [ch] [unitIndex(0~255)] [CRC16] 响应: 无 0~16: 17种预设单位(V/mV/A/mA/℃/...) 17~255: 自定义单位6.7 设置校正系数 (0x56)请求: 55 AA 56 00 [帧长] [ch] [correctFactor(大端)] [calibZero(大端)] [CRC16] 响应: 无七、Flash记录仪命令7.1 启动Flash记录 (0x60)请求: 55 AA 60 00 [帧长] [ch_Enable] [sampleInterval(大端)] [recordDuration(大端)] [CRC16] 响应: 无7.2 读取Flash记录 (0x61)请求: 55 AA 61 00 [帧长] [readAddr(大端)] [readLen(大端)] [CRC16] 响应: 55 AA 61 00 [帧长] [flashData] [CRC16]7.3 清除Flash (0x62)请求: 55 AA 62 00 [帧长] [CRC16] 响应: 无八、系统命令8.1 获取版本号 (0xF0)请求: 55 AA F0 00 07 00 [CRC16] 响应: 55 AA F0 00 [帧长] [softVer(大端)] [fpgaVer(大端)] [CRC16]8.2 恢复出厂设置 (0xF1)请求: 55 AA F1 00 07 00 [CRC16] 响应: 55 AA F1 00 [帧长] [status(0成功)] [CRC16]8.3 进入Bootloader (0xFE)请求: 55 AA FE 00 07 00 [CRC16] 响应: 无设备重启进入Bootloader模式九、命令字典总表CmdId名称方向数据段说明0x00获取设备参数请求→响应参数结构体ADC/DAC/DIO全部参数0x01设置ADC量程请求chrange±5V/±10V0x02设置通道使能请求chEnable8通道BIT0~70x03获取波形数据请求→响应200点×8CH在线波形0x08获取单点ADC请求→响应8×24位值单点读取0x16启动在线记录请求参数持续上传0x17停止记录请求—停止上传0x18启动SRAM记录请求参数长度DIN触发0x19读取SRAM请求→响应地址数据分批读取0x20设置DAC参数请求chfreqdutytypeDDS配置0x21DAC波形数据请求ch点数据任意波形0x22DAC使能请求chenable启停0x30获取DIO请求→响应dindo状态8DI8DO0x31设置DO请求chstate单路DO0x32设置全部DO请求doAll8路DO0x33设置信号类型请求signalType电压/电流0x40设置PWM参数请求chfreqdutypulseacc电机控制0x41PWM使能请求chenable启停0x42PWM完成响应ch自动通知0x50ADC标定A请求→响应ch模拟量→数字量A点0x51ADC标定B请求→响应ch模拟量→数字量B点0x52DAC标定A请求→响应ch模拟量→数字量A点0x53DAC标定B请求→响应ch模拟量→数字量B点0x54清除标定请求chadc/dac清除0x55设置单位请求chunitIndex256种0x56校正系数请求chfactorzero微调0x60启动Flash记录请求间隔时长长期记录0x61读取Flash请求→响应地址数据读取0x62清除Flash请求—清空0xF0获取版本请求→响应软件FPGA版本版本号0xF1恢复出厂请求→响应状态清除参数0xFE进入Boot请求—固件升级十、协议设计特点设计要点说明统一帧格式所有命令共用0x55AAcmdIdlendataCRC大端模式所有多字节字段大端传输CRC16-Modbus查表法误码率0.0047%请求-响应大部分命令请求后等待响应主动上传波形数据(0x03)和PWM完成(0x42)由采集卡主动发通道独立ch参数支持单通道操作标定自动标定后固件自动管理使能标志十一、总结D223通信协议命令字典包含分类命令数命令ID范围ADC采集90x00~0x19DAC输出30x20~0x22DIO接口40x30~0x33PWM控制30x40~0x42校准标定70x50~0x56Flash记录30x60~0x62系统30xF0~0xFE合计32—32个命令码覆盖了D223的全部功能——从ADC采集到DAC输出从DIO控制到PWM电机从校准标定到Flash记录从参数获取到系统管理。统一的大端帧格式CRC16校验确保了通信的可靠性和一致性。下篇预告《D223开源生态与二次开发完整指南》