前 言
本文主要介紹創龍科技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文章
5695瀏覽量
104996 -
瑞芯微
+關注
關注
25文章
606瀏覽量
52497 -
RK3562
+關注
關注
0文章
81瀏覽量
375
發布評論請先 登錄
評論