Redpitaya X通道流控:DAC输出信号操作遇连接超时求助
问题背景
Redpitaya的X-Channel streaming应用支持双向流控(采集与生成),但官方未提供DAC操作示例,第三方文档也无最小可用案例,仅能通过rpsa_client -h获取DAC流控的命令结构(rpsa_client可执行文件获取方法参考官方流控入门文档)。用户按以下步骤操作后出现连接超时,无额外报错信息,需排查原因。
复现步骤
- 搭建STEMlab 125-14开发板,联网并通过网页验证连通性;
- 将输出1连接至示波器以验证信号生成。
执行命令与控制台输出
1. 启动DAC模式
命令:
./rpsa_client -r -h <ip> -m start_dac -v
输出:
<timestamp>: Connected: <ip> <timestamp>: Send start DAC command to master board: <ip> <timestamp>: DAC streaming started: <ip> Local mode [OK]
疑问:此处为何显示Local mode?ADC模式下显示的是TCP mode。
2. 设置配置
命令:
./rpsa_client -c -h <ip> -s F -f <path>/stream.conf -v
输出:
<timestamp>: Connected: <ip> <timestamp>: Send configuration to: <ip> <timestamp>: SET: <ip> [OK] <timestamp>: Send configuration save command to: <ip> <timestamp>: SAVE TO FILE: <ip> [OK]
此步骤无异常。
3. 启动流控模式
命令:
./rpsa_client -o -h <ip> -f wav -d <path>/test_sine.wav -r 1 -m 1M -v
(注:test_sine.wav含200kHz测试音,约625000个采样点)
输出:
<timestamp>: Connect timeout: <ip>
仅显示超时,无额外信息。
stream.conf配置内容(含注释)
{ "adc_streaming" : { "attenuator" : 1, // 1: 1:1, 2: 1:20 (输入衰减) "calibration" : true, // 使用校准 "channels" : 1, // 1: 通道1, 2: 通道2, 3: 双通道 "coupling" : 2, // 未知参数 "decimation" : 2, // 采样率抽取 "format" : 0, // 未知参数 "port" : "8900", // TCP/UDP端口 "protocol" : 0, // 0: TCP, 1: UDP "resolution" : 1, // 1: 8位, 2: 16位 "samples" : 2000000, // NOS: 仅当save_type为'1'时生效 "save_type" : 0, // 0: 以太网, 1: 保存至SD卡 "type" : 1 }, "dac_streaming" : { "dac_file" : "", // 文件路径 - 在`rpsa_client -o`命令中指定 "dac_file_type" : 1, // 未知参数 "dac_gain" : 0, // 未知参数 "dac_memoryUsage" : 1048576, // RAM缓存大小 "dac_mode" : 1, // 未知参数 "dac_port" : "8903", // TCP/UDP端口 "dac_repeat" : 1, // 重复模式(启用/禁用) "dac_repeatCount" : 10, // 重复次数 "dac_speed" : 62500000 // 采样率 }, "loopback" : // 未知模块 { "channels" : 1, // 未知参数 "dac_speed" : -1, // 未知参数 "mode" : 0, // 未知参数 "timeout" : 1 // 超时时间(秒)? } }
排查与解答
1. Local mode疑问解答
Local mode表示DAC流控当前处于本地模式(数据从Redpitaya本地存储读取),而ADC的TCP mode指数据通过TCP发送到远端。执行start_dac后默认进入本地模式,若后续要通过网络传输数据(如-o命令发送WAV文件),需切换为网络模式,否则会因模式不匹配导致连接超时。
2. 连接超时核心排查步骤
(1)修正DAC模式参数
stream.conf中dac_streaming的dac_mode设为1是本地模式,需改为0(网络模式),这是导致连接超时的核心原因。修改后重新执行配置命令生效。
(2)统一采样率参数
命令中-m 1M指定的采样率(1MHz)与配置中dac_speed(62.5MHz)不匹配,会引发采样率冲突。需统一两者:要么将命令中的-m改为62.5M,要么将配置的dac_speed改为1000000。
(3)端口与网络验证
- 在Redpitaya上执行
netstat -tulpn | grep 8903,确认dac_port(8903)未被占用; - 检查开发板防火墙/路由器是否封禁8903端口,确保网络连通性。
(4)服务状态重置
在Redpitaya上重启流控服务:
systemctl restart redpitaya_streaming
之后重新执行所有命令,排除服务异常导致的连接问题。
内容的提问来源于stack exchange,提问作者dxxx9

