首页/文章/ 详情

一文搞定国产多通道AD采集处理!源码自取

1年前浏览903

以前做传感器标定系统设计时,需要一次性采集几十上百路ADC的值,苦于找不到合适的设计方案,只得用模拟开关不停的轮询切换,可是坑苦了软件的同事。如果当时知道有这个方案,估计同事的头发也不会掉这么惨......

本文主要介绍基于全志科技T3(ARM Cortex-A7)国产处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616国产AD芯片,亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。


备注:

(1)创龙科技TL7606I模块使用AD芯片为核芯互联CL1606或ADI AD7606,两者均测试通过,且测试步骤无差别。

(2)创龙科技TL7616P模块使用AD芯片为核芯互联CL1616或ADI AD7616,两者均测试通过,且测试步骤无差别。


*测试硬件平台:


创龙科技T3工业评估板


TL7606I多通道AD模块

TL7616P多通道AD模块



1 ad_display案例

1.1 案例说明

案例功能:评估板通过SPI接口,使用创龙科技TL7606I/TL7616P模块采集8通道或16通道数据,并通过Qt显示波形。
案例支持如下2种模式:
(1)单步模式:程序将会采集1024个数据后,显示静态波形。
(2)连续模式:程序将会连续采集数据,并实时显示动态波形。
程序流程如下图所示。


图 1 程序流程图

1.2 案例测试

1.2.1 TL7606I模块测试

(1)硬件连接。
请使用VGA线将评估板VGA OUT接口与VGA显示屏连接。
由于评估底板拓展接口未预留SPI总线引脚,因此需参考如下方法进行飞线,并且应尽可能使用短线连接,硬件连接如下图所示。

图 2
将评估底板SPI FLASH(U6)空贴后的引脚1(SPI CS)、2(SPI MISO)、5(SPI MOSI)、6(SPI CLK)和4(GND)通过飞线引出。

图 3
将SPI FLASH(U6)飞线引出的引脚与TL7606I模块的J6接口参照下表对应关系进行连接。
表 1
SPI FLASH(U6)    
J6    
CLK(pin6)    
pin10    
CS(pin1)    
pin16    
DI(IO0)(pin5)    
pin26    
DO(IO1)(pin2)    
pin12    
GND(pin4)    
pin46    


请使用杜邦线或飞线将评估底板CAMERA0(J11)接口与TL7606I模块的J3、J6接口,参照下表对应关系进行连接,为TL7606I模块提供5V直流电源和控制信号。
表 2
CAMERA0(J11)    
J3    
J6    
pin1    
5V    
/    
pin11    
GND    
/    
pin23    
/    
pin4    
pin22    
/    
pin6    
pin24    
/    
pin3    
备注:"/"表示无需连接。

图 4

案例支持TL7606I模块8通道同时采集与显示。本次测试以TL7606I模块V4和V7通道为例,请将TL7606I模块的V4和V7通道分别正确连接至信号发生器A通道和B通道。信号发生器设置A通道输出频率为1KHz、峰峰值为5Vpp(即幅值为2.5V)的正弦波信号,B通道输出频率为1KHz、峰峰值为2Vpp(即幅值为1V)的正弦波信号,如下图所示。待测信号电压请勿超过模块量程,否则可能会导致模块损坏。

图 5

(2)案例测试。
为确保Qt程序运行的流畅性,评估板将使用eMMC启动模式进行测试,请确保eMMC已固化最新系统。

请先取出Linux系统启动卡,根据底板丝印将启动方式选择拨码开关拨为0,将评估板上电,系统将从eMMC启动。

请将案例bin目录下的可执行文件ad_display、"driver\boot_package\"目录下的boot_package_vga_ad7606.fex镜像文件和"driver\bin\"目录下的ad76x6.ko驱动文件拷贝至评估板文件系统任意目录下。同时,将案例"qwt\libqwt-6.1.3\"目录下的所有文件拷贝至评估板文件系统"/usr/local/Qt-5.9.0/lib/"目录下。

在评估板文件系统boot_package_vga_ad7606.fex镜像文件所在路径下,执行如下命令将其固化至eMMC,并重启系统。
Target# dd if=boot_package_vga_ad7606.fex of=/dev/mmcblk0 seek=32800
Target# dd if=boot_package_vga_ad7606.fex of=/dev/mmcblk0 seek=24576
Target# sync
Target# reboot

图 6

评估板系统重启后,进入评估板文件系统执行如下命令加载驱动。加载成功后,将会生成设备节点"/dev/ad7606"。
Target# insmod ad76x6.ko
Target# ls /dev/ad7606

图 7

