0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过libusb实现PC和ZYNQ之间的USB通信

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-19 19:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 概述

libusb是一个免费的跨平台USB库,本文在windows平台下使用libusb库开发上位机程序与ZYNQ的USB接口进行数据收发测试。libusb可以支持WinUSB驱动,因此为ZYNQ的USB接口设备安装WinUSB驱动。

libusb网址:https://libusb.info/

windows下开发指南:https://github.com/libusb/libusb/wiki/Windows

2 libusb库

https://libusb.info/可以下载libusb库,目前的最新版本是1.0.23。解压后的目录如下:

通过libusb实现PC和ZYNQ之间的USB通信

使用VS作为上位机驱动的开发环境,因此需要使用MS32或者MS64文件夹下的dll和lib文件。以及include里的头文件。

3 ZYNQ裸机程序设计

PS端的USB接口作为Endpoint Device。设计了3个Endpoint,分别为:

Endpoint 0:control endpoint
Endpoint 1:BULK endpoint
Endpoint 2:interrupt endpoint

分别对应控制传输、块传输和中断传输。

通过libusb实现PC和ZYNQ之间的USB通信

USB的PID设为0x0007,PID设为0x0001。

通过libusb实现PC和ZYNQ之间的USB通信

设计USB设备的字符串描述。

通过libusb实现PC和ZYNQ之间的USB通信

4 上位机测试程序设计

PC机作为HOST,调用libusb的API函数设计上位机程序,分别测试电脑与开发板USB接口之间的BULK和interrupt模式传输速率。实现如下功能:

  • PC->ZYNQ BULK模式发送数据
  • PC->ZYNQ->PC BULK模式数据回环
  • PC->ZYNQ interrupt模式发送数据
  • PC->ZYNQ->PC interrupt模式数据回环

5 USB驱动安装

安装libusb驱动。使用Zadig软件生产使用WinUSB内核的USB驱动,选择Create New Device。

通过libusb实现PC和ZYNQ之间的USB通信

选择advance mode

通过libusb实现PC和ZYNQ之间的USB通信

选择提取驱动文件。

通过libusb实现PC和ZYNQ之间的USB通信

输入设备名称ZYNQ USB DEVICE,VID 0x0007,PID0x0001。

通过libusb实现PC和ZYNQ之间的USB通信

选择驱动文件提取的存放目录,然后点击Extract Files

通过libusb实现PC和ZYNQ之间的USB通信

完成后,打开驱动文件所在目录,可以找到生成的驱动文件。

通过libusb实现PC和ZYNQ之间的USB通信

对于Win10系统,首先要禁用数字签名。将开发板USB口与电脑连接,将程序通过SDK下载到开发板中,此时电脑设备管理器提示发现新的USB设备。选择设备,安装上述目录下已经生成的USB驱动程序。

6 USB传输速率测试

6.1 BULK模式

6.1.1 PC向ZYNQ单向发送

8字节包

通过libusb实现PC和ZYNQ之间的USB通信

64字节包

通过libusb实现PC和ZYNQ之间的USB通信

256字节包

通过libusb实现PC和ZYNQ之间的USB通信

1024字节包

通过libusb实现PC和ZYNQ之间的USB通信

2048字节包

通过libusb实现PC和ZYNQ之间的USB通信

4096字节包

通过libusb实现PC和ZYNQ之间的USB通信

6.1.2 PC与ZYNQ间数据回环

实际速率需要将图中的速率乘以2倍

8字节包

通过libusb实现PC和ZYNQ之间的USB通信

64字节包

通过libusb实现PC和ZYNQ之间的USB通信

256字节包

通过libusb实现PC和ZYNQ之间的USB通信

1024字节包

通过libusb实现PC和ZYNQ之间的USB通信

2048字节包

通过libusb实现PC和ZYNQ之间的USB通信

4096字节包

通过libusb实现PC和ZYNQ之间的USB通信

6.2 interrupt模式

6.2.1 PC向ZYNQ单向发送数据

8字节包

通过libusb实现PC和ZYNQ之间的USB通信

64字节包

通过libusb实现PC和ZYNQ之间的USB通信

256字节包

通过libusb实现PC和ZYNQ之间的USB通信

1024字节包

通过libusb实现PC和ZYNQ之间的USB通信

2048字节包

通过libusb实现PC和ZYNQ之间的USB通信

4096字节包

通过libusb实现PC和ZYNQ之间的USB通信

6.2.2 PC与ZYNQ间数据回环

实际速率需要将图中的速率乘以2倍

8字节包

通过libusb实现PC和ZYNQ之间的USB通信

64字节包

通过libusb实现PC和ZYNQ之间的USB通信

256字节包

通过libusb实现PC和ZYNQ之间的USB通信

1024字节包

通过libusb实现PC和ZYNQ之间的USB通信

