AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)

黃工發表於2022-05-12
目 錄
1 ————案例功能
2 ————操作說明
2.1 ————硬體連線
2.2 ————案例測試
2.3 ————使用CCS檢視訊號波形
2.3.1 ————載入Symbols資訊表
2.3.2 ————檢視時域波形
2.3.3 ————檢視頻域波形
3 ————案例編譯
4 ————關鍵程式碼
4.1 ————ARM(Host)端關鍵程式碼
4.2 ————DSP(Slave)端關鍵程式碼

 

本文件適用開發環境:

Windows開發環境:Windows 7 64bit、Windows 10 64bit

Linux Processor SDK:ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05

RTOS Processor SDK:ti-processor-sdk-rtos-am57xx-evm-04.03.00.05

CCS:CCS7.4

 

本案例主要是通過GPMC介面採集AD7606或ADS8568模組輸入的AD訊號,由DSP端對AD訊號進行FFT處理,並由ARM端對AD訊號進行Qt波形繪製、資料儲存等,其中使用到的測試板卡為創龍科技的TL570x-EVM工業開發板。

創龍科技TL570x-EVM是一款基於TI Sitara系列AM5708 ARM Cortex-A15 + 浮點DSP C66x處理器設計的異構多核SoC評估板,由核心板和評估底板組成。典型應用在運動控制、工業PC、機器視覺、智慧電力、視訊監測等領域。

核心板經過專業的PCB Layout和高低溫測試驗證,穩定可靠,可滿足各種工業應用環境。開發板介面資源豐富,引出雙路PRU百兆網口、千兆網口、USB 3.0、CAMERA、GPMC、HDMI、PCIe等介面,方便使用者快速進行產品方案評估與技術預研。

 

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)

案例功能

AM570x DSP端使用EDMA通過GPMC介面採集AD7606或ADS8568模組8通道的AD訊號,同時由DSP端對其中6通道的AD訊號進行FFT處理,最後將8通道時域資料和經FFT處理的6通道頻域資料儲存到DSP端L2SRAM中,可通過模擬器與CCS軟體檢視對應通道的時域波形和頻域波形。

程式儲存通道0的時域資料和經FFT處理的頻域資料至CMEM(共享記憶體)空間,通過IPC元件通知ARM端讀取該通道的時域資料和頻域資料,使用Qt在LCD螢幕上進行波形繪製,最後將資料儲存到檔案中。

本案例預設配置AD7606模組取樣週期為6us,即取樣率約為167KHz;配置ADS8568模組取樣週期分別為5us,即取樣率為200KHz。程式工作流程圖如下所示:

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 1

操作說明

硬體連線

將Tronlong的TL7606I(AD7606)模組或TL8568I(ADS8568)模組插入評估板GPMC擴充套件介面,並對模組進行獨立供電。TL7606I模組使用5V電源供電,J1跳線帽連線到0,使用±5V量程。TL8568I模組使用12V電源供電,軟體已配置為±12V量程。

將模組的待測輸通道正確連線訊號發生器,訊號發生器輸出頻率為4KHz、峰峰值為2Vpp(即幅值為1V)的正弦波訊號。待測訊號電壓請勿超過模組量程,否則可能會導致模組損壞。評估板接入LCD螢幕,並通過模擬器連線到PC機。硬體連線示意圖如下:

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 2 TL7606I模組硬體連線示意圖
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 3 TL7606I模組硬體連線示意圖
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 4 TL8568I模組硬體連線示意圖
  1. 案例測試

案例位於產品資料“4-軟體資料\Demo\rtos-examples\tl-linux-ipc-examples\tl-gpmc-ad-fft\”目錄下,案例目錄說明如下。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 5

表 1

bin目錄

app_host

ARM端可執行檔案

load-firmware.sh

DSP端可執行檔案執行指令碼

server_dsp1.xe66

DSP端可執行檔案

lib目錄

libqwt-6.1.3.tar.gz

QWT庫壓縮包

src目錄

dsp1目錄

存放DSP端原始碼和配置檔案等

host目錄

存放ARM端原始碼和配置檔案等

ludev目錄

存放共享記憶體庫原始碼和映象檔案等

shared目錄

存放多核共用程式碼定義相關檔案

makefile

頂層Makefile檔案,用於構建整個案例程式

products.mak

頂層配置檔案,用於配置編譯環境

