这篇文章放很久了,是这个采集系统的硬件部分。简单来说,硬件部分就是一个STM32H7,上面的SPI用来控制ADC的配置和初始化,至于ADC的转换数据通过SAI外设读取,在内部有俩种编码方式,二进制流和OpenVIBE的编码方式。ADC转换的时候需要一个准确的基准,使用了一个ADI的REF。然后为了提高系统的信噪比,在电源输入路径上面使用了变压器驱动,避免电源轨道上面的耦合,在输出数据的时候,可以使用UART以及USB外设(USB-CDC)。
上面的陀螺仪是有一个结论,这个运动伪像可以被接收到的,可以被在信号里面减掉。
电源除了MicroUSB输入以及也可以在独立的引脚输入
右边就是串口上面的隔离,这里也有一个SPI的输出,都是隔离的
多通道的隔离器,这个是串口
这个是TI的,为SPI做隔离器
USB隔离器
就是这样
我这里想说的是,因为电源会供给所有器件,为了安全和减少一些噪音,就使用了小型的变压器。
芯片配变压器
内部的样子
参数
电感值: 最主要的电气参数,表示元器件在特定频率下的阻抗。 匝数比: 表示初级绕组和次级绕组的匝数比 直流电阻: 表示导线的电阻,会影响能量损耗。 电压-时间积: 表示元器件所能承受的最大电压变化率,对于抑制电压尖峰有意义。 绝缘耐压: 表示元器件能够承受的最大电压,对于防止击穿有意义。
在最终输入还加了保护的二极管
可以通过TI的
里面长这样
我们看一个X光的拍片子的样子
这个是共模电压点
上下都是一对儿差分
SWD就可以
有一个数字地
链接SWD和电源,所以在烧录的时候就要连接
编译无错误
使用V2就可以了
调试
每一个数组里面都有内容
一个线程
经常有人问,这个东西是真同步吗?所以要讨论延时,就是来自于体系架构的延时性:
这个是和总线的连接延时
APB2-120MHz
还有一个SAI居然在APB4上面,速度最大可以跑到100MHz
AD7771使用ADI的一个demo,就是SAI外设读取数据,在精密转换这里
IIO项目
精密转换固件
SAI的外设
虚拟的串口
链接图
uint8_t datas[uint8_ad_adc_number][uint8_ad_number];
使用2维数组来储存ADC的数据:
datas:数组名称,用来标识这个数组。
[uint8_ad_adc_number][uint8_ad_number]:这是数组的维度,表示这是一个二维数组。
uint8_ad_adc_number: 表示数组的第一维的长度,也就是数组的行数。这个值是一个预先定义好的常量,代表ADC的通道数量。 uint8_ad_number: 表示数组的第二维的长度,也就是数组的列数。这个值是一个定义好的常量,代表每次ADC采样获取的数据点数。
uint8_t datas[4][10];
// 访问第一个ADC通道的第二个采样数据
uint8_t value = datas[0][1];
这个就是SAI数据的接收
使用这样的代码获取所有的数据块
这个是源码
32字节长的数据
在源码里面,一旦这个标志位出现,就开始捕获。
代码这段是切换数据流的方式
OpenVIBE的打包方式,有头有尾,里面包装ADC,和陀螺仪
然后使用USB的口输出
我们也可以打开这个开关,把数据装到SD卡里面的
现在设备还有一台,2k售价,感兴趣来~
http://sim.okawa-denshi.jp/en/Fkeisan.htm