本文件適用開發環境:
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採集綜合案例手冊(上)](https://i.iter01.com/images/9cbf5ebae61ca3cc6132b781b82448ae41595edbfa22cf193fef52b040169f90.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/43c278338ba7e2d28b360a9c98406b6f885c2bc45a707976c4db52d9379cf743.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/eda7ef87b64a55b2100bc0e9c04d25de26740e60321813f6eb26a304b1114455.jpg)
案例功能
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採集綜合案例手冊(上)](https://i.iter01.com/images/15687e091bbe2ce2b957f871f8d99fd968afcf1e7f5a46351fee7faea930cef2.jpg)
操作說明
硬體連線
將Tronlong的TL7606I(AD7606)模組或TL8568I(ADS8568)模組插入評估板GPMC擴充套件介面,並對模組進行獨立供電。TL7606I模組使用5V電源供電,J1跳線帽連線到0,使用±5V量程。TL8568I模組使用12V電源供電,軟體已配置為±12V量程。
將模組的待測輸通道正確連線訊號發生器,訊號發生器輸出頻率為4KHz、峰峰值為2Vpp(即幅值為1V)的正弦波訊號。待測訊號電壓請勿超過模組量程,否則可能會導致模組損壞。評估板接入LCD螢幕,並通過模擬器連線到PC機。硬體連線示意圖如下:
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/55f7e5508909d3d27192191c2fb7a7b80f5a261640f39a2d957cc8c4431fcad7.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/c14569a6135b93962db7069d067eb0a48a976911adf437dd6934a05381312e73.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/fa15762934cef88c3852aea50b77665fc1585821f607e14f634445ea2b63780f.jpg)
- 案例測試
案例位於產品資料“4-軟體資料\Demo\rtos-examples\tl-linux-ipc-examples\tl-gpmc-ad-fft\”目錄下,案例目錄說明如下。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/6fede264597f16240c5fe5f22ec5fb15a6cb9b5deef66b2fd5b837e119e5264c.jpg)
表 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採集綜合案例手冊(上)](https://i.iter01.com/images/ed51eb6959031809a4ffaafdc14c8d14c61716ff3f0cd2d324a21beb1d41a25c.jpg)
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採集綜合案例手冊(上)](https://i.iter01.com/images/6a0daf2bc9aac2ff69689b3a54e34c7f494541e1f751eb929e6401889bb31157.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/4861b709666842c8325ce508cd67536d34da8cca179925c2a9d8e5cf76cb122f.jpg)
進入app_host、server_dsp1.xe66、load-firmware.sh檔案所在目錄並執行如下命令,執行DSP端程式。
Target# ./load-firmware.sh
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/fc45847ffae37b3414b9e894ca2289584ebf908c0e35f985b194b50ed5a995bf.jpg)
執行如下命令可檢視ARM端程式引數說明。
Target# ./app_host -h
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/2ce3bccf4f5cb4e993d6679b0cc1132c4863b97da115623bdae53bfa746c538c.jpg)
執行如下命令,執行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採集綜合案例手冊(上)](https://i.iter01.com/images/e1376d2cf3c098275d542e226b88c8f0101b0e471b59ee4d4b64f362e92e4993.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/f591c00c1b543039aa9218bd21e3e8bc4f9c0ebdc53631dec839d7579c3d782c.jpg)
程式執行後,即可在LCD螢幕上看到通道0的時域波形和頻域波形。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/2843e522317c8e9f4ef95b6c094fc6491738ce0a93ae9153b585d15791744163.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/204637cdd642ef13039d014089acedb3fc85ab98fe6ae5b3b90dc2e2a84e5e90.jpg)
- 使用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採集綜合案例手冊(上)](https://i.iter01.com/images/999bed35e708e77a3239fa4d7cfbe0a2ffc4d0dddb1de6194c77281039c6470b.jpg)
開啟CCS,建立模擬配置檔案後進入Debug介面,右鍵點選“Connect Target”連線DSP端,如下圖所示。連線後DSP端程式將會暫停執行,請點選
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/6d3f335f72655ce1d5e9865f778b80a73daf0dcb3b7e1abc3d56657b0c4319c6.jpg)
按鍵恢復執行。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/897aa147ce4c39e643b718c196b2f9f60bcecb9af5015342069bb40cf9b2512d.jpg)
由於程式除錯需用到映象檔案中的Symbols資訊表,因此請點選“Run -> Load -> Load Symbols...”載入案例bin目錄下的server_dsp1.xe66映象檔案匯入Symbols資訊表。
備註:請確保載入的server_dsp1.xe66檔案與當前DSP端執行的是同一個映象檔案,否則可能導致符號地址不一致以及模擬執行錯誤。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/6b2f5727ea07f9dcd4670b6684d5304cece5d5cc50a9bba7714747e39bb44e88.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/979a797677d71a37ec69f7d5de54c12d6c12bc4a89930a5fc6319f8e183b2a31.jpg)
圖 18
檢視時域波形
點選“View -> Memory Browser”,在彈出介面的搜尋欄搜尋ch_raw_buffer陣列,該陣列存放時域資料,搜尋結果如下圖所示。ch_raw_buffer陣列包含8個地址,從左到右分別對應存放通道0至7時域資料的起始地址,例如0x00828EA0為存放通道0時域資料的起始地址。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/78bf01d18f18cc75fd8c5cef7f568ccb457fa15ee63b4cf86b2f3ab5cf35ee08.jpg)
點選“Tools -> Graph -> Single Time”,如下圖所示。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/001ec2ca274c4d4659cece815d186afd314f1e6602ee96daa5d81a3550f1678c.jpg)
在彈出介面中按照下圖內容進行配置,然後點選OK,即可檢視AD訊號的時域波形。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/1b05780507dc40f56276c59ae65cf7d108bface7e3eaee5d62ec178fa1a23da1.jpg)
表 2
Acquisition Buffer Size |
從Start Address開始讀取的資料長度 |
Dsp Data Type |
讀取的資料型別 |
Start Address |
從Start Addres開始讀取資料 |
Display Data Size |
顯示的資料長度(即將多少個取樣點的資料進行顯示,該數值不能大於Acquisition Buffer Size) |
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/c4cc74d8ef23cc2045ee3a47722dfb0ca656d1da4294e8a84871bb737e69c7b5.jpg)
程式已將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採集綜合案例手冊(上)](https://i.iter01.com/images/aa9389eb3a7155cd2c8660b8d261943b05fdebd2caf69f765449db3c39ccea41.jpg)
點選“Tools -> Graph -> Single Time”,如下圖所示。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/9061bdaa35234dea7ed6759c33f9437c410333ecaa217b4e596600fca737facd.jpg)
在彈出介面中按照下圖內容進行配置,然後點選OK,即可檢視AD訊號的頻域波形。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/be2ff1aac1bd9e67b32afdc21b6660fda33c6e5c09ccd0be0865c83689d27149.jpg)
表 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採集綜合案例手冊(上)](https://i.iter01.com/images/b0d79e39c07750c1a0dbb47e5f1dfb2d705b546407f4c5fbe7f5d2c9878f68ab.jpg)
點選選單欄放大按鈕進行放大檢視,點選
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/0148255bcf90f54fac06d942b1a59460a876f898d95eb1a723cbe4ef6766ac16.jpg)
開啟遊標工具,再點選X-Axis可檢視到訊號存在,如下圖所示。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/a6c495bd8ff45a45ff07c644b25a933af1f5735b29c2028d24c08b7632e9fb6f.jpg)
程式已將6通道的頻域資料儲存到DSP端L2SRAM,如需檢視其他通道波形,請按照上述方法開啟對應通道地址檢視即可。
本次使用TL7606I模組進行測試,在上圖中可看到通道0的頻域波形在第12個點存在訊號。程式命令已設定每6us觸發一次TL7606I模組的CONVST/GPIO5[13]引腳進行AD訊號採集。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/69c1a330a3e6495a6410876407af5346d86c524e5904c7fc8b337ab5192e4c9e.jpg)
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/1fd4f5eed5bcd75e0d4b33d0b0988bb05f9fd6a5f5978965c39d0c779109d4e6.jpg)
在程式執行過程中使用示波器通過測量CONVST/GPIO5[13]引腳,測得訊號實際採集週期為5.720us,即訊號實際取樣率為174.8KHz。
![AM57x 多核SoC開發板——GPMC的多通道AD採集綜合案例手冊(上)](https://i.iter01.com/images/b3bba2eb29ef129ddd6e58210dc8004e0a2c496e73885bf67e24cc094c825f01.jpg)
與設定的6us存在一定誤差的原因主要有如下兩點:
- 程式使用的GPTimer6定時器的精度存在誤差,並受系統延時影響。
- 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)端的關鍵程式碼,請看下篇文章,感謝關注,歡迎點贊或評論區留言!