执行如下命令,关闭默认运行的Qt GUI显示,并使能Qt程序运行环境。
Target# killall Launcher
Target# killall -9 MediaUI
Target# killall -9 CameraUI
Target# fbinit
Target# echo 0,0 > /sys/class/disp/disp/attr/fb2ui
Target# source /qt5.9.sh

图 8

执行如下命令,查询程序运行参数。
Target# ./ad_display --help

图 9

a)单步模式
执行如下命令,以单步模式采集数据。
Target#   ./ad_display -d /dev/ad7606 -m 1
参数解析:
-d:指定设备节点;
-m:选择运行模式(1表示单步模式,2表示连续模式)。

图 10

同时,VGA显示屏将会显示静态波形,如下图所示。

图 11

按下"Ctrl + C"可停止程序运行。

图 12

b)连续模式
执行如下命令,以连续模式采集数据。
Target#   ./ad_display -d /dev/ad7606 -m 2


图 13

同时,VGA显示屏将会实时显示动态波形,如下图所示。

图 14

程序运行过程中,CPU占用率约为26%。

图 15

按下"Ctrl + C"可停止程序运行。

图 16

1.2.2 TL7616P模块测试

(1)硬件连接。
请使用VGA线将评估板VGA OUT接口与VGA显示屏连接。
由于评估底板拓展接口未预留SPI总线引脚,因此需参考如下方法进行飞线,并且应尽可能使用短线连接,硬件连接如下图所示。

图 17

将评估底板SPI FLASH(U6)空贴后的引脚1(SPI CS)、2(SPI MISO)、5(SPI MOSI)、6(SPI CLK)和4(GND)通过飞线引出。

图 18

请通过飞线将TL7616P模块CON1接口与SPI FLASH(U6)飞线引出的引脚、CAMERA0(J11)接口参照下表对应关系进行连接。
其中,CAMERA0(J11)接口的pin23~pin24引脚为TL7616P模块提供控制信号。
表 3
CON1    
CAMERA0(J11)    
SPI FLASH(U6)    
A12    
/    
CLK(pin6)    
A15    
/    
CS(pin1)    
C12    
/    
DI(IO0)(pin5)    
C13    
/    
DO(IO1)(pin2)    
B8    
/    
GND    
A10    
pin23    
/    
A14    
pin22    
/    
A16    
pin24    
/    
备注:"/"表示无需连接。

请通过飞线将评估底板C2电解电容器的正负极引出,并与TL7616P模块CON2接口参照下表对应关系进行连接,为TL7616P模块提供12V直流电源。
表 4
C2    
CON2    
12V    
pin1    
GND    
pin2    

案例支持TL7616P模块16通道AD数据同时采集与显示。本次测试以TL7616P模块V1A和V1B通道为例,请将TL7616P模块的V1A和V1B通道分别正确连接至信号发生器A通道和B通道。信号发生器设置A通道输出频率为1KHz、峰峰值为5Vpp(即幅值为2.5V)的正弦波信号,B通道输出频率为1KHz、峰峰值为2Vpp(即幅值为1V)的正弦波信号,如下图所示。待测信号电压请勿超过模块量程,否则可能会导致模块损坏。 

图 19

(2)案例测试。
为确保Qt程序运行的流畅性,评估板将使用eMMC启动模式进行测试,请确保eMMC已固化最新系统。

请先取出Linux系统启动卡,根据底板丝印将启动方式选择拨码开关拨为0,将评估板上电,系统将从eMMC启动。

请将案例bin目录下的可执行文件ad_display、"driver\boot_package\"目录下的boot_package_vga_ad7616.fex镜像文件和"driver\bin\"目录下的ad76x6.ko驱动文件拷贝至评估板文件系统任意目录下。同时,将案例"qwt\libqwt-6.1.3\"目录下的所有文件拷贝至评估板文件系统"/usr/local/Qt-5.9.0/lib/"目录下。

在评估板文件系统boot_package_vga_ad7616.fex镜像文件所在路径下,执行如下命令将其固化至eMMC,并重启系统。
Target# dd if=boot_package_vga_ad7616.fex of=/dev/mmcblk0 seek=32800
Target# dd if=boot_package_vga_ad7616.fex of=/dev/mmcblk0 seek=24576
Target# sync
Target# reboot

图 20

评估板系统重启后,进入评估板文件系统执行如下命令加载驱动。加载成功后,将会生成设备节点"/dev/ad7616"。
Target# insmod ad76x6.ko
Target# ls /dev/ad7616

图 21

执行如下命令,关闭默认运行的Qt GUI显示,并使能Qt程序运行环境。
Target# killall Launcher
Target# killall -9 MediaUI
Target# killall -9 CameraUI
Target# fbinit
Target# echo 0,0 > /sys/class/disp/disp/attr/fb2ui
Target# source /qt5.9.sh

图 22

