前 言
本文主要介绍创龙科技TL3562-EVM评估板演示基于AMP(Asymmetric Multi-processing)的8/16通道AD采集开发案例,使用的AD芯片为核芯互联CL1606/CL1616(国产)、ADI AD7606/AD7616。适用开发环境:
Windows开发环境:Windows 7 64bit、Windows 10 64bit
虚拟机:VMware16.2.5
开发环境:Ubuntu20.04.6 64bit
U-Boot:U-Boot-2017.09
Kernel:Linux-5.10.209
LinuxSDK:rk3562-buildroot-2021.11-sdk-[版本号](基于rk3562_linux_release_v1.2.0_20240620)
本文档AD采集案例测试结果如下表所示。
表 1
无特殊说明情况下,默认使用USB TO UART0作为Linux调试串口,打印Linux程序相关信息;使用RS232 UART2作为Baremetal/RT-Thread(RTOS)程序的调试串口,打印Baremetal/RT-Thread(RTOS)程序相关信息;使用Linux系统启动卡(Micro SD方式)启动系统。
案例相关资料位于产品资料“4-软件资料Demoamp-demos”目录下。
备注:
a53-3_baremetal为Cortex-A53(CPU3)核心Baremetal工程文件;
a53-3_rtos为Cortex-A53(CPU3)核心RT-Thread(RTOS)工程文件;
m0_baremetal为Cortex-M0(MCU)核心Baremetal工程文件;
m0_rtos为Cortex-M0(MCU)核心RT-Thread(RTOS)工程文件;
a53-3_baremetal、a53-3_rtos、m0_baremetal、m0_rtos工程均可单独与Linux端通信。
表 2?Baremetal端
表 3?RT-Thread(RTOS)端
表 4?Linux端
备注:
创龙科技TL7606I模块使用AD芯片为核芯互联CL1606或ADI AD7606,两者均测试通过,且测试步骤无差别。
创龙科技TL7616P模块使用AD芯片为核芯互联CL1616或ADI AD7616,两者均测试通过,且测试步骤无差别。
创龙科技TL7606I模块、TL7616P模块可支持串行模式和并行模式,且硬件设计默认为并行模式,请根据AD模块原理图说明将AD模块修改为串行模式再进行测试。
ad_display案例
案例说明
本案例支持Cortex-M0(MCU)、Cortex-A53(CPU3)核心运行Baremetal/RT-Thread(RTOS)程序进行测试,具体说明如下:
Cortex-M0(MCU)核心运行
案例使用SPI总线采集8/16通道AD数据,评估板Cortex-A53(CPU0、CPU1、CPU2、CPU3)核心运行Linux系统,Cortex-M0(MCU)核心运行Baremetal(即m0_baremetal)、RT-Thread(即m0_rtos)程序。Baremetal/RT-Thread(RTOS)端通过SPI采集的AD数据写入DDR共享内存,并通过rpmsg发送写入的共享内存信息至Linux应用程序,Linux端应用程序通过rpmsg接收Baremetal/RT-Thread(RTOS)端发送的共享内存信息后,从指定共享内存中读取AD数据,并将数据转换得到电压值,然后通过Qt显示波形至显示屏。
系统工作示意框图如下所示。
图 1?系统工作示意框图
Cortex-A53(CPU3)核心运行
案例使用SPI总线采集8/16通道AD数据,评估板Cortex-A53(CPU0、CPU1、CPU2)核心运行Linux系统,Cortex-A53(CPU3)核心运行Baremetal(即a53-3_baremetal)、RT-Thread(即a53-3_rtos)程序。Baremetal/RT-Thread(RTOS)端通过SPI采集的AD数据写入DDR共享内存,并通过rpmsg发送写入的共享内存信息至Linux应用程序,Linux端应用程序通过rpmsg接收Baremetal/RT-Thread(RTOS)端发送的共享内存信息后,从指定共享内存中读取AD数据,并将数据转换得到电压值,然后通过Qt显示波形至显示屏。
系统工作示意框图如下所示。
图 2?系统工作示意框图
AD采集数据通过rpmsg传输流程图如下所示。
图 3?rpmsg传输流程图
案例使用创龙科技TL7606I模块(8通道)、TL7616P模块(16通道)运行Baremetal/RT-Thread(RTOS)程序进行AD数据采集。案例支持如下2种模式:
单次采集:程序采集1024个数据后,显示静态波形。
连续采集:程序将会连续采集数据,并实时显示动态波形。
程序流程如下图所示。
图 4?程序流程图
案例测试
TL7606I模块测试
TL7606I模块测试时Baremetal/RT-Thread(RTOS)程序流程图如下所示。
图 5
硬件连接。
请使用RS232交叉串口母母线、USB转RS232公头串口线将评估板RS232 UART2串口连接至PC机,使用HDMI线将评估板HDMI OUT接口与HDMI显示屏连接。
由于评估底板未预留与TL7606I模块接口适配的引脚,因此需参考如下方法进行飞线,并且应尽可能使用短线连接,硬件连接如下图所示。
图 6
备注:本案例采用SPI总线采集AD数据,请先参考如下原理图将TL7606I模块改为SPI接口模式。
图 7
请将评估底板C289电容正极焊盘通过飞线引出方式连接至TL7606I模块J3接口的pin1引脚;将C289电容负极焊盘通过飞线引出方式连接至TL7606I模块J3接口的pin2引脚,连接关系如下表。
表 5
图 8
图 9
请将评估板R342、R347、R354空贴,然后通过飞线方式,将评估板引脚信号H3/CAM_CLK0_OUT_M0/3V3、G1/CAM_CLK1_OUT_M0/3V3、F2/CAM_CLK2_OUT/3V3端口,分别连接至TL7606I模块J6接口的pin4、pin6、pin3引脚,为TL7606I模块提供控制信号,连接关系如下表。
表 6
图 10
图 11
图 12
飞线连接的评估板端口位置如下图所示。
图 13
图 14
将评估板R56、R58、R59、R60空贴,然后通过飞线方式将SPI0接口(J2)上AE16/SPI0_CLK_M0/3V3(pin5)、AG17/SPI0_CSN0_M0/3V3(pin2)、AE18/SPI0_MISO_M0/3V3(pin4)、GND(pin6)、连接至TL7606I模块J6接口的pin10、pin16、pin12、pin46引脚,为TL7606I模块提供SPI信号,连接关系如下表。
图 15
图 16
案例支持TL7606I模块8通道同时采集与显示。本次测试以TL7606I模块V1和V8通道为例,请将TL7606I模块的V1和V8通道分别正确连接至信号发生器A通道和B通道。信号发生器设置A通道输出频率为1KHz、峰峰值为10.0Vpp(即幅值为5.0V)的正弦波信号,B通道输出频率为1KHz、峰峰值为10.0Vpp(即幅值为5.0V)的正弦波信号,如下图所示。待测信号电压请勿超过模块量程,否则可能会导致模块损坏。
图 17
案例测试。
由于Linux内核会占用RS232 UART2串口、SPI0外设资源,因此在运行Baremetal(HAL)、RTOS(RT-Thread)程序前,需先替换关闭相关外设资源的内核镜像。
评估板上电启动,请将案例"dtsbin"目录下的内核镜像boot-ad-capture-mcu.img拷贝至评估板文件系统,执行如下命令将其固化至Linux系统启动卡。
备注:
如需固化至eMMC,请将设备节点修改为"/dev/mmcblk0p3";
如需运行Cortex-A53(CPU3)核心案例程序,请将内核镜像替换为boot-ad-capture-a53-3.img内核镜像。
Target# dd if=boot-ad-capture-mcu.img of=/dev/mmcblk1p3conv=fsync //替换内核镜像
Target# sync
Target# reboot
图 18
请参考用户手册《基于Linux + RT-Thread、Baremetal的AMP开发案例》文档“工程编译与固化”章节,将案例需运行核心bin目录下的amp_ad7606_capture.img镜像文件固化至评估板,请根据实际情况固化案例测试的内核镜像。
评估板上电启动后,RS232 UART2调试串口将打印如下信息。
图 19?m0_baremetal
图 20?m0_rtos
图 21?a53-3_baremetal
图 22?a53-3_rtos
请将产品资料“4-软件资料Demoamp-demosamp_ad_capturehost_linuxbin”目录下的可执行文件ad_display拷贝至评估板文件系统任意目录下。
图 23
执行如下命令,查询程序运行参数。
Target# ./ad_display -h
备注:"QStandardPaths…"打印信息不影响测试,忽略即可。
图 24
单次采集
执行如下命令,单次采集1024个数据采样点。
Target# ./ad_display -d ad7606-m 1-platform wayland
参数解析:
-d:指定设备节点;
-m:选择运行模式(1表示单次采集,2表示连续采集);
-platform:指定显示插件。
图 25
同时,HDMI显示屏将会显示静态波形,如下图所示。
图 26
按下"Ctrl + C"可停止程序运行。
图 27?m0_baremetal/m0_rtos
图 28?a53-3_baremetal/a53-3_rtos
连续采集
执行如下命令,以连续采集数据。
Target# ./ad_display -d ad7606-m 2-platform wayland
图 29
同时,HDMI显示屏将会实时显示动态波形,如下图所示。
图 30
程序运行过程中,CPU占用率约为105.9%。
图 31
按下"Ctrl + C"可停止程序运行。
图 32?m0_baremetal/m0_rtos
图 33?a53-3_baremetal/a53-3_rtos
由于在连续采集时,每次循环采集4096个点,并以32帧画面动态显示在HDMI显示屏,每帧图像显示采集点数为128个,因此CPU占用率高。如需降低CPU占用率可通过增加每帧图像采集点数,将HDMI显示屏上动态显示的画面帧数降低。
通过修改案例"host_linuxsrcad_displaysrc"目录下的ad76x6.h文件降低动态显示的画面帧数。
图 34
修改内容如下:
#define POINTS_ONE_PAGE 1024 //修改每帧图像采集点数数量为1024
图 35
修改完成后请参考案例编译章节,编译可执行程序。
备注:
采样率 =1s/ (单次转换耗时(s) + 单次SPI传输耗时(s))。
AD7606芯片每次采样8通道(共16Byte)数据,单次转换耗时为4us,SPI时钟最高支持20MHz,因此AD7606理论采样率 =1s/ ((4us + (1000000us / 20000000 x16 x8)) / 1000000) ≈96154 SPS。AD7606芯片采集单次转换耗时等数据的详细资料请查看AD7606芯片数据手册。
TL7606I模块测试时,SPI时钟为20MHz,经过实际测量,由于程序读取FIFO时将会消耗时间,SPI CS信号持续时间会比SPI CLK持续时间多2us,且代码耗时导致每次传输的间隔时间比理论转换耗时多6us,因此实际单次转换耗时 =单次转换耗时4us+ 6us;单次SPI传输耗时 = (1000000us / 20000000 x 16 x 8) + 2us。TL7606I模块实际采样率 =1s/ ((4us + 6us+ (1000000us / 20000000 x16 x8) + 2us) / 1000000) ≈54348 SPS,与测试结果相近。
图 36
由于案例SPI时钟频率高,采样率变化幅度大,因此连续采集的波形会出现相位偏移的现象(如速率不一致,左右偏移),但实际上波形是连续的且数据正确。若SPI时钟频率降低,采样率变化幅度将变小,即可避免该现象。
TL7616P模块测试
TL7616P模块测试时Baremetal/RT-Thread(RTOS)程序流程图如下所示。
图 37
硬件连接
请使用RS232交叉串口母母线、USB转RS232公头串口线将评估板RS232 UART2串口连接至PC机,使用HDMI线将评估板HDMI OUT接口与HDMI显示屏连接。
由于评估底板未预留与TL7616P模块接口适配的引脚,因此需参考如下方法进行飞线,并且应尽可能使用短线连接,硬件连接如下图所示。
图 38
备注:本案例是采用SPI总线采集AD数据,请先参考如下原理图将TL7616P模块改为SPI接口模式。
图 39
请将评估底板BACKLIGHT接口(CON22)的12V(pin2)引脚通过飞线引出方式连接至TL7616P模块CON2接口的pin1引脚;将BACKLIGHT接口(CON22)的GND(pin6)引脚通过飞线引出方式连接至TL7616P模块CON2接口的pin2引脚,为TL7616P模块提供12V直流电源,连接关系如下表。
表 8
图 40
图 41
请将评估板R342、R347、R354空贴,然后通过飞线方式,将评估板接口引脚信号H3/CAM_CLK0_OUT_M0/3V3、G1/CAM_CLK1_OUT_M0/3V3、F2/CAM_CLK2_OUT/3V3端口,分别连接至TL7616P模块CON1接口的A10、A14、A16引脚,为TL7616P模块提供控制信号,连接关系如下表。
表 9
图 42
图 43
图 44
飞线连接的评估版端口位置如下图所示。
图 45
图 46
将评估板R56、R58、R59、R60空贴,然后通过飞线方式将SPI0接口(J2)上AE16/SPI0_CLK_M0/3V3(pin5)、AG17/SPI0_CSN0_M0/3V3(pin2)、AG19/SPI0_MOSI_M0/3V3(pin3)、AE18/SPI0_MISO_M0/3V3(pin4)、GND(pin6),连接至TL7616P模块CON1接口的A12、A15、C11、C13、B8引脚,为TL7616P模块提供SPI信号,连接关系如下表。
表 10
图 47
图 48
案例支持TL7616P模块16通道AD数据同时采集与显示。本次测试以TL7616P模块V7B和V0A通道为例,请将TL7616P模块的V7B和V0A通道分别正确连接至信号发生器A通道和B通道。信号发生器设置A通道输出频率为1KHz、峰峰值为10.0Vpp(即幅值为5.0V)的正弦波信号,B通道输出频率为1KHz、峰峰值为10.0Vpp(即幅值为5.0V)的正弦波信号,如下图所示。待测信号电压请勿超过模块量程,否则可能会导致模块损坏。
图 49
案例测试。
由于Linux内核会占用RS232 UART2串口、SPI0外设资源,因此在运行Baremetal(HAL)、RTOS(RT-Thread)程序前,需先替换关闭相关外设资源的内核镜像。
评估板上电启动,请将案例"dtsbin"目录下的内核镜像boot-ad-capture-mcu.img拷贝至评估板文件系统,执行如下命令将其固化至Linux系统启动卡。
备注:
如需固化至eMMC,请将设备节点修改为"/dev/mmcblk0p3";
如需运行Cortex-A53(CPU3)核心案例程序,请将内核镜像替换为boot-ad-capture-a53-3.img内核镜像。
Target# dd if=boot-ad-capture-mcu.img of=/dev/mmcblk1p3conv=fsync //替换内核镜像
Target# sync
Target# reboot
图 50
请参考用户手册目录下《基于Linux + RT-Thread、Baremetal的AMP开发案例》文档“工程编译与固化”章节,将案例需运行核心bin目录下的amp_ad7616_capture.img镜像文件固化至评估板,请根据实际情况固化案例测试的内核镜像。
上电启动后,RS232 UART2调试串口将打印如下信息。
图 51?m0_baremetal
图 52?m0_rtos
图 53?a53-3_baremetal
图 54?a53-3_rtos
请将产品资料“4-软件资料Demoamp-demosamp_ad_capturehost_linuxbin”目录下的可执行文件ad_display拷贝至评估板文件系统任意目录下。
图 55
执行如下命令,查询程序运行参数。
Target# ./ad_display -h
备注:出现"QStandardPaths…"打印信息不影响测试,忽略即可。
图 56
单次采集
执行如下命令,单次采集1024个数据采样点。
Target# ./ad_display -d ad7616-m 1 -platform wayland
参数解析:
-d:指定设备节点;
-m:选择运行模式(1表示单次采集,2表示连续采集)。
图 57
同时,HDMI显示屏将会显示静态波形,如下图所示。
图 58
按下"Ctrl + C"可停止程序运行。
图 59?m0_baremetal/m0_rtos
图 60?a53-3_baremetal/a53-3_rtos
连续采集
执行如下命令,以连续采集数据。
Target# ./ad_display -d ad7616 -m 2 -platform wayland
图 61
同时,HDMI显示屏将会实时显示动态波形,如下图所示。
图 62
程序运行过程中,CPU占用率约为102.6%。
图 63
按下"Ctrl + C"可停止程序运行。
图 64?m0_baremetal/m0_rtos
图 65?a53-3_baremetal/a53-3_rtos
由于在连续模式采集时,每次循环采集4096个点,并以32帧画面动态显示在HDMI显示屏,每帧图像显示采集点数为128个,因此CPU占用率高。如需降低CPU占用率可通过增加每帧图像采集点数,将HDMI显示屏上动态显示的画面帧数降低。修改方法请参考“TL7606I模块测试”小节内容进行修改。
备注:
采样率= 1s / (单次转换耗时(s) + 单次SPI传输耗时(s))。
AD7616芯片单次转换耗时 = 单通道对转换耗时 + (通道对数 -1) x(单通道对转换耗时 + 单通道采样耗时)
AD7616芯片每次采样16通道(8通道对,共32Byte)数据,单通道对转换耗时为0.5us,因此根据AD7616单次转换耗时公式可得AD7616单次转换耗时为7.5us,SPI时钟最高支持50MHz,因此AD7616理论采样率 =1s/ ((7.5us + (1000000us / 50000000 x32 x8)) / 1000000) ≈79239 SPS。AD7616芯片采集单次转换耗时等数据的详细资料请查看AD7616芯片数据手册。
TL7616P模块测试时,由于硬件环境在SPI时钟在大于20MHz会有误码出现,因此SPI时钟为20MHz,经过实际测量,由于程序读取FIFO时将会消耗时间,SPI CS信号持续时间会比SPI CLK持续时间多2us,且代码耗时导致每次传输的间隔时间比理论转换耗时多2.5us,因此实际单次转换耗时 =单次转换耗时7.5us+ 2us;单次SPI传输耗时 = (1000000us / 20000000 x 32 x 8) + 2us。TL7616P模块实际采样率 =1s/ ((7.5us + 2us+ (1000000us / 20000000 x32 x8) + 2us) / 1000000) ≈40323SPS,与测试结果相近。
图 66
由于案例SPI时钟频率高,采样率变化幅度大,因此连续采集的波形会出现相位偏移的现象(如速率不一致,左右偏移),但实际上波形是连续且正确的数据。若SPI时钟频率降低,采样率变化幅度将变小,即可避免该现象。
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
审核编辑 黄宇
-
开发板
+关注
关注
25文章
5725浏览量
105595 -
瑞芯微
+关注
关注
25文章
617浏览量
52560 -
RK3562
+关注
关注
0文章
81浏览量
390
发布评论请先 登录
评论