新闻中心

EEPW首页>嵌入式系统>设计应用> 基于ARM的远距离便携式无线传输系统

基于ARM的远距离便携式无线传输系统

作者: 时间:2011-08-19 来源:网络 收藏

2 USB及Linux USB驱动
2.1 USB的基本原理
USB是一种快速、双向的串行接口,它采用总线拓扑结构,其主控制器通过USB集线器可扩展主机的sub端口。USB具有4种传输方式:控制传输、中断传输、批量传输、等时传输。其数据的通信是双向的,数据从主机传向USB设备称下行通信,数据从USB设备传向主机称上行通信。控制权是在host方,不支持设备间的直接通信。
USB设备是由接口和端点构成的,端点是USB通信最基本的形式,它只能往一个方向传送数据。接口是用来绑定到设备上的,一个接口只处理一种USB逻辑连接。一个USB设备可以有多个接口,不同的接口可以代表不同的功能。USB驱动程序是绑定到接口上的。此外,一个USB设备通常又有多个配置的,而且可以在配置之间切换以改变设备的状态;但是一个时刻只能激活一个配置,一个配置通常具有一个或者更多的接口,如图3所示。

本文引用地址://m.amcfsurvey.com/article/150321.htm

b.jpg


2.2Linux的USB驱动
由于数据记录的USB接口采用FTDI公司开发的FT245 USB芯片,能单芯片实现并行FIFO缓存区的双向数据传输,且支持VCP(虚拟串口)功能。本文以实际应用出发,针对FT245芯片介绍Linux环境下的USB驱动程序。
在Linux的内核源码中有一个USB驱动的框架程序,文件名为usb-skeleton.c,目录在/drivers/usb下,大多数的USB驱动都是在这个框架的基础上修改的。这里针对FT245芯片修改这个USB驱动的框架程序。
USB驱动程序中有两个宏:
c.jpg
这两个宏的值是USB芯片制造商所提供的,VID是芯片制造商ID,PID是芯片的识别码,不同厂商不同型号的USB芯片的VID和PID是不同的,FT245芯片的VID=0x0403,PID=0x6001。
file_operation是驱动程序中一个很重要的类,它定义了一组常见文件I/O函数,而这些函数的使用类似于普通文件的I/O操作。程序如下:
d.jpg
这里定义的函数是USB驱动程序的入口点,要打开USB设备时,使用系统函数Open(),系统就会自动调用驱动中的ft245_open()函数。其他函数类似,如write()对应ft245_write(),rcad()对应ft245_rcad(),close()对应ft245_release()。



评论


相关推荐

技术专区

关闭