执行如下命令,查询程序命令参数。
Target# ./ad_display --help

图 23

a)单步模式
执行如下命令,以单步模式采集数据。
Target# ./ad_display -d /dev/ad7616 -m 1
参数解析:
-d:指定设备节点;
-m:选择运行模式(1表示单步模式,2表示连续模式)。

图 24

同时,VGA显示屏将会显示静态波形,如下图所示。

图 25

按下"Ctrl + C"可停止程序运行。

图 26

b)连续模式
执行如下命令,以连续模式采集数据。
Target# ./ad_display -d /dev/ad7616 -m 2

图 27

同时,VGA显示屏将会实时显示动态波形,如下图所示。

图 28

程序运行过程中,CPU占用率约为26%。

图 29

按下"Ctrl + C"可停止程序运行。

图 30

2 ad_capture案例


2.1 案例说明

案例功能:评估板通过SPI接口,使用创龙科技TL7606I/TL7616P模块采集8通道或16通道数据,然后将采集的数据转换成电压值并保存为csv文件。
程序流程如下图所示。
图 31 程序流程图

2.2 案例测试


2.2.1 TL7606I模块测试

(1)硬件连接。
由于评估底板拓展接口未预留SPI总线引脚,因此需参考如下方法进行飞线,并且应尽可能使用短线连接,硬件连接如下图所示。

图 32

将评估底板SPI FLASH(U6)空贴后的引脚1(SPI CS)、2(SPI MISO)、5(SPI MOSI)、6(SPI CLK)和4(GND)通过飞线引出。

图 33

将SPI FLASH(U6)飞线引出的引脚与TL7606模块的J6接口按照下表对应关系进行连接。
表 5
SPI FLASH(U6)    
J6    
CLK(pin6)    
pin10    
CS(pin1)    
pin16    
DI(IO0)(pin5)    
pin26    
DO(IO1)(pin2)    
pin12    
GND(pin4)    
pin46    

请使用杜邦线将评估底板CAMERA0(J11)接口与TL7606I模块的J3、J6接口按照下表对应关系进行连接,为TL7606I模块提供5V直流电源和控制信号。
表 6
CAMERA0(J11)    
J3    
J6    
pin1    
5V    
/    
pin11    
GND    
/    
pin23    
/    
pin4    
pin22    
/    
pin6    
pin24    
/    
pin3    
备注:"/"表示无需连接。

图 34

案例支持TL7606I模块8通道AD数据同时采集与显示。本次测试以TL7606I模块V3和V8通道为例,请将TL7606I模块的V3和V8通道分别正确连接至信号发生器A通道和B通道。信号发生器设置A通道输出频率为1KHz、峰峰值为4Vpp(即幅值为2V)的正弦波信号,B通道输出频率为1KHz、峰峰值为6Vpp(即幅值为3V)的正弦波信号,如下图所示。待测信号电压请勿超过模块量程,否则可能会导致模块损坏。
图 35

(2)案例测试。
请将案例bin目录下的可执行文件ad_capture、驱动文件ad76x6.ko和"driver\boot_package\"目录下的boot_package_vga_ad7606.fex镜像文件拷贝至评估板文件系统任意目录下。

在评估板文件系统boot_package_vga_ad7606.fex镜像文件所在路径下,执行如下命令将其固化至Linux系统启动卡,并重启系统。
Target# dd if=boot_package_vga_ad7606.fex of=/dev/mmcblk1 seek=32800
Target# dd if=boot_package_vga_ad7606.fex of=/dev/mmcblk1 seek=24576
Target# sync
Target# reboot

图 36

评估板系统重启后,进入评估板文件系统执行如下命令加载驱动。加载成功后,将会生成设备节点"/dev/ad7606"。
Target# insmod ad76x6.ko
Target# ls /dev/ad7606

图 37

执行如下命令,查询程序运行参数。
Target# ./ad_capture --help

图 38

执行如下命令,AD模块将会采集8192个数据,并转换成电压值。
Target# ./ad_capture -d /dev/ad7606 -n 1024

图 39

按"Ctrl + C"退出程序,同时将会在当前目录下生成data.csv文件。

图 40

请将生成的data.csv文件拷贝至Windows任意目录下,并使用Excel打开,如下图所示。其中,第C列数据为TL7606I模块V3通道的采集数据,第H列数据为TL7606I模块V8通道的采集数据,默认单位为:V。

图 41

请通过Excel的二维折线图,将采集数据显示为更加直观的波形图,如下图所示。

图 42
图 43

2.2.2 TL7616P模块测试

(1)硬件连接。
由于评估底板拓展接口未预留SPI总线引脚,因此需参考如下方法进行飞线,并且应尽可能使用短线连接,硬件连接如下图所示。