由於本案例需依賴QWT庫檔案,因此請將libqwt-6.1.3.tar.gz壓縮包解壓,並將解壓目錄中的lib目錄下的libqwt.so、libqwt.so.6、libqwt.so.6.1、libqwt.so.6.1.3此四個QWT庫檔案拷貝到檔案系統“/usr/lib/”目錄下。同時將bin目錄下的app_host、server_dsp1.xe66、load-firmware.sh此三個檔案拷貝到評估板檔案系統同一個目錄下。

 

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 6

Linux核心預留0xa0000000~0xac000000(192MByte)記憶體作為CMEM共享記憶體,案例使用0xa0000000~0xa0008000(32KByte)記憶體進行測試,此32KByte記憶體劃分為2個16KByte (0x4000,16384)池空間,分別用於存放模組通道0的時域資料和頻域資料。

進入評估板檔案系統執行如下命令。

備註:由於CMEM共享記憶體地址空間已超過512MByte,故如下測試僅支援DDR3不小於1GByte的評估板。

Target# /etc/init.d/matrix-gui-2.0 stop //關閉Matrix介面程式

Target# pkill ti-mctd //禁用ti-mctd服務,避免cmemk驅動解除安裝失敗

Target# rmmod cmemk //解除安裝cmemk驅動

Target# modprobe cmemk phys_start=0xa0000000 phys_end=0xa0008000 pools=2x16384 //劃分2個16KByte池空間

Target# cat /proc/cmem //檢視CMEM配置

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 7
 
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 8

進入app_host、server_dsp1.xe66、load-firmware.sh檔案所在目錄並執行如下命令,執行DSP端程式。

Target# ./load-firmware.sh

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 9

執行如下命令可檢視ARM端程式引數說明。

Target# ./app_host -h

 

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 10

執行如下命令,執行ARM端程式。

Target# ./app_host 0x01000000 6 10000 /home/root/ 7606

命令引數說明:

0x01000000:指定GPMC片選首地址,使用的GPMC片選為CS0。

6:指定訊號採集週期(單位:us)。TL7606I模組設定為6,TL8568I模組設定為5。

10000:指定採集迴圈次數。

/home/root/:指定模組通道0的時域資料和頻域資料的儲存路徑。時域資料儲存檔案為ad_raw_data.txt,頻域資料儲存檔案為ad_fft_data.txt。

7606:指定模組型號。TL7606I模組設定為7606,TL8568I模組設定為8568。

 

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 11 TL7606I模組執行命令

 

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 12 TL8568I模組執行命令

程式執行後,即可在LCD螢幕上看到通道0的時域波形和頻域波形。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 13 時域波形
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 14 頻域波形
  1. 使用CCS檢視訊號波形

在程式執行過程中可使用CCS軟體檢視儲存在DSP端L2SRAM中的時域和頻域波形。

載入Symbols資訊表

進入app_host、server_dsp1.xe66、load-firmware.sh檔案所在目錄執行如下命令,執行DSP端程式。

Target# ./load-firmware.sh

驅動預設配置DSP端的電源控制模式為auto-suspend(自動休眠),當DSP端處於休眠狀態時,CCS將無法連線DSP端。

請執行如下命令設定電源控制模式為on,禁用auto-suspend模式。

Target# echo "on" > /sys/bus/platform/devices/40800000.dsp/power/control

請執行如下命令禁用錯誤恢復功能,避免發生錯誤時系統自動重啟DSP端,干擾除錯。

Target# echo disabled > /sys/kernel/debug/remoteproc/remoteproc2/recovery

請執行如下命令,執行ARM端程式(以TL7606I模組為例)。

Target# ./app_host 0x01000000 6 10000 /home/root/ 7606

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 15

開啟CCS,建立模擬配置檔案後進入Debug介面,右鍵點選“Connect Target”連線DSP端,如下圖所示。連線後DSP端程式將會暫停執行,請點選

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)

按鍵恢復執行。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 16

由於程式除錯需用到映象檔案中的Symbols資訊表,因此請點選“Run -> Load -> Load Symbols...”載入案例bin目錄下的server_dsp1.xe66映象檔案匯入Symbols資訊表。

備註:請確保載入的server_dsp1.xe66檔案與當前DSP端執行的是同一個映象檔案,否則可能導致符號地址不一致以及模擬執行錯誤。

 

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 17
 
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)

圖 18

檢視時域波形

