8688笔记

模块基本信息

指标 参数 备注
采样率 最大500k 实测32最大开发到将近300k
分辨率 16位
精度 14-15位 大致如此,具体见数据手册
输入范围 (下面列出来
供电 5v 不是±5V
采用方式 单路采样,可以切换
  • 我测试用的是康威的ADS8688模块,我见淘宝上主要有两个版本,差距不大的。主要是接口不一样,另一个版本是SMA头,当然大家可以自己画一个板子。

  • 输入范围,可调,这是一大优势。具体的输入范围如下。

±10.24V

±5.12V

±2.56V

0-10.24V

0-5.12V

使用感触

首先是说说这个采样率,我最选择测试它主要是因为它的采样率可以高达500k,这么高的采样率很诱人,但是实际上,我在使用H7工作在480M的情况下,也只能把他开发到280k左右的采样率。

精度上有16位,精度上很常规,完全够用。虽说不及那些24位的500k采样率AD,毕竟价位放那呢。

输入范围可以调节,很香,针对不同的应用场景可以灵活调节。不过我用它主要是为了应对电赛,外部可以加运放,所以对输入范围不是特别在意。

我手上掌握的模块里,已经有AD7606,我将两者对比后,决定不用8688,8688贵,同时能开发出来的采样率不比7606的200k高太多,还不支持同步采样。

IO口模拟SPI

能达到的最大速度约280k采样率,这个采样率是我在取消掉IO口翻转后面的延时情况下,勉强达到的,后面发现,是因为比如if这样的代码运行时间导致的它仍然符合时序。我提供的代码里为了稳定,还是将延时加入了。

硬件SPI

最高170k采样率,我怀疑主要是HAL库的效率低导致的采样率这么低。

代码

由于在工程里,这里就只发.c,.h和main文件。

先声明下,代码修改自康威的例程,我把他的接口和时间参数进行了修改,并用cubemx进行了实现。商家原先的代码,为了系统的稳定,加入了很多不必要的延时,采样率低的出奇。

因为我后面不会用这个模块,所以提供的代码质量不会像其他模块那么高。


下面我以IO口模拟SPI为例,简单地讲讲提供的代码怎么用。

cubemx
给引脚配置

主要注意红框框里面的设置

keil端

接着把.c和.h文件加入工程(过程百度

在main.c里面

#include "ads8688.h"//包含头文件
uint16_t value
//....
void main()
{
       ADS8688_Init(CH0_EN | CH1_EN | CH2_EN | CH3_EN | CH4_EN | CH5_EN | CH6_EN | CH7_EN);//初始化ADS8688的底层
    Set_CH_Range(CHIR_0, ADS8688_IR_N2_5V);//设置各个通道的采样范围,具体可以看看8688.c里面的注释。康威说的很清楚的
    Set_CH_Range(CHIR_1, ADS8688_IR_N2_5V);
    Set_CH_Range(CHIR_2, ADS8688_IR_N2_5V);
    Set_CH_Range(CHIR_3, ADS8688_IR_N2_5V);
    Set_CH_Range(CHIR_4, ADS8688_IR_N2_5V);
    Set_CH_Range(CHIR_5, ADS8688_IR_N2_5V);
    Set_CH_Range(CHIR_6, ADS8688_IR_N2_5V);
    Set_CH_Range(CHIR_7, ADS8688_IR_N2_5V);
    MAN_CH_Mode(MAN_CH_0);//选择通道CH0
    value = Get_MAN_CH_Mode_Data(); //读取通道的电压值
}

未若头发因风起