# MSA-AI **Repository Path**: lembedder/msa-ai ## Basic Information - **Project Name**: MSA-AI - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-29 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MSA - RF测试设备后端系统 基于Qt5的嵌入式射频测试设备后端系统,支持频谱分析仪、接收机和矢量网络分析仪功能。 ## 功能特性 - **多模式测量**: 支持频谱分析仪(SA)、接收机(RX)、矢量网络分析仪(VNA)三种工作模式 - **硬件抽象层**: 通过mmap和UIO与FPGA硬件通信,支持寄存器访问和DMA数据传输 - **SCPI协议**: 支持标准SCPI命令集,通过TCP/IP提供远程控制接口 - **数据存储**: 使用SQLite数据库存储设备信息和测量数据 - **校准管理**: 支持INI格式的幅度校正表,提高测量精度 - **日志系统**: 完整的日志记录系统,支持不同级别的日志输出 ## 系统架构 ### 主要组件 1. **HardwareAbstractionLayer (HAL)**: 硬件抽象层,负责与FPGA硬件通信 2. **ScpiTcpServer**: TCP服务器,处理SCPI命令和客户端连接 3. **ModeController**: 模式控制器,管理不同测量模式的切换 4. **MeasurementMode**: 测量模式基类,定义通用接口 5. **SpectrumAnalyzer**: 频谱分析仪实现 6. **Receiver**: 接收机实现 7. **Vna**: 矢量网络分析仪实现 8. **DataProcessing**: 数据处理类,包含FFT、窗口函数等算法 9. **IniCalibrationManager**: INI校准文件管理器 10. **DatabaseManager**: SQLite数据库管理器 ### 数据流程 1. FPGA采集IQ数据并通过DMA传输到系统内存 2. HAL接收数据并发出dataReady信号 3. 当前激活的测量模式处理原始数据 4. 数据处理模块执行FFT、校正等操作 5. 结果通过SCPI接口返回给客户端或存储到数据库 ## 构建说明 ### 依赖项 - Qt5 (>= 5.12): core, network, sql, concurrent模块 - SQLite3 - Linux系统头文件 (用于mmap/UIO) ### Linux系统构建 ```bash # 授予执行权限 chmod +x build.sh # 执行构建脚本 ./build.sh # 或手动构建 mkdir build cd build qmake ../MSA.pro make -j$(nproc) ``` ### Windows系统构建 ```bash # 执行构建脚本 build.bat # 或手动构建 mkdir build cd build qmake ../MSA.pro nmake ``` ## 安装与配置 ### 1. 准备配置文件 ```bash # 创建配置目录 sudo mkdir -p /etc/rfbackend sudo mkdir -p /etc/rfbackend/cal sudo mkdir -p /var/log # 复制配置文件 sudo cp config.ini.example /etc/rfbackend/config.ini sudo cp cal/sa_cal.ini.example /etc/rfbackend/cal/sa_cal.ini sudo cp cal/rx_cal.ini.example /etc/rfbackend/cal/rx_cal.ini sudo cp cal/vna_cal.ini.example /etc/rfbackend/cal/vna_cal.ini ``` ### 2. 编辑配置文件 根据实际硬件配置修改 `/etc/rfbackend/config.ini`: ```ini [Hardware] fpga_reg_base = 0x40000000 ; FPGA寄存器基地址 fpga_reg_size = 0x1000 ; 寄存器大小 uio_device = /dev/uio0 ; UIO设备路径 ``` ### 3. 运行程序 ```bash # 运行后端服务 ./rfbackend -c /etc/rfbackend/config.ini -d /etc/rfbackend/device.db # 或使用默认配置 ./rfbackend ``` ### 4. 连接SCPI客户端 ```bash # 使用telnet连接 telnet localhost 5025 # 发送SCPI命令示例 *IDN? ; 查询设备标识 :INITiate:CONTinuous ON ; 启动连续测量 :SENSe:FREQuency:CENTer 1e9 ; 设置中心频率1GHz :TRACe:DATA? ; 查询迹线数据 ``` ## SCPI命令参考 ### 系统命令 - `*IDN?` - 查询设备标识 - `*RST` - 复位设备 - `:SYSTem:ERRor?` - 查询错误信息 ### 频谱分析仪命令 - `:INITiate:CONTinuous ON|OFF` - 启动/停止连续测量 - `:SENSe:FREQuency:CENTer ` - 设置中心频率 - `:SENSe:FREQuency:SPAN ` - 设置频率跨度 - `:SENSe:BANDwidth:RESolution ` - 设置分辨率带宽 - `:TRACe:DATA?` - 查询迹线数据 ### 接收机命令 - `:SENSe:FREQuency ` - 设置接收频率 - `:SENSe:BANDwidth ` - 设置接收带宽 - `:AUDio:DATA?` - 查询音频数据 - `:AUDio:VOLume ` - 设置音频音量 ### 矢量网络分析仪命令 - `:SENSe:FREQuency:STARt ` - 设置起始频率 - `:SENSe:FREQuency:STOP ` - 设置终止频率 - `:SENSe:SWEep:POINts ` - 设置扫描点数 - `:SOURce:POWer ` - 设置输出功率 - `:CALCulate:DATA?` - 查询S参数数据 ## 文件结构 ``` MSA/ ├── include/ # 头文件 │ ├── hardwareabstractionlayer.h │ ├── scpitserver.h │ ├── modecontroller.h │ ├── measurementmode.h │ ├── spectrumanalyzer.h │ ├── receiver.h │ ├── vna.h │ ├── dataprocessing.h │ ├── inicalibrationmanager.h │ └── databasemanager.h ├── src/ # 源文件 │ ├── hardwareabstractionlayer.cpp │ ├── scpitserver.cpp │ ├── modecontroller.cpp │ ├── measurementmode.cpp │ ├── spectrumanalyzer.cpp │ ├── receiver.cpp │ ├── vna.cpp │ ├── dataprocessing.cpp │ ├── inicalibrationmanager.cpp │ └── databasemanager.cpp ├── cal/ # 校准文件示例 │ ├── sa_cal.ini.example │ ├── rx_cal.ini.example │ └── vna_cal.ini.example ├── main.cpp # 主程序入口 ├── MSA.pro # Qt项目文件 ├── config.ini.example # 配置文件示例 ├── build.sh # Linux构建脚本 ├── build.bat # Windows构建脚本 └── README.md # 本文档 ``` ## 开发说明 ### 添加新的测量模式 1. 继承 `MeasurementMode` 基类 2. 实现 `start()`, `stop()`, `handleCommand()` 方法 3. 在 `ModeController` 中添加对新模式的支持 4. 实现相应的SCPI命令处理 ### 扩展硬件支持 1. 修改 `HardwareAbstractionLayer` 以适应不同的硬件接口 2. 更新配置文件格式以支持新的硬件参数 3. 确保驱动程序与UIO/mmap接口兼容 ### 调试与测试 - 启用详细日志: 修改配置文件中 `log_level = DEBUG` - 查看日志文件: `tail -f /var/log/rfbackend.log` - 使用SCPI客户端进行功能测试 ## 许可证 本项目基于Qt开源许可证和GPLv3许可证发布。 ## 技术支持 如有问题或建议,请参考项目文档或联系开发团队。 --- *版本: 3.0 | 更新日期: 2026-03-29*