該項目還將創(chuàng)建一個Vivado和PetaLinux設計,該設計與安裝在ZUBoard上的SPI和I2C傳感器以及支持I2C點擊模塊一起工作。
然后,我們將使用I2C點擊接口與微點擊無刷3板一起工作,以控制簡單的BLDC電機。
Vivado構建
要在Vivado中開始非常簡單,我們需要創(chuàng)建一個針對ZUBoard的項目
選擇RTL Project,但不指定源
選擇ZUBoard,如果還沒有安裝,點擊安裝按鈕
單擊finish打開項目
項目打開后,創(chuàng)建一個新的框圖
保持姓名等不變
添加Zynq MPSoC處理元件
運行塊自動化,為ZUBoard配置正確配置Processing System
從boards選項卡將下列內(nèi)容拖到框圖上
結果應該如下所示
運行連接自動化
這將給出如下所示的結果框圖
重新定制Zynq MPSoC,在PS/PL選項卡上禁用AXI HPM1 FPD接口
在同一個PS/PL接口上,使能從PL到PS IRQ0的中斷
在IO配置選項卡上啟用SPI1并將其設置為EMIO -這使得引腳在PL中可用,并且意味著我們可以將它們路由到FPGA IO。
?添加一個Concat塊來提供中斷
?將concat塊設置為有5個輸入
?在AXI GPIO塊上啟用中斷
?記住對兩個AXI GPIO都這樣做
將所有塊中斷輸出連接到concat塊輸入,將concat塊的輸出連接到Zynq MPSoC中斷輸入。
使主SPI外部的EMIO引腳
添加一個常量塊并將其連接到EMIO SPI SS輸入
完成的設計應該如下所示
創(chuàng)建一個HDL包裝器,讓Vivado管理它
創(chuàng)建一個新的約束文件,并添加以下內(nèi)容
構建項目并在構建后導出XSA。
PetaLinux
創(chuàng)建一個新的petalinux項目,運行petalinux設置腳本
創(chuàng)建一個新項目
使用剛剛導出的XSA自定義項目-將目錄更改為剛剛創(chuàng)建的項目,并運行指向XSA的命令
這將打開對話框
關閉對話框,不做任何更改
運行該命令定制內(nèi)核
修改驅(qū)動程序以包括UserSpace SPI,退出并保存設置
運行命令來定制屋頂
啟用I2Ctools——這非常有用
在ZUBoard_live/project-spec/meta-user/recipes-bsp/device-tree/files目錄下編輯文件system_user. conf。如下圖所示
使用命令構建項目
等待構建完成,然后運行該命令
這將創(chuàng)建引導文件,復制boot.bin,鏡像??煽毓韬蛨D像。b到SD卡上。
硬件測試
一旦董事會已經(jīng)啟動了UART終端,我們應該能夠登錄到ZuBoard并運行命令
這將顯示I2C和SPI Dev接口
由于我們已經(jīng)安裝了I2C工具,我們也可以使用它們來掃描I2C網(wǎng)絡,運行命令i2detect將顯示所有I2C驅(qū)動程序
然后我們可以掃描一個特定的I2C接口來確定連接的是什么。
如果您愿意,您甚至可以使用I2Ctools在總線上讀寫。這可以使用命令sudo i2cget 3 0x3f 0x01來實現(xiàn)。這是從I2C總線3中獲得的,在設備地址0x3F處,寄存器0x01的內(nèi)容,這是溫度傳感器上的whoami寄存器。根據(jù)數(shù)據(jù)表,0xA0的值是正確的
溫度傳感器
要開始我們的SW開發(fā),我們需要首先插入SD卡,確保ZUBoard設置為從SD啟動,連接單擊無刷3模塊并給板上電。
至關重要的是,我們需要有一個以太網(wǎng)連接,也為調(diào)試和軟件開發(fā)。
?使用從Vivado導出的XSA文件,我們可以打開一個新的Vitis項目并開發(fā)我們的軟件
?創(chuàng)建一個新的應用程序項目
?選擇新的應用程序項目并以從Vivado導出的XSA為目標
?選擇PSU_CORTEXa53_SMP作為目標類型
?注意操作系統(tǒng)是Linux
?選擇hello world應用程序
這將為項目打開Vitis的工作空間
在這里,我們可以用下面的代碼修改helloworld代碼,它將測試ZUBoard上的溫度傳感器
為了調(diào)試它,我們首先需要設置一個遠程目標連接,為此我們需要ZUBoard的IP地址
一旦安裝完成,我們就可以運行應用程序,我們將看到報告的溫度。
Vitis - Brushless 3 Click
現(xiàn)在開始與無刷點擊3工作,這是通過I2C控制。
創(chuàng)建一個針對相同平臺的新應用程序項目,再次選擇hello world應用程序,并用下面的代碼替換代碼。
當我們運行它并將其連接到電機上時,我們可以看到電機啟動并旋轉。
電機起動與運行
我們可以在Vitis的控制臺中看到我們輸出的任何消息。
結論
在這個項目中,我們已經(jīng)看到了如何為ZUBoard創(chuàng)建Vivado設計。將這些Vivado設計導入到PetaLinux中,并創(chuàng)建一個嵌入式Linux解決方案,使我們能夠使用嵌入式Linux特性與傳感器和物理驅(qū)動器一起工作。
本文編譯自hackster.io