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