三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

DABM-D223数据采集卡架构深度解析:STM32H743+FPGA双核如何各司其职

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 → STM32FPGA将ADC数据写入FIFO/SRAM,STM32通过QSPI四线DMA读取
USB通信协议STM32H743USB CDC通信,帧头+CRC16校验,30+命令分发
DAC波形输出STM32H743TIM14定时中断驱动,SPI2写入DAC芯片
PWM加减速STM32H743TIM1~8定时器,6路PWM,每100ms计算一次加减速
FRAM参数管理STM32H743SPI3连接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]:

线程名优先级栈大小功能
adcFunc0(最高)2KBADC采集、SRAM记录、在线采集主逻辑
msgProcess12KBUSB消息接收与命令分发

ADC功能线程每1ms执行一次,USB消息线程每2ms执行一次。TIM12提供1ms系统滴答,TIM13驱动ADC采样定时,TIM14驱动DAC输出定时[note_63]。


五、通信协议设计

所有USB消息统一格式[note_63]:

帧头(0x55AA) + 命令ID + 帧长度 + 数据 + CRC16

STM32是小端,通信协议用大端,所有数据使用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]。

← 返回列表