新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于Zynq的FSAE賽車遙測平臺—一種實(shí)時(shí)遙測系統(tǒng)

基于Zynq的FSAE賽車遙測平臺—一種實(shí)時(shí)遙測系統(tǒng)

作者:陳鑫宇 譚洪仕 徐寬 時(shí)間:2017-02-17 來源:電子產(chǎn)品世界 收藏

圖4   項(xiàng)目框圖  

本文引用地址:http://m.butianyuan.cn/article/201702/344141.htm

圖5    軟件流程圖
A9 處理器和豐富的邏輯資源,有很好的可拓展性,非常適 合本項(xiàng)目的開發(fā)工作。

具體實(shí)現(xiàn)
車載數(shù)據(jù)發(fā)送端:
行車數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn):車隊(duì)使用的ECU型號為MoTeC M800,基于CAN2.0協(xié)議,采用廣播式發(fā)送,每次發(fā)送173 字節(jié)的數(shù)據(jù)包,傳輸速率為1Mbps。本項(xiàng)目自制一個(gè)基于 STM32的數(shù)據(jù)采集板完成ECU的數(shù)據(jù)采集、篩選和發(fā)送。 STM 3 2 自 帶 兩 個(gè) C A N 控 制 器 , 以 中 斷 方 式 接 收 來 自 ECU 的 C A N 報(bào) 文 , 以 輪 詢 方 式 通 過 無 線 串 口 發(fā) 送 數(shù) 據(jù) 。 采 用 HVP230作為CAN物理層收發(fā)器。經(jīng)驗(yàn)證,本方案可以高效 地采集并發(fā)送數(shù)據(jù),穩(wěn)定性非常高。
圖像和語音的傳輸采用FPV 2.4G無線傳輸。
手持平臺的接收端設(shè)計(jì):
雙核Cortex?-A9 處理器運(yùn)行Ubuntu系統(tǒng),交叉編譯并安 裝OpenCV和Qt。在Qt下采用多線程編程方式開發(fā)上位機(jī), 串口接收數(shù)據(jù)進(jìn)程與數(shù)據(jù)顯示進(jìn)程并行運(yùn)行。主線程調(diào)用 customplot庫,將另一個(gè)線程接收的數(shù)據(jù)通過折線圖實(shí)時(shí)顯 示出來。這樣就完成了行車數(shù)據(jù)接收和顯示。其次是車手 視角圖像和語音的傳輸實(shí)現(xiàn),采用FPV - CT210 2.4G接收模 塊,通過2.4G無線傳輸。安裝USB視頻采集卡驅(qū)動(dòng),并重新 編譯內(nèi)核。
項(xiàng)目開源鏈接:http://www.openhw.org/project-8
一部分項(xiàng)目步驟:
內(nèi)核編譯詳解:
首先去github下載linux xilinx-v2015.1源碼 下載地址https://github.com/Xilinx/linux-xlnx/tree/xilinx-
v2015.1 然后解壓cd linux-xlnx-xilinx-v2015.1/    進(jìn)入文件夾
make ARCH=arm xilinx_zynq_defconfig 添加usb攝像頭驅(qū)動(dòng)make ARCH=arm menuconfig Device Drivers --->
Multimedia support --->
Media USB Adapters ---> 選擇built-in
USB Video Class (UVC) 選擇built-in
UVC input events device support (NEW) 選擇built-in make ARCH=arm LOADADDR=0x00008000 uImage 編譯完成后,將uImage拷貝到sd卡fat分區(qū)。
U-boot制作:
? 首先去github下載uboot xilinx-v2015.1源碼
?  下載地址https://github.com/Xilinx/u-boot-xlnx/tree/
xilinx-v2015.1
? 解壓到工作目錄
? cd u-boot-xlnx-xilinx-v2015.1/
? make ARCH=arm zynq_zybo_config
?   修 改 u b o o t 環(huán) 境 變 量 s d b o o t 因 為 我 們 使 用 的 不 是
ramdisk文件系統(tǒng)
? vim include/configs/zynq-common.h
? 修改為:
"sdboot=if mmcinfo; then " "run uenvboot; "
"echo Copying Linux from SD to RAM... && "
"load mmc 0 ${kernel_load_address} ${kernel_image} && " " load mmc 0 ${devicetree_load_address} ${devicetree_
image} &&"
" bootm ${ kernel_load_address} - ${dev icetree_load_
address};" "fi