TM7707 24bit ADC详解:性能与优势

发表时间: 2024-11-26 20:33

一、前言

  手边有几片24bit 的ADC芯片,型号为TM7707。下面通过单片机 STC32 来测试一下它的基本电路性能。

▲ 图1.1 一个成品TM7707的原理图

二、测试电路

  设计测试电路。利用STC32G12单片机控制TM7707,接口为 SPI,TM7707的时钟信号也来自32G12的主时钟分频信号。利用 TL431给出基本的参考电压信号。电路工作电源为5V。设计单面PCB,适合一分钟制板。

▲ 图1.2.1 测试电路原理图

  一分钟之后得到了测试电路板,焊接电路,清洗之后准备测试。

三、软件调试

  下面开始软件调试。

  使用自制的 STC 软件下载模块对单片机进行编程。设计一个简单的 LED 闪烁程序。下载之后,单片机工作正常。为了给 TM7707提供工作时钟,设置 系统时钟分频输出。分频倍数为 7倍,这样在单片机时钟为 35MHz下,输出时钟信号频率为 5MHz 左右,能够满足 TM7707 的需求。下面通过 SPI编程,控制 TM7707进行采集模拟信号。

▲ 图1.3.1 输出的时钟信号

四、TM7707软件

  下面对TM7707进行软件编程。

  根据 TM7707的数据手册,结合者网络上给出的调试软件参考,编写了TM7707的驱动软件。下面,读取它的数据,通过串口显示在上位机。在通道1 输入 1V的直流电压。可以看到读取的 16bit的数据,基本上符合1V对应的数值。也可以读取24bit的数据,只是在现在设计的电路板上,24bit 的数据后面 8bit实际上都是噪声了。

  下面测量一下这个ADC的测量结果。使用DG1766提供从0V到3V的电压,使用TM7707的第一个通道读取该电压值。利用串口发送到上位机。开始编程的时候,忘记了将输出结果按照无符号整形数字进行转换,所以出现了数值 溢出的情况。将数字按照无符号整型数传输,所得到的数字从0变化到 65535。当输入电压超过 2.5V,输出数据便饱和了。这是读取的从0V 变化到 0.1V对应的ADC数值,可以看到ADC有一个 0 偏,当,输入电压小于 0.02V的时候,ADC输出数值都为 0。

▲ 图1.4.1 不同输入电压对应的输出数值

▲ 图1.4.2 不同电压对应ADC

▲ 图1.4.3 从0V到0.1V对应的ADC数值

※总  结 ※

  本文基于STC32单片机,测试了 24bit ADC。在读取它的16bit的情况下,ADC转换的精度非常好。幸亏阅读了网络上别人给出的调试经验。在参考了别人的代码的基础上,编写了 TM7707的驱动代码。

参考资料

[1]

32G12K128 驱动 TM7707的24位ΣADC开源教程: https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4952

[2]

TM7707 Datasheet: https://www.semiee.com/3cf58249-3798-439f-946b-61a3f4737b9f.html