关 闭

新闻中心

EEPW首页>工控自动化>设计应用> USB总线在远程抄表系统中的应用

USB总线在远程抄表系统中的应用

作者: 时间:2009-12-22 来源:网络 收藏

  RS485协议只是物理层,上层协议需要用户自己定义。 由于介绍RS485的文章很多,其他程序略。

  3.2软件设计:

设备与主机通过四根线连接,电源、地,以及两根数据线,该模块使用计算机提供的5v电源。连接速度由D+ , D-连线上的电阻位置决定的, 如果D+ 线上有上拉电阻,设备为全速设备,如果D-连线上有上拉电阻, 则USB 设备为低速设备。PDIUSBD12 的softconnect 技术在片内集成了1.5k的上拉电阻, 可以通过微处理器发送命令来控制D+上的上拉电阻是否与电源连接。

  在usb设备中,我们使用描述符区别不同的设备、端口等。描述符主要包括设备描述符、配置描述符、接口描述符,在设备中预先设置这些参数,主机通过对这些描述符的读取,获得该设备的信息。

  当一个设备刚插入计算机时,主机需要对该设备枚举,读取该设备的相关参数,首先使用默认的设备地址0进行通信。主机端先向设备地址0,端点0发送Get_Descriptor(获取描述符)请求来查询接入什么样的设备,设备使用设备描述符回答,然后通过发送Set_Address(设定地址)请求来分配一个单独的地址给设备。设备读取这个请求,返回一个确认且保存新的地址。主机给新地址发送一个Get_Descriptor请求来读取这个设备完整的描述符,包括端点最大包的大小,设备支持的配置号,以及该设备的其它信息,主机将这些信息用于往后的通信中。而后发出Get_configuration_Descriptor(获取配置描述符)命令,用来获取设备的节点和端点的配置信息。而后发出(Set_configuration)设定配置请求,以该配置号配置设备。设备就完全正确处于可操作状态,完成了枚举过程,便可以通过端点进行数据传输了。

  以下是主设备读取从设备描述符的过程

  主机发起的setup包,使用默认的地址0,端点0。其中SYNC字段为同步序列数据域,固定为01H,紧接着为标识符数据域PID字段,用来表示数据封装包的类型,可分为令牌、数据、握手或特殊四种封装包类型。其中令牌封装包细分为OUT,IN,SETUP,SOF四种封装格式。随后为地址数据域ADDR字段,用来寻址高达127个外围设备,每个设备只有对应唯一的地址,ENDP字段为端点数据域,最多可寻址32个端点,它仅在IN,OUT,SETUP令牌封装包中,最后为CRC校验和。

  主机发送数据,其中数据域中的数据80表示设备标准请求,06描述符命令(get_descriptor)00 01 代表请求设备的描述符,00 00为语言类型,40 00,指出期望从设备返回的数据个数,如果描述符的个数大于指定的字节个数,则按照指定个数返回,如果描述符小于指定的字节数,返回实际的字节个数。

  该帧为设备收到数据后的确认帧

  该帧为向设备发送数据请求。


  12为描述符长度,01为设备类型,10 01 为usb版本号,bcd码,这里是usb1.1,00 为设备类型码,00为子类设备代码,00为USB分配的设备协议代码,10为端点0最大包的大小,d8,0d为厂商编号,01 c0为产品编号,04 01为设备出厂编号,01为厂商字符串索引,02 为产品字符串索引,00为序列号,01为设置编号。



评论


相关推荐

技术专区

关闭