2048字节包

通过libusb实现PC和ZYNQ之间的USB通信

4096字节包

通过libusb实现PC和ZYNQ之间的USB通信
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    8372

    浏览量

    281670
  • 通信
    +关注

    关注

    18

    文章

    6316

    浏览量

    139562
  • PC
    PC
    +关注

    关注

    9

    文章

    2164

    浏览量

    158494
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NICE接口和协处理器之间怎样实现通信

    NICE接口和协处理器之间怎样实现通信
    发表于 11-05 12:42

    ZYNQ PS与PL数据交互方式

    ZYNQ SoC 的 PS (Processing System) 和 PL (Programmable Logic) 之间的数据交互是系统设计的核心。
    的头像 发表于 10-15 10:33 530次阅读
    <b class='flag-5'>ZYNQ</b> PS与PL数据交互方式

    Texas Instruments USB-TO-GPIO2接口适配器技术解析

    桥接器。USB 接口适配器与主机 PC 之间通信通过 USB
    的头像 发表于 09-10 15:47 652次阅读

    MA35-RTT如何安装 Python 和 Libusb (Windows) ?

    MA35-RTT:如何安装 Python 和 Libusb (Windows) ?
    发表于 09-03 08:30

    请问新唐提供的ISP代码(USB接口)如何判断开机后是否需要ISP更新程序?

    并与之通信,并确定是否需要ISP更新。优点是不需要额外的硬件成本,缺点是USB识别需要一段时间。 通常,当使用 USB 作为 ISP 更新的接口时,会使用硬件判定,因为软件判定需要更长的时间(几秒钟)来识别和
    发表于 08-27 07:13

    如何通过USS协议实现变频器与PLC之间通信

    USS协议(Universal Serial Interface Protocol)是西门子公司专为驱动设备设计的基于串行通信的通用协议,它通过RS485物理接口实现PLC与变频器等设备的经济高效
    的头像 发表于 06-07 17:21 1025次阅读
    如何<b class='flag-5'>通过</b>USS协议<b class='flag-5'>实现</b>变频器与PLC<b class='flag-5'>之间</b>的<b class='flag-5'>通信</b>?

    CYUSB3014与PC通信几小时后断开,通过bus hound抓不到任何通信数据,为什么?

    PC是WIN7系统,PC端APP通过USB3与下位机通信几个小时以后,通信就会断开,
    发表于 06-04 08:27

    MCU是否可以使用普通IO口和数据总线控制cy7c68013a,用异步slavefifo模式增加一个与PC通信USB口?

    cy7c68013a的固件已经配置成异步slave模式,是否有MCU用IO口控制cy7c68013a通过数据总线来实现PCUSB通信
    发表于 05-30 06:32

    上位机和下位机之间通信通过什么实现

    上位机和下位机之间通信通过多种方式实现,以下从有线通信和无线通信两大类别展开介绍: 有线
    的头像 发表于 05-29 09:24 764次阅读

    带有USB C的便携式设备可以通过USB C转USB A电缆连接到计算机的USB A吗?

    通过 PC 进行数据传输。 但是我们现在正在解决USB A到PC的向后兼容问题,这样即使没有USB C连接器,用户也可以将我们的设备连接到
    发表于 05-27 06:29

    使用libusb可以打开libusb设备,但是无法烧写固件,为什么?

    我使用libusb可以打开libusb设备,但是无法烧写固件,我需要在执行烧录固件之前,还需要做什么步骤
    发表于 05-23 07:34

    如何在FX3和FX10芯片上运行/实现USB 3.0批量流?

    我们正在尝试在 FX3 和 FX10 芯片上运行/实现 USB 3.0 批量流(单个 IN 端点上的多个流)。 到目前为止,我们已经能够在 FX10 上实现它们(两个流的枚举),并尝试 FX3 上
    发表于 05-09 06:10

    请问k230可否和树莓派通过USB-typeC线来通信

    能否让一根线接树莓派的USB接口同时接到k230的tpyeC接口,同时供电和通信,将k230视觉获取的信息传给树莓派。这个能实现吗有没有什么学习的例程?求各位大佬教教 你好,可以让树莓派做us
    发表于 04-28 08:25

    zynq通过什么接口去控制DLP?

    我是用ZYNQ控制DLP,DLP的投影,给sensor采集。我的问题是zynq通过什么接口去控制DLP。DLP和sensor没有物理连接,sensor会直接拍DLP的投影
    发表于 02-21 06:56

    利用FPGA实现USB 2.0通信接口

    USB 2.0接口的实现方式 利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部
    的头像 发表于 12-30 13:59 3776次阅读
    利用FPGA<b class='flag-5'>实现</b><b class='flag-5'>USB</b> 2.0<b class='flag-5'>通信</b>接口