首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >创龙 瑞芯微 RK3562 国产 2GHz 四核A53 工业开发板—基于AMP的多通道AD采集开发案例

创龙 瑞芯微 RK3562 国产 2GHz 四核A53 工业开发板—基于AMP的多通道AD采集开发案例

原创
作者头像
创龙科技Tronlong
发布2025-07-14 14:45:28
发布2025-07-14 14:45:28
1660
举报

前 言

本文主要介绍创龙科技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-软件资料\Demo\amp-demos\”目录下。

备注:

  1. a53-3_baremetal为Cortex-A53(CPU3)核心Baremetal工程文件;
  2. a53-3_rtos为Cortex-A53(CPU3)核心RT-Thread(RTOS)工程文件;
  3. m0_baremetal为Cortex-M0(MCU)核心Baremetal工程文件;
  4. m0_rtos为Cortex-M0(MCU)核心RT-Thread(RTOS)工程文件;
  5. 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种模式:

  1. 单次采集:程序采集1024个数据后,显示静态波形。
  2. 连续采集:程序将会连续采集数据,并实时显示动态波形。

程序流程如下图所示。

图 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)程序前,需先替换关闭相关外设资源的内核镜像。

评估板上电启动,请将案例"dts\bin\"目录下的内核镜像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/mmcblk1p3 conv=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-软件资料\Demo\amp-demos\amp_ad_capture\host_linux\bin\”目录下的可执行文件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_linux\src\ad_display\src\"目录下的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 x 16 x 8)) / 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 x 16 x 8) + 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

请将评估底板BACK LIGHT接口(CON22)的12V(pin2)引脚通过飞线引出方式连接至TL7616P模块CON2接口的pin1引脚;将BACK LIGHT接口(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)程序前,需先替换关闭相关外设资源的内核镜像。

评估板上电启动,请将案例"dts\bin\"目录下的内核镜像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/mmcblk1p3 conv=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-软件资料\Demo\amp-demos\amp_ad_capture\host_linux\bin\”目录下的可执行文件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 x 32 x 8)) / 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 x 32 x 8) + 2us) / 1000000) ≈ 40323 SPS,与测试结果相近。

图 66

由于案例SPI时钟频率高,采样率变化幅度大,因此连续采集的波形会出现相位偏移的现象(如速率不一致,左右偏移),但实际上波形是连续且正确的数据。若SPI时钟频率降低,采样率变化幅度将变小,即可避免该现象。

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前 言
    • ad_display案例
      • 案例说明
      • 案例测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档