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

电子说

1.4w人已加入

描述

前  言

本文主要介绍创龙科技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/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-软件资料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 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)程序前,需先替换关闭相关外设资源的内核镜像。

评估板上电启动,请将案例"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/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-软件资料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 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时钟频率降低,采样率变化幅度将变小,即可避免该现象。

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

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分