點選“View -> Memory Browser”,在彈出介面的搜尋欄搜尋ch_raw_buffer陣列,該陣列存放時域資料,搜尋結果如下圖所示。ch_raw_buffer陣列包含8個地址,從左到右分別對應存放通道0至7時域資料的起始地址,例如0x00828EA0為存放通道0時域資料的起始地址。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 19

點選“Tools -> Graph -> Single Time”,如下圖所示。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 20

在彈出介面中按照下圖內容進行配置,然後點選OK,即可檢視AD訊號的時域波形。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 21

表 2

Acquisition Buffer Size

從Start Address開始讀取的資料長度

Dsp Data Type

讀取的資料型別

Start Address

從Start Addres開始讀取資料

Display Data Size

顯示的資料長度(即將多少個取樣點的資料進行顯示,該數值不能大於Acquisition Buffer Size)

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 22

程式已將8通道的時域資料儲存到DSP端L2SRAM,如需檢視其他通道波形,請按照上述方法開啟對應通道地址檢視即可。

本次使用TL7606I模組進行測試,在上圖中可看到通道0的時域波形,波形的幅值約為6796。從CCS看到的波形值為AD晶片內部暫存器儲存的數字量,從AD7606和ADS8568的晶片資料手冊得到的換算公式均為:數字量=待測量/量程*32768,則AD訊號實際幅值=數字量*量程/32768=6796*5V/32768=1.04V,與訊號發生器的1V標稱值接近。

檢視頻域波形

點選“View -> Memory Browser”,在彈出介面的搜尋欄搜尋ch_fft_buffer陣列,該陣列存放頻域資料,搜尋結果如下圖所示。ch_fft_buffer陣列包含8個地址,從左到右分別對應存放通道0至7頻域資料的起始地址,例如0x008292A0為存放通道0頻域資料的起始地址。

備註:由於受處理器的效能限制,程式預設只對通道0~5進行FFT處理,因此ch_fft_buffer陣列未存放通道6和7頻域資料。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 23

點選“Tools -> Graph -> Single Time”,如下圖所示。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 24

在彈出介面中按照下圖內容進行配置,然後點選OK,即可檢視AD訊號的頻域波形。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 25

 

表 3

Acquisition Buffer Size

從Start Address開始讀取的資料長度

Dsp Data Type

讀取的資料型別

Index Increment

索引增量(即每個取樣點資料序號的相差值,由於FFT資料以複數形式儲存,只取複數中的實部進行顯示,因此設定成2,隔點取值顯示)

Start Address

從Start Addres開始讀取資料

Display Data Size

顯示的資料長度(即將多少個取樣點的資料進行顯示,該數值不能大於Acquisition Buffer Size)

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 26

點選選單欄放大按鈕進行放大檢視,點選

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)

開啟遊標工具,再點選X-Axis可檢視到訊號存在,如下圖所示。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 27
 

程式已將6通道的頻域資料儲存到DSP端L2SRAM,如需檢視其他通道波形,請按照上述方法開啟對應通道地址檢視即可。

本次使用TL7606I模組進行測試,在上圖中可看到通道0的頻域波形在第12個點存在訊號。程式命令已設定每6us觸發一次TL7606I模組的CONVST/GPIO5[13]引腳進行AD訊號採集。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 28
AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 29

在程式執行過程中使用示波器通過測量CONVST/GPIO5[13]引腳,測得訊號實際採集週期為5.720us,即訊號實際取樣率為174.8KHz。

AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)
圖 30

與設定的6us存在一定誤差的原因主要有如下兩點:

  1. 程式使用的GPTimer6定時器的精度存在誤差,並受系統延時影響。
  2. GPIO引腳電平翻轉存在約100ns的時延。如選擇專用的定時器輸出引腳作為觸發訊號,可降低時延。

根據採集頻率計算公式,某點n所表示的取樣頻率為:Fn=n*(Fs/N)(n>=0),引數解析如下表。

表 4

Fn

取樣頻率

n

存在訊號的點

Fs

訊號取樣率

N

訊號取樣長度

可得出實際的取樣頻率Fn=12*(174.8KHz/512)=4.0969KHz,與訊號發生器的4KHz標稱值接近。

到這裡,案例功能和操作的基本說明,包括硬體連線與案例測試、如何使用CCS檢視訊號波形部分就介紹到這裡,想要檢視案例編譯和ARM(Host)端、DSP(Slave)端的關鍵程式碼,請看下篇文章,感謝關注,歡迎點贊或評論區留言!

 

相關文章