精华内容
下载资源
问答
  • USB通信整理

    2020-12-04 21:52:18
    CH340是一个USB总线的转接芯片,实现USB转串口、 该电路为原子的串口下载电路 与Arduino等单片机不同的是,stm32单片机在串口下载时,不仅需要控制RESET来复位,还需控制BOOT0、BOOT1来选择启动位置 DTR#和RTS#都...

    CH340是一个USB总线的转接芯片,实现USB转串口、
    在这里插入图片描述
    在这里插入图片描述

    该电路为原子的串口下载电路
    与Arduino等单片机不同的是,stm32单片机在串口下载时,不仅需要控制RESET来复位,还需控制BOOT0、BOOT1来选择启动位置
    DTR#和RTS#都是 输出类型, MCUISP(一键下载工具),会控制CH340这两个引脚的高低电平状态,通过控制DTR#和RST#这两个引脚的高低电平状态,从而控制STM32的BOOT0 和 RESET.
    DTR#、RST#初始状态的时都是高电平,在启用下载的时候,DTR#维持高,RST#拉低,此时两个三极管Q2 和Q3 导通,那么BOOT0 为高电平,RESET为低电平复位,然后DTR#变低,Q2不导通,复位结束,此时BOOT0 为高电平。stm32的启动模式变为从系统存储器启动,启用串口下载,STM32 和 MCUISP下载软件进行通信,进行代码下载,等到代码下载结束时 RST#先变为高电平,然后DTR#在变成高电平。

    参考文献

    展开全文
  • 整理完善usb通信(usb打印),可判断设备连接状态和开关机状态,设备连接过程中断开连接后,自动连接. UncaughtExceptionHandler接口实现本地捕获异常log信息保存到本地内存,方便查看调试!
  • 这篇博客是针对之前的一篇...当我们安卓手机第一次安装我们USB相关功能的APK时,正常情况下,手机会弹出个类似于“XX应用访问USB设备…”的提示框,如果用户不接受的话,那肯定是不能进行USB通信的。 要怎么才能让手

    这篇博客是针对之前的一篇文章Android开发之USB数据通信作的补充。主要是在开发中发现了另外两个不得不面对的问题:

    1. USB访问权限处理。
    2. USB设备插拔状态监听。

    —USB访问权限处理——-
    当我们安卓手机第一次安装我们USB相关功能的APK时,正常情况下,手机会弹出个类似于“XX应用访问USB设备…”的提示框,如果用户不接受的话,那肯定是不能进行USB通信的。
    要怎么才能让手机在安装应用时弹出对应地提示框呢?答案就是在我们的项目中添加相应的权限访问的代码。

    1,在Activity的OnCreate()方法中注册广播:

     private PendingIntent mPermissionIntent;
     ....
      mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
            //注册USB设备权限管理广播
            IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
            registerReceiver(usbReceiver, filter);
    

    2,广播处理:

    private final BroadcastReceiver usbReceiver = new BroadcastReceiver() {
    
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (ACTION_USB_PERMISSION.equals(action)) {
                    synchronized (this) {
                        UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                        if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                            if (device != null) {
                            }
                        } else {
                            showTmsg("用户不允许USB访问设备,程序退出!");
                            finish();
                        }
                    }
                }
            }
        };

    3,我们在查找到USB设备时,也应该判断下设备权限,如果没有权限,则请求权限:

     if (!manager.hasPermission(usb)) {//权限判断
                    manager.requestPermission(usb, mPermissionIntent);
                }
     //注:usb是指UsbDevice对象,manager是指UsbManager对象。

    —-USB设备插拔状态监听——
    如果用户在使用应用的过程中,有意或无意中拔出了USB设备后,程序肯定也是不能进行操作的,当然我们也要做相应地判断。
    1,同样是注册广播:

     IntentFilter filter = new IntentFilter();
            filter.addAction(UsbManager.ACTION_USB_ACCESSORY_ATTACHED);
            filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
            filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
            registerReceiver(usbStateReceiver, filter);

    2,广播代码处理:

      private final BroadcastReceiver usbStateReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                //USB连接上手机时会发送广播android.hardware.usb.action.USB_STATE"及UsbManager.ACTION_USB_DEVICE_ATTACHED
                if (action.equals(ACTION) | action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {//判断其中一个就可以了
                    showTmsg("USB已经连接!");
                } else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {//USB被拔出
                    showTmsg("USB连接断开,程序退出!");
                    finish();
                }
            }
        };
    
        //注1:UsbManager.ACTION_USB_DEVICE_ATTACHED对应的广播在USB每次插入时都能监听到,所以用这个就可以监听USB插入。
        //注2:UsbManager.ACTION_USB_DEVICE_DETACHED用来监听USB拔出广播。
        //注3:网上有不少资料是说通过android.hardware.usb.action.USB_STATE对应的广播来监听USB插拔,我在开发中发现该ACTION只在USB插入的时候能监听到,拔出时没有作
    展开全文
  • 一般在USB控制芯片中,其相关的状态寄存器里几乎都会有类似的位设置,以方便固件程序代码的编写。例如,在Cypress CY7C63系列的USB控制芯片中,USB端点0 TX配置缓存器的位6即是DATA 1/0位。  由于传送器与接收器...
  • AVR USB 通信实验

    2009-12-17 00:59:11
    1.实现单片机驱动USBD12的固件,并可以在开发板上的LED显示状态 2.实现PC机对应USBD12的驱动和应用程序
  • USB通信的基础

    2014-01-23 16:15:11
    USB设备通信的重点是控制传输阶段的枚举过程,即对EP0部分编程,此部分结合MCU数据手册非常重要,要弄清楚EP0_CSR各标志位如何使用,这部分花了我不少时间。对于枚举过程,每个步骤要记住3个阶段:设置 – 数据...

    枚举过程的个人体会:

    USB设备通信的重点是控制传输阶段的枚举过程,即对EP0部分编程,此部分结合MCU数据手册非常重要,要弄清楚EP0_CSR各标志位如何使用,这部分花了我不少时间。对于枚举过程,每个步骤要记住3个阶段:设置 – 数据(可无,可多个包) – 状态,每个阶段又分3个包:令牌 - 数据 - 握手。我们所要关心的时数据阶段及数据包部分,而状态阶段及握手包部分是结合MCU手册编程使得硬件自动实现。

     

    下面转载USB相关基础知识:

     

    USB的重要关键字:

      1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)

      2、帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。

      3、上行、下行:设备到主机为上行,主机到设备为下行

     

    USB的传输线结构:

    一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA。

     

    USB数据格式:

    USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。数据在USB线里传送是由低位到高位发送的。

    下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。

    一、域:是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型:

      1、同步域(SYNC),八位,值固定为0000 0001,用于本地时钟与输入同步

      2、标识域(PID),由四位标识符+四位标识符反码构成,表明包的类型和格式,这是一个很重要的部分,这里可以计算出,USB的标识码有16种,在USB1.1规范里面,只用了十种标识码,USB2.0使用了十六种标识码,标识码的作用是用来说明包的属性的,标识码是和包联系在一起的,首先简单介绍一下数据包的类型,数据包分为令牌包、数据、握手包和特殊包四种,标识码分别有以下十种(1.1规范):

    令牌包 :

    0x01 输出(OUT)启动一个方向为主机到设备的传输,并包含了设备地址和标号

    0x09 输入 (IN) 启动一个方向为设备到主机的传输,并包含了设备地址和标号

    0x05 帧起始(SOF)表示一个帧的开始,并且包含了相应的帧号

    0x0d 设置(SETUP)启动一个控制传输,用于主机对设备的初始化

    数据包 :

    0x03 偶数据包(DATA0),

    0x0b 奇数据包(DATA1)

    握手包:

    0x02 确认接收到无误的数据包(ACK)

    0x0a 无效,接收(发送)端正在忙而无法接收(发送)信息

    0x0e 错误,端点被禁止或不支持控制管道请求

    特殊包 0x0C 前导,用于启动下行端口的低速设备的数据传输

      3、地址域(ADDR):七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此可以知道为什么一个USB主机只能接127个设备的原因。

      4、端点域(ENDP),四位,由此可知一个USB设备有的端点数量最大为16个。

      5、帧号域(FRAM),11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800,对于同步传输有重要意义(同步传输为四种传输类型之一,请看下面)。

      6、数据域(DATA):长度为0~1023字节,在不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度

      7、校验域(CRC):对令牌包和数据包(对于包的分类请看下面)中非PID域进行校验的一种方法,CRC校验在通讯中应用很泛,是一种很好的校验方法,至于具体的校验方法这里就不多说,请查阅相关资料,只须注意CRC码的除法是模2运算,不同于10进制中的除法。

     

    二、包:由域构成的包有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同的包的域结构不同,介绍如下:

      1、令牌包:可分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的,输出包是用来设置输出命令的,而不是放据数的)

    其中输入包、输出包和设置包的格式都是一样的:

    SYNC+PID+ADDR+ENDP+CRC5(五位的校验码)  

    (上面的缩写解释请看上面域的介绍,PID码的具体定义在上面)

    帧起始包的格式:

    SYNC+PID+11位FRAM+CRC5(五位的校验码)

      2、数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如下:

    SYNC+PID+0~1023字节+CRC16

      3、握手包:结构最为简单的包,格式如下

    SYNC+PID

     

    三、事务:分别有IN事务、OUT事务和SETUP事务三大事务,每一种事务都由令牌包、数据包、握手包三个阶段构成,这里用阶段的意思是因为这些包的发送是有一定的时间先后顺序的,事务的三个阶段如下:

      1、令牌包阶段:启动一个输入、输出或设置的事务

      2、数据包阶段:按输入、输出发送相应的数据

      3、握手包阶段:返回数据接收情况,在同步传输的IN和OUT事务中没有这个阶段,这是比较特殊的。

    事务的三种类型如下(以下按三个阶段来说明一个事务):

    (1)IN事务:

    令牌包阶段——主机发送一个PID为IN的输入包给设备,通知设备要往主机发送数据;

    数据包阶段——设备根据情况会作出三种反应(要注意:数据包阶段也不总是传送数据的,根据传输情况还会提前进入握手包阶段)

      1) 设备端点正常,设备往入主机里面发出数据包(DATA0与DATA1交替);

      2) 设备正在忙,无法往主机发出数据包就发送NAK无效包,IN事务提前结束,到了下一个IN事务才继续;

      3) 相应设备端点被禁止,发送错误包STALL包,事务也就提前结束了,总线进入空闲状态。

    握手包阶段——主机正确接收到数据之后就会向设备发送ACK包。

    (2)OUT事务:

        令牌包阶段——主机发送一个PID为OUT的输出包给设备,通知设备要接收数据;

        数据包阶段——比较简单,就是主机会设备送数据,DATA0与DATA1交替

        握手包阶段——设备根据情况会作出三种反应:

      1)设备端点接收正确,设备往入主机返回ACK,通知主机可以发送新的数据,如果数据包发生了CRC校验错误,将不返回任何握手信息;

      2) 设备正在忙,无法往主机发出数据包就发送NAK无效包,通知主机再次发送数据;

      3) 相应设备端点被禁止,发送错误包STALL包,事务提前结束,总线直接进入空闲状态。

    (3)SETUP事务:

        令牌包阶段——主机发送一个PID为SETUP的输出包给设备,通知设备要接收数据;

        数据包阶段——比较简单,就是主机会设备送数据,注意,这里只有一个固定为8个字节的DATA0包,这8个字节的内容就是标准的USB设备请求命令:

        标准的USB设备请求命令是用在控制传输中的“初始设置步骤”里的数据包阶段(即DATA0,由八个字节构成),请看回问答四的内容。标准USB设备请求命令共有11个,大小都是8个字节,具有相同的结构,由5个字段构成(字段是标准请求命令的数据部分),结构如下(括号中的数字表示字节数,首字母bm,b,w分别表示位图、字节,双字节):

        bmRequestType(1)+bRequest(1)+wvalue(2)+wIndex(2)+wLength(2)

    各字段的意义如下:

    <1> bmRequestType:D7D6D5D4D3D2D1D0

    D7=0主机到设备

    =1设备到主机;

    D6D5=00标准请求命令

        =01 类请求命令

        =10用户定义的命令
        =11保留值

    D4D3D2D1D0=00000 接收者为设备

              =00001 接收者为设备

              =00010 接收者为端点

              =00011 接收者为其他接收者

              =其他  其他值保留

    <2> bRequest:请求命令代码,在标准的USB命令中,每一个命令都定义了编号,编号的值就为字段的值,编号与命令名称如下(要注意这里的命令代码要与其他字段结合使用,可以说命令代码是标准请求命令代码的核心,正是因为这些命令代码而决定了11个USB标准请求命令):

    0) 0  GET_STATUS:用来返回特定接收者的状态

    1) 1  CLEAR_FEATURE:用来清除或禁止接收者的某些特性

    2) 3  SET_FEATURE:用来启用或激活命令接收者的某些特性

    3) 5  SET_ADDRESS:用来给设备分配地址

    4) 6  GET_DEscriptOR:用于主机获取设备的特定描述符

    5) 7  SET_DEscriptOR:修改设备中有关的描述符,或者增加新的描述符

    6) 8  GET_CONFIGURATION:用于主机获取设备当前设备的配置值(注同上面的不同) 

    7) 9  SET_CONFIGURATION:用于主机指示设备采用的要求的配置

    8) 10  GET_INTERFACE:用于获取当前某个接口描述符编号

    9) 11  SET_INTERFACE:用于主机要求设备用某个描述符来描述接口

    10) 12 SYNCH_FRAME:用于设备设置和报告一个端点的同步帧

    以上的11个命令要说得明白真的有一匹布那么长,请各位去看书吧,这里就不多说了,控制传输是USB的重心,而这11个命令是控制传输的重心,所以这11个命令是重中之重,这个搞明白了,USB就算是入门了。

        握手包阶段——设备接收到主机的命令信息后,返回ACK,此后总线进入空闲状态,并准备下一个传输(在SETUP事务后通常是一个IN或OUT事务构成的传输)。

     

    四、传输:传输由OUT、IN、SETUP事务其中的事务构成,传输有四种类型,中断传输、批量传输、同步传输、控制传输,其中中断传输和批量转输的结构一样,同步传输有最简单的结构,而控制传输是最重要的也是最复杂的传输。

      1、中断传输:由OUT事务和IN事务构成,用于键盘、鼠标等HID设备的数据传输中。

      2、批量传输:由OUT事务和IN事务构成,用于大容量数据传输,没有固定的传输速率,也不占用带宽,当总线忙时,USB会优先进行其他类型的数据传输,而暂时停止批量转输。

      3、同步传输:由OUT事务和IN事务构成,有两个特殊地方,第一,在同步传输的IN和OUT事务中是没有返回包阶段的;第二,在数据包阶段所有的数据包都为DATA0。

      4、控制传输:最重要的也是最复杂的传输,控制传输由三个阶段构成(初始设置阶段、可选数据阶段、状态信息步骤),每一个阶段可以看成一个的传输,也就是说控制传输其实是由三个传输构成的,用来于USB设备初次加接到主机之后,主机通过控制传输来交换信息,设备地址和读取设备的描述符,使得主机识别设备,并安装相应的驱动程序,这是每一个USB开发者都要关心的问题。

      (1)初始设置步骤:就是一个由SET事务构成的传输

      (2)可选数据步骤:就是一个由IN或OUT事务构成的传输,这个步骤是可选的,要看初始设置步骤有没有要求读/写数据(由SET事务的数据包阶段发送的标准请求命令决定)

      (3)状态信息步骤:顾名思义,这个步骤就是要获取状态信息,由IN或OUT事务构成的传输,但是要注意这里的IN和OUT事务和之前的INT和OUT事务有两点不同:

       1)传输方向相反,通常IN表示设备往主机送数据,OUT表示主机往设备送数据;在这里,IN表示主机往设备送数据,而OUT表示设备往主机送数据,这是为了和可选数据步骤相结合;

       2)在这个步骤里,数据包阶段的数据包都是0长度的,即SYNC+PID+CRC16。

     

    具体枚举步骤及图解见另一篇文章。。。

    展开全文
  • 以前写的一个项目,通过USB把MCU的程序下载到EEPROM中保存(这个是... 软件上有显示USB连接状态;软件要求通过授权文件的方式进行授权使用(怎么处理授权可以看说明及源程序)。 用到了CSV文件的读取,ini文件读写。
  • 本文着重介绍了该插座与上位机通信USB实现。为了将该插座的用途拓展到工业现场,文章对使用一种RS485到USB接口转换卡进行了初步探讨。  关键词:USB;RS-485;设备驱动程序;转换卡 1. 概述  现有的插座在...
  • 利用 LPT1 的状态寄存器(Status Port)具有的读能力和每次传送半字节(Nibble)来实现数据的双向传送功能。每次传送的时序(次序)由软件建立,在控制字的协调下按照教学机器人的通信协议接收和发送数据。目前 USB 越来越...

    教学机器人的上位机(主控计算机)和下位机(运动控制器)原先采用并行口(LPT1)的 SPP 方式进行通信。利用 LPT1 的状态寄存器(Status Port)具有的读能力和每次传送半字节(Nibble)来实现数据的双向传送功能。每次传送的时序(次序)由软件建立,在控制字的协调下按照教学机器人的通信协议接收和发送数据。

    目前 USB 越来越普及,正逐渐取代串口和并口在计算机接口中的地位。为了研究 USB 在实时通信时的性能,已将教学机器人上下位机通信改用 USB 端口实现。

    1、 USB 特点及其应用

    通用串行总线 USB(Universal Serial Bus)是 1994 年底由 Compaq、IBM、Microsoft 等多家公司联合提出的一种计算机接噪覆亡,目前已发展到 USB2.0。由于 USB 具有以下几方面的特点,所以迅速普及,逐渐确定了在计算机接口中的主导地位。

    (1)易用性。USB 支持热插拔和即插即用。

    (2)可扩展性。用户可以通过连接 USB 集线器到一个已有的端口来增加 USB 端口数量,集线器上还可以连更多的集线器。理论上可以连接 127 个外设到 USB 总线上。

    (3)快速性。USB1.1 版规定了两种传输速率:低速传输和全速传输。低速传输的速率是 1.5Mbps,全速是 12Mbps。这不但远远高于传统的串口传输速率,也比并口传输快了好多倍。最近推出的 USB2.0 允许的最高传输速率高达 480Mbps。

    (4)可靠性。USB 的可靠性来自硬件设计和 USB 数据传输协议两方面的保证。USB 驱动器、接收器和电缆的硬件规范消除了大多数可能引起数据错误的噪声;USB 协议使用了差错校验和数据重传机制,可以最大程度保证数据传输的准确性。

    (5)内置电源。USB 总线内置电源线,可以给外设提供 5V 和最多 500mA 的电源供应,满足大部分低功耗外设的电源要求。

    由于 USB 具有这些突出的优点,不但一些传统外设开始提供 USB 接口,而且大量新型外设也把 USB 接口作为首先甚至唯一的接口,如 MP3 播放器、移动硬盘等。由于 USB 的高可靠性和足够快的通信速率,USB 开始应用于工业级的实时通信和控制,例如机器人系统中示教盒与控制器的通信。本文论述的用 USB 端口实现机器人上位机与下位机的通信也属于这些方面的应用。

    2、 用 USB 实现计算机双机通信

    由于 USB 模型是一种 Host-Slave(主机 - 外设)主从式结构,没有办法使两台主机不通过外设而直接通过 USB 总线通信。然而可通过增加外设控制器的方法使两台主机利用它们的 USB 端口通信。每个外设控制器连接到不同的主要,并利用共享的缓冲器交换数据。Cypress 公司的 EZ-Link 和 Prolific 公司的 PL-2301 把两个外设控制器和共享缓冲区集成到一块芯片上,作为两台主机通过 USB 总线通俗诉桥梁。其它公司也提供类似的控制芯片。在教学机器人中,采用 PL-2301。

    PL-2301 是台湾 Prolific 公司生产的一种全速 USB 控制芯片。PL-2301 的结构框图如图 1 所示。

    4c1db08819bdec125f475c61409eb9dd.png

    PL-2301 包括两套独立的 USB 控制单元。在握手信号的协调下,它们通过两个 FIFO 缓冲器无阻塞地交换数据。PL-2301 包含四个终端:缺省的控制终端(地址 00H)、中断终端(地址 81H)、块输出终端(地址 02H)、块输入终端(地址 83H)。控制传输用于在主机列举阶段完成对 PL-2301 的配置及在两台主机通信时控制 PL-2301 的握手信号;中断传输用于 PL-2301 定期(每毫秒一次)向主机报告握手信号的状态;块传输用于两台主机之间实时地交换数据。块传输支持错误检测,这对实时通信和控制很重要。控制传输被确保拥有 10%的 USB 总线带宽,中断传输和等时传输最多可以使用 90%的带宽,块传输使用剩余的最大可用带宽(最多 95%)。当总线不太忙时,由于块传输只有一个很小的协议头(13 字节),它是所有传输类型中最快的。为了确何教学机器人上下位机以最快的速度通信,满足实时性要求,最好不要在 USB 总线上挂接过多的 USB 外设。

    PL-2301 除了能对 USB 标准请求做出反应外,还能对几种厂商自定义的请求做出反应。自定义请求 ClearQuickLinkFeature 和 SetQuickLinkFeature 用于控制两台主机通信时 PL-2301 的握手信号。这些握手信号是:

    (1)TX_RDY 指示本地 USB 端口是否准备好传输数据的指示信号。

    (2)S_EN 挂起使能信号。置位后,PL-2301 支持标准的 USB 挂起特性。

    (3)RESET_O 块输出管道的复位信号,用于出现错误时复位块输出通道。

    (4)RESET_IN 块输入管道的复位信号,用于出现错误时复位块输入管道。

    (5)TX_REQ 块传输的请求信号。

    (6)TX_C 块传输完成的指示信号。

    (7)PEER_E 告诉对方本地端口是否连接好的指示信号。

    在这几个握手信号的协调下,上位机和下位机可以双向通信。图 2 是主机 PC A 向 PC B 传输数据的流程图。这些底层的细节问题并不需要控制,由 PL-2301 的驱动程序完成。

    8b7b680e3c04c71f5dda1c037d7be3b3.png

    3、 软件结构

    3.1 教学机器人软件结构

    EDUROBOT-680-II 型教学机器人控制系统的控制软件包括下位机的底层控制软件和上位机的上层控制软件,它们通过 USB 端口通信。其软件结构如图 3 所示。

    ……

    636ca3abd836568988b0fb610bfb1958.gif

    加入群聊

    传感器技术交流2群:954070515

    射频/无线交流2群:725064756

    电机控制研发交流2群:619795552

    电源开发交流2群:457910972

    EDA/PCB设计交流2群:743876836

    物联网技术交流2群:992318230

    汽车电子交流1群:238034110

    嵌入式交流1群:852018713

    电路城官方交流群,期待你的加入。

    9c633ba13b52309fd736951c7c84dd3b.gif

    点击“

    展开全文
  •  自动测试系统ATS(Automatic Test System)集成测试所需的全部激励与测量设备,计算机高效完成各种模式的激励及响应信号的采集、存储与分析,对被测单元进行自动状态监测、性能测试和故障诊断。总线是ATS的重要组成...
  • 自动测试系统ATS(Automatic Test System)集成测试所需的全部激励与测量设备,计算机高效完成各种模式的激励及响应信号的采集、存储与分析,对被测单元进行自动状态监测、性能测试和故障诊断。总线是ATS的重要组成...
  • 4路定时开关USB通信单片机控制器JMDM-RTC4MRrar,一、简介JMDM-RTC4MR是深圳市精敏数字机器有限公司自主研发的一款具有实时时钟定时,电池电压自动检测和自动充电,可实现4路继电器联机或脱机控制,高可靠稳定性的工业...
  • USB数据流通信模型总结

    千次阅读 2015-10-14 18:19:46
     左边是主机,由底层到高层依次是USB主机控制器(负责帧管理,数据传输管理,容错处理,总线电源管理,USB设备状态机管理),USB系统软件(包含HCD(主机控制器驱动程序)和USBD),主机的客户端驱动程序。...
  • (5) 低功耗1.9 - 3.6V 工作,待机模式下状态为22uA;掉电模式下为900nA (6) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便 (7) 内置专门稳压电路...
  • 因为公司项目开发,需要在移动终端在开发一个usb转串口的数据通信,于是乎有了本次的记录。刚开始以为只需要在android上实现串口功能就行,后来发现,其实操作的是usb口,主要是对usb进行监听操作。 二、USB状态监听...
  • 可以用一个变量gUsbDevState.state记录USB状态,开始的时候USB状态USB_CTRL_IDLE。 1. HOST第一笔数据是SETUP数据,即告知Device接下来的数据要如何处理。从USB buffer中读入8字节数据获取Setup信息。下面是...
  • 对外设的状态进行实时检测;对控制命令的传送等;也可以在器件配置完成后被客户软件用于其它目的。Endpoint0信道只可以采用控制传送的方式。 银行交互设备,密码键盘 (2)块传送模式(bulk),块传送用于进行批量的...
  • 如图所示思维导图,其中包含设计的状态、功能设计、以及信号设计,根据此设计,写出代码。 1.主模块:例化按键模块 /*************串口通信********************/ module serial_port( input ...
  • 为了实现遥控遥测地面接收机的测控信息和关键信道参数的实时备份、显示以及测控指令的准确发送,提出一种基于USB2.0协议的通用测控通信接口的设计方案,并完成了系统的软硬件设计。该系统的硬件部分主要包含FPGA与CY...
  • 为了对小型独立光伏发电装置进行状态监测.设计了一种基于LabVIEW和MSP430单片机的USB串口通信系统...用高精度的USB—UAKT桥接器CP2102将MSP430的UART0转换成USB口,通过USB电缆实现上层监测和下位控制器间的数据通信
  • USB_HID通信基本信息

    2018-06-13 20:44:02
    1.OVERLAPPED是一个包含了用于异步输入输出的信息的结构体。 OVERLAPPED.hEvent: 在转移完成时处理一个事件设置为有信号状态。2.RegisterDeviceNotification向系统注册以获得消息通知。...
  • 本文的电路将USB(通用串行总线)信号D+、D-的三种状态转换为发射激光的三种强度全亮、半亮、暗,并且通过光纤传输到对方激光接收器再通过相应电路恢复D+、D-的三种状态。激光接收器电路的输出信号之一触发单稳延时...
  • 为实现上位机Linux系统的Qt应用程序与下位机USB CDC便携式设备之间的串口通信,本课题采用USB CDC类协议,并根据协议在Linux下编写设备驱动程序,同时,搭建Linux-QT应用平台利用QT可视化的图形界面及丰富的图形库,...
  • 一、原理 通过 adb forward来实现,adb forward tcp:7777 tcp...1、在android设备上建立一个端口为8888的SocketServer,并打开server到监听状态,即serverSocket.accept()。 2、监听PC上的7777端口,即执行adb for...
  • 如何满足USB2.0物理层一致性测试要求很大程度上需要原厂在测试模式以及测试封包方面提供更多的支持。但应用需求的多样化导致了许多设计架构脱离了原厂的测试状态机控制范畴,问题接踵而来。
  • usb 枚举过程中的状态

    千次阅读 2013-10-14 15:52:10
    这篇文章介绍了usb enumeration中的状态机,也是很好的。 http://blog.csdn.net/plauajoke/article/details/8439249 1. 枚举是什么?  枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样...
  • UROBOT-680-II 型教学机器人是上海交通大学机器人研究所采用世界... 教学机器人的上位机(主控计算机)和下位机(运动控制器)原先采用并行口(LPT1)的 SPP 方式进行通信。利用 LPT1 的状态寄存器(Status Port)具
  • 基于USB 总线的PC 机与FPGA 通信系统,采用IFCLK 输出内部时钟源的时钟信号,FLAGA-FLAGD 用于报告不同FIFO 状态。由FPGA 判断引脚电平高低决定何时向FIFO 读写数据。SLOE 作为输出使能,控制FIFO 数据端的输出控制...
  • USB

    2015-05-11 16:05:00
    [一]、USB(Universal Serial Bus):是通用串行总线的缩写,具有方便易用,动态分配带宽,容错性优越和高性价比等特点。 USB接口设备结构分:USB Host(主机)和USB Device(外部设备)...返回USB主机所显状态。 ...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 351
精华内容 140
关键字:

usb通信状态