ZYNQ裸机USB通信方案(基于libusb)

1 概述

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

        libusb网址:libusb

        windows下开发指南:Windows · libusb/libusb Wiki · GitHub

libusb库

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

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

ZYNQ裸机程序设计

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

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

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

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

        设计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。

        选择advance mode

        选择提取驱动文件。

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

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

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

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

6 USB传输速率测试 

6.1 BULK模式

6.1.1 PC向ZYNQ单向发送

        8字节包

        64字节包

         256字节包

        1024字节包

        2048字节包

        4096字节包

6.1.2 PC与ZYNQ间数据回环

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

        8字节包

        64字节包

        256字节包

        1024字节包

        2048字节包

        4096字节包

6.2 interrupt模式

6.2.1 PC向ZYNQ单向发送数据

        8字节包

        64字节包

        256字节包

        1024字节包

        2048字节包

        4096字节包

6.2.2 PC与ZYNQ间数据回环

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

        8字节包

        64字节包

        256字节包

        1024字节包

        2048字节包

        4096字节包

        需要工程源码的请私信,付费有偿提供。 

  • 4
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
Zynq是赛灵思(Xilinx)公司推出的一款SoC(System on a Chip),集成了ARM处理器和可编程逻辑部分。裸机是指在没有操作系统支持的情况下,直接在硬件平台上进行编程的方式。USB(Universal Serial Bus)是一种用于连接外部设备和计算机的通信接口。 在Zynq裸机环境中进行USB分析时,需要对USB通信协议和硬件接口有一定的了解。USB协议包括传输、设备和主机之间的通信规则和规范。在编程中,需要通过读取和写入USB寄存器来控制USB设备的数据传输和状态管理。 首先,需要初始化USB控制器和连接的设备。通过设置相应的寄存器,将USB控制器切换到USB主机模式,并与USB设备进行握手和通信。 然后,需要进行USB数据传输的配置和管理。通过设置传输控制和配置寄存器,选择数据传输的类型(如控制、批量、中断或等时传输),并设置数据包的大小和方向。 进行USB数据传输时,可以按照USB协议的规定,使用同步、异步或中断方式读取和写入数据。通过读取状态和中断寄存器,可以获取USB设备的状态和处理中断事件。 对于USB外设的驱动程序开发,还需根据具体的应用场景和需求进行功能扩展。例如,可以实现USB的热插拔支持,通过检测设备的插入和拔出事件,动态地进行设备的识别和初始化。 总之,Zynq裸机环境下的USB分析需要熟悉USB协议和硬件接口,并通过操作相关寄存器进行设备的初始化、数据传输和状态管理。这样可以实现基于ZynqUSB设备控制和数据交互,满足特定应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MmikerR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值