图 44

将评估底板SPI FLASH(U6)空贴后的引脚1(SPI CS)、2(SPI MISO)、5(SPI MOSI)、6(SPI CLK)和4(GND)通过飞线引出。

图 45

请通过飞线将TL7616P模块CON1接口与SPI FLASH(U6)飞线引出的引脚、CAMERA0(J11)接口参照下表对应关系进行连接。其中,CAMERA0(J11)接口的pin23~pin24引脚为TL7616P模块提供控制信号。
表 7
CON1    
CAMERA0(J11)    
SPI FLASH(U6)    
A12    
/    
CLK(pin6)    
A15    
/    
   
CS(pin1)    
C12    
/    
DI(IO0)(pin5)    
C13    
/    
DO(IO1)(pin2)    
B8    
/    
GND    
A10    
pin23    
/    
A14    
pin22    
/    
A16    
pin24    
/    
备注:"/"表示无需连接。

请通过飞线将评估底板C2电解电容器的正负极引出,并与TL7616P模块CON2接口参照下表对应关系进行连接,为TL7616P模块提供12V直流电源。
表 8
C2    
CON2    
12V    
pin1    
GND    
pin2    


案例支持TL7616P模块16通道AD数据同时采集与显示。本次测试以TL7616P模块V0A和V0B通道为例,请将TL7616P模块的V0A和V0B通道分别正确连接至信号发生器A通道和B通道。信号发生器设置A通道输出频率为1KHz、峰峰值为4Vpp(即幅值为2V)的正弦波信号,B通道输出频率为1KHz、峰峰值为6Vpp(即幅值为3V)的正弦波信号,如下图所示。待测信号电压请勿超过模块量程,否则可能会导致模块损坏。 
图 46

(2)案例测试。
请将案例bin目录下的可执行文件ad_capture、驱动文件ad76x6.ko和"driver\boot_package\"目录下的boot_package_vga_ad7616.fex镜像文件拷贝至评估板文件系统任意目录下。

在评估板文件系统boot_package_vga_ad7616.fex镜像文件所在路径下,执行如下命令将其固化至Linux系统启动卡,并重启系统。
Target# dd if=boot_package_vga_ad7616.fex of=/dev/mmcblk1 seek=32800
Target# dd if=boot_package_vga_ad7616.fex of=/dev/mmcblk1 seek=24576
Target# sync
Target# reboot

图 47

评估板系统重启后,进入评估板文件系统执行如下命令加载驱动。加载成功后,将会生成设备节点"/dev/ad7616"。
Target# insmod ad76x6.ko
Target# ls /dev/ad7616

图 48

执行如下命令,查询程序运行参数。
Target# ./ad_capture --help

图 49

执行如下命令,AD模块将会采集16384个数据。
Target# ./ad_capture -d /dev/ad7616 -n 1024

图 50

按"Ctrl + C"退出程序,同时将会在当前目录下生成data.csv文件。

图 51

请将生成的data.csv文件拷贝至Windows任意目录下,并使用Excel打开,如下图所示。其中,第A列数据为TL7616P模块V0A通道的采集数据,第B列数据为TL7616P模块V0B通道的采集数据,默认单位为:V。

图 52

请通过Excel的二维折线图,将采集数据显示为更加直观的波形图,如下图所示。

图 53

图 54



目前,创龙科技已推出T3+FPGA(紫光同创PGL25G/PGL50G)全国产一体化工业核心板方案,国产化率100%(连接器亦为国产),可通过FPGA端拓展接口接入多片国产AD,欢迎咨询。

SOM-TLT3F核心板正面图
TLT3F-EVM开发板正面图
   

关于Tronlong


创龙科技(Tronlong)始创于2013年,是国内领先的嵌入式产品平台提供商,业务主要涵盖工业核心板、工业评估板、项目服务,总部位于广州科学城,下设独立运营的教仪事业部,并在北京、上海、深圳、西安等地设有业务及技术服务中心。


创龙科技专注于ARM、FPGA、DSP多核异构技术开发,是TI、Xilinx、NXP、紫光同创中国官方合作伙伴,产品线覆盖TI、Xilinx、NXP、全志、瑞芯微、紫光同创等厂商处理器平台,产品广泛应用于工业自动化、仪器仪表、能源电力、通信、医疗、安防等行业。


创龙科技始终致力于打造高品质工业核心板,以“提供高可靠性产品”、“快速响应需求”、“有效解决问题”为三大服务宗旨,已成功帮助超过12000家工业客户完成产品的快速开发与上市。


    

来源:8号线攻城狮
电源电力芯片通信控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-07
最近编辑:1年前
8号线攻城狮
本科 干一行,爱一行
获赞 59粉丝 88文章 1057课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