1 概述
libusb是一個(gè)免費(fèi)的跨平臺(tái)USB庫(kù),本文在windows平臺(tái)下使用libusb庫(kù)開(kāi)發(fā)上位機(jī)程序與ZYNQ的USB接口進(jìn)行數(shù)據(jù)收發(fā)測(cè)試。libusb可以支持WinUSB驅(qū)動(dòng),因此為ZYNQ的USB接口設(shè)備安裝WinUSB驅(qū)動(dòng)。
libusb網(wǎng)址:https://libusb.info/
windows下開(kāi)發(fā)指南:https://github.com/libusb/libusb/wiki/Windows
2 libusb庫(kù)
在https://libusb.info/可以下載libusb庫(kù),目前的最新版本是1.0.23。解壓后的目錄如下:

使用VS作為上位機(jī)驅(qū)動(dòng)的開(kāi)發(fā)環(huán)境,因此需要使用MS32或者M(jìn)S64文件夾下的dll和lib文件。以及include里的頭文件。
3 ZYNQ裸機(jī)程序設(shè)計(jì)
PS端的USB接口作為Endpoint Device。設(shè)計(jì)了3個(gè)Endpoint,分別為:
Endpoint 0:control endpoint
Endpoint 1:BULK endpoint
Endpoint 2:interrupt endpoint
分別對(duì)應(yīng)控制傳輸、塊傳輸和中斷傳輸。

USB的PID設(shè)為0x0007,PID設(shè)為0x0001。

設(shè)計(jì)USB設(shè)備的字符串描述。

4 上位機(jī)測(cè)試程序設(shè)計(jì)
PC機(jī)作為HOST,調(diào)用libusb的API函數(shù)設(shè)計(jì)上位機(jī)程序,分別測(cè)試電腦與開(kāi)發(fā)板USB接口之間的BULK和interrupt模式傳輸速率。實(shí)現(xiàn)如下功能:
- PC->ZYNQ BULK模式發(fā)送數(shù)據(jù)
- PC->ZYNQ->PC BULK模式數(shù)據(jù)回環(huán)
- PC->ZYNQ interrupt模式發(fā)送數(shù)據(jù)
- PC->ZYNQ->PC interrupt模式數(shù)據(jù)回環(huán)
5 USB驅(qū)動(dòng)安裝
安裝libusb驅(qū)動(dòng)。使用Zadig軟件生產(chǎn)使用WinUSB內(nèi)核的USB驅(qū)動(dòng),選擇Create New Device。

選擇advance mode

選擇提取驅(qū)動(dòng)文件。

輸入設(shè)備名稱ZYNQ USB DEVICE,VID 0x0007,PID0x0001。

選擇驅(qū)動(dòng)文件提取的存放目錄,然后點(diǎn)擊Extract Files

完成后,打開(kāi)驅(qū)動(dòng)文件所在目錄,可以找到生成的驅(qū)動(dòng)文件。

對(duì)于Win10系統(tǒng),首先要禁用數(shù)字簽名。將開(kāi)發(fā)板USB口與電腦連接,將程序通過(guò)SDK下載到開(kāi)發(fā)板中,此時(shí)電腦設(shè)備管理器提示發(fā)現(xiàn)新的USB設(shè)備。選擇設(shè)備,安裝上述目錄下已經(jīng)生成的USB驅(qū)動(dòng)程序。
6 USB傳輸速率測(cè)試
6.1 BULK模式
6.1.1 PC向ZYNQ單向發(fā)送
8字節(jié)包

64字節(jié)包

256字節(jié)包

1024字節(jié)包

2048字節(jié)包

4096字節(jié)包

6.1.2 PC與ZYNQ間數(shù)據(jù)回環(huán)
實(shí)際速率需要將圖中的速率乘以2倍
8字節(jié)包

64字節(jié)包

256字節(jié)包

1024字節(jié)包

2048字節(jié)包

4096字節(jié)包

6.2 interrupt模式
6.2.1 PC向ZYNQ單向發(fā)送數(shù)據(jù)
8字節(jié)包

64字節(jié)包

256字節(jié)包

1024字節(jié)包

2048字節(jié)包

4096字節(jié)包

6.2.2 PC與ZYNQ間數(shù)據(jù)回環(huán)
實(shí)際速率需要將圖中的速率乘以2倍
8字節(jié)包

64字節(jié)包

256字節(jié)包

1024字節(jié)包

2048字節(jié)包

4096字節(jié)包

-
usb
+關(guān)注
關(guān)注
60文章
8136瀏覽量
270755 -
通信
+關(guān)注
關(guān)注
18文章
6169瀏覽量
137362 -
PC
+關(guān)注
關(guān)注
9文章
2142瀏覽量
156032
發(fā)布評(píng)論請(qǐng)先 登錄
MCU是否可以使用普通IO口和數(shù)據(jù)總線控制cy7c68013a,用異步slavefifo模式增加一個(gè)與PC通信的USB口?
上位機(jī)和下位機(jī)之間的通信是通過(guò)什么實(shí)現(xiàn)的
CY7C65215-32LTXI插入USB查到PC上無(wú)法識(shí)別到USB端口怎么解決?
帶有USB C的便攜式設(shè)備可以通過(guò)USB C轉(zhuǎn)USB A電纜連接到計(jì)算機(jī)的USB A嗎?
使用libusb可以打開(kāi)libusb設(shè)備,但是無(wú)法燒寫固件,為什么?
如何在FX3和FX10芯片上運(yùn)行/實(shí)現(xiàn)USB 3.0批量流?
是否可以通過(guò)3014將數(shù)據(jù)從pc傳輸?shù)紽PGA?
請(qǐng)問(wèn)k230可否和樹(shù)莓派通過(guò)USB-typeC線來(lái)通信?
zynq通過(guò)什么接口去控制DLP?
利用FPGA實(shí)現(xiàn)USB 2.0通信接口

可以不通過(guò)pc使用usb2any連接dac81416嗎?
UART通信協(xié)議介紹和數(shù)據(jù)傳輸工作流程

評(píng)論