DABM-D223数据采集卡架构深度解析:STM32H743+FPGA双核如何各司其职
作为D223生产厂家,我们从设计者的视角,深入解析这块"一块板子干一个实验室的活"的采集卡,到底在架构上做了哪些取舍。
一、为什么选择双核架构?
D223的核心设计理念是:用FPGA管速度,用STM32管协议。
在500KSPS、8通道同步采样的场景下,单纯依靠MCU直接控制AD7606芯片的时序是非常紧张的。AD7606BBSTZ的CONVST信号需要≥40ns的脉宽,转换完成后BUSY信号下降沿需要立即触发DMA读取16字节数据[word_4]。如果同时还要处理USB通信、RT-Thread线程调度、DAC波形计算、PWM加减速等任务,MCU的中断负担会非常重。
因此D223采用了STM32H743VIT6 + FPGA的双核方案[note_63]:
| 模块 | 负责芯片 | 具体职责 |
|---|---|---|
| ADC采样时序控制 | FPGA | 控制AD7606的CONVST、BUSY、SCK、CS信号,管理FIFO和SRAM |
| 高速数据传输 | FPGA → QSPI → STM32 | FPGA将ADC数据写入FIFO/SRAM,STM32通过QSPI四线DMA读取 |
| USB通信协议 | STM32H743 | USB CDC通信,帧头+CRC16校验,30+命令分发 |
| DAC波形输出 | STM32H743 | TIM14定时中断驱动,SPI2写入DAC芯片 |
| PWM加减速 | STM32H743 | TIM1~8定时器,6路PWM,每100ms计算一次加减速 |
| FRAM参数管理 | STM32H743 | SPI3连接FRAM,保存校准参数和配置 |
二、QSPI:FPGA与STM32之间的"高速公路"
D223最关键的数据通路是QSPI四线DMA[note_63]:
FPGA控制AD7606采样 → 数据存入FPGA FIFO/SRAM → STM32通过QSPI四线DMA读取 → 双缓冲打包 → USB上传QSPI定义了三种命令码[note_63]:
0x80:读取单次8通道ADC值(17字节)0x81:读取FPGA FIFO(4组×8通道+索引,66字节)0xEB:读取SRAM记录数据(24位地址,6个dummy cycle)
QSPI采用四线模式:指令四线、地址四线、数据四线,配合MDMA(Master DMA)实现零CPU搬运[note_63]。
三、双缓冲乒乓机制:采集与传输并行
D223在在线采集模式下采用A/B双缓冲乒乓机制[note_63]:
adc_collectFullFlag == 2 → A缓冲满 → 打包帧头+CRC → USB发送 adc_collectFullFlag == 3 → B缓冲满 → 同上当A缓冲正在USB上传时,FPGA可以将新数据写入B缓冲,反之亦然。这样采集和传输完全并行,不会因为USB传输延迟导致丢点。
注意:虽然双缓冲机制大幅降低了丢包概率,但任何数据采集卡在极端条件下都有可能丢数据,这是USB带宽和系统调度决定的[note_244]。
四、RT-Thread多线程调度
D223固件基于RT-Thread RTOS,核心线程如下[note_63]:
| 线程名 | 优先级 | 栈大小 | 功能 |
|---|---|---|---|
| adcFunc | 0(最高) | 2KB | ADC采集、SRAM记录、在线采集主逻辑 |
| msgProcess | 1 | 2KB | USB消息接收与命令分发 |
ADC功能线程每1ms执行一次,USB消息线程每2ms执行一次。TIM12提供1ms系统滴答,TIM13驱动ADC采样定时,TIM14驱动DAC输出定时[note_63]。
五、通信协议设计
所有USB消息统一格式[note_63]:
帧头(0x55AA) + 命令ID + 帧长度 + 数据 + CRC16STM32是小端,通信协议用大端,所有数据使用SWAP16/SWAP32进行大小端转换[note_63]。
命令支持30+种,包括设置ADC量程、读取设备参数、启动SRAM记录、启动在线采集、设置DDS/DAC参数、设置PWM参数等[note_63]。
六、总结
D223的架构设计核心思路是让FPGA和STM32各做自己最擅长的事:
- FPGA:硬件时序控制,纳秒级响应,管理ADC采样和SRAM存储
- STM32H743:480MHz主频,跑RT-Thread,处理USB协议栈、DAC波形计算、PWM加减速、FRAM管理
这种分工使得D223在500KSPS全速采样时,STM32依然有充足的算力处理其他外设,实现"一块板子多种功能"。
相关资料:D223开源原理图与源代码已公开,支持8路AI、4路AO、8路DI/DO、6路PWM、USB HS 480M通信[img_248]。
