USB(Universial Serial Bus)是一种通用总线体系,因为它具有支撑热插拔、数据传输快速、功能牢靠、价格较低一级长处,已成为运用最广泛的PC机外设扩展接口之一,它是完结电子体系和PC机之间进行数据传输的抱负接口。依据上述剖析,提出了依据Blackfin532和Netc-hip2272的USB接口电路规划计划。
1 USB接口电路的硬件规划
1.1 Blackfin532DSP处理器简介
文中DSP处理器选用Blaclkfin532,它是ADI(Analog Device Instruments)公司推出的一款高功能、低功耗定点处理器,内核时钟频率最高可达400 MHz,具有两个40位的算术逻辑单元(ALU),及4个8位视频ALU,两个16位硬件乘法器,两个40位累加器,是具有较高性价比的DSP处理器。Blackfin532片上集成了84 kB的RAM,可寻址空间为4 GB,可与多种存储器完结无缝衔接。此外,片上集成了多个外设接口,详细包含1个UART口,1个SPI口,2个串行口(Sports),4个通用定时器,1个实时时钟,1个看门狗定时器,1个并行外设接口等。
1.2 Netchip2272简介
文中USB接口芯片选用了Netchip2272。它在片上集成了USB收发模块,串行接口引擎(SIE),USB协议操控器,端点数据缓冲区,本地总线接口模块等。一起还集成了很多的寄存器,使得对它的操作变得简略。Netchip2272具有如下特色
(1)支撑全速/高速数据传输形式。
(2)具有3个可装备的物理端点,及30个逻辑端点。
(3)片上集成了3 kB的数据缓冲区,支撑双缓冲形式。
(4)可方便地与通用微处理器进行衔接。
在Blackfin533的EZ-KIT开发板中也选用了Blackfin533和Netchip2272完结USB接口电路,但EZ-KIT开发板中运用了设备管理器等,使得程序变得较大,在Blackfin533和Netchip2272之外,需求大约8 MB的存储空间来寄存部分程序和支撑程序运行时对存储空间的要求,这就需求在外部增加一块SDRAM。一起,在EZ-KIT开发板的例程中只供给了USB接口电路的依据设备管理器的顶层源代码,关于Blackfin533怎么操控Netehip2272完结设备的枚举和数据传输则没有供给底层的源代码,这些都使得开发板中供给的USB接口电路计划,在实践运用中不方便。文中所提出的USB接口电路计划中则没有运用设备管理器,这使得程序比例程中的程序要小得多,且不需求运用SDRAM,然后使得硬件电路变得
愈加简略。因为没有运用设备管理器且在程序编写进程中选用了模块化的规划办法,固件程序的可移植性增强了。
1.3 USB接口电路的原理
USB接口电路的硬件衔接原理图如图2所示,其间D0~D15是Blackfin532和Netchip2272的数据线,A1~A5是地址线,PF10和PF11是Black-tln532的PF(Programmable Flags)口的第10、ll管脚,别离用作Netehip2272的中止输入管脚和复位操控管脚,ASMl是BlackTIn532的异步存储块1的片选信号用作Netehip2272的片选信号,IOW,IOR是Blackfin532的写、读选通输出信号用作Netchip2272的写选通和读选通信号。IRQ是Netehip2272的中止输出信号,RESET是它的复位输入信号,CS是它的片选信号,D+,D-是USB总线的差分数据线,VCC和GND别离是它的电源线和地线。
Blackfin532和Netchip2272的数据交换选用中止驱动方法,当2272发生了特定的某些事情如收到主机发送的Setup包,收到主机发送的数据包等,需求Blackfin 532对事情进行处理时,2272在其IRQ管脚发生1个低电平,与它相衔接的PF10管脚在检测到此低电平之后。在DSP内部发生中止,DSP在中止处理函数内部读取2272相关寄存器的值,并依据这些寄存器的值对发生的事情作出相应的处理,完结USB设备的枚举和数据的传输。
2 USB接口电路的软件规划
接口电路的软件规划包含固件程序和PC端的驱动程序。固件程序的规划需求对硬件电路和USB的通信协议比较了解,因此开发起来难度比较大,这儿对固件程序的开发生以介绍。
2.1 固件程序
设备的固件程序是指运行在设备端CPU中的程序,它首要用来完结对接收到的数据包的类型,内容进行辨认和剖析,并在剖析的基础上对主机的恳求做出相应的处理,完结设备的枚举,读取主机发送的数据和向主机发送数据,然后完结和主机之间的数据交换。固件程序的流程图如图3所示。
固件程序首要包含初始化和中止服务程序两部分;
2.1.1 初始化
初始化程序用以对Blackfin532和Netchip2272进行初始化设置。
(1)对Blaekfin532进行软复位,对PLL(Phase Locked Loop),EBIU(External Bus Interface Unit),PF口进行设置,以及使能PF10引起的中止。
(2)对Netchip2272进行软复位,对本地总线操控寄存器(LOCCTL,LOCCTL1),USB操控寄存器(USB_CTL0,USBCTL1),端点0的寄存器进行设置,在中止使能寄存器(IRQENDO,IRQENBl)中使能相应的中止。
2.1.2 中止服务程序
中止服务程序首要是用来处理主机的Setup规范恳求,将主机发送过来的数据读到Blacldin532中和将Blackfin532中的数据发送给主机。
主机要和USB设备进行数据交换首要要正确的辨认USB设备,这需求经过一个枚举进程,这个进程首要经过主机向设备发送Setup恳求,设备对该恳求进行呼应来完结。
(1)USB设备加电,衔接到主机的—个集线器端口。
(2)主机检测到新设备衔接后,总线复位。
(3)主机运用默许地址(地址O)读取设备描述符。
(4)主机给设备分配一个地址,在今后的通信里设备就只对这个地址的信息作出应对。
(5)主机重新的地址获取设备描述符。
(6)主机读取装备描述符。
(7)主机读取装备描述符调集,主机除了读取装备描述符之外,还要读取接口描述符及端点描述符。
(8)主机设置设备的装备。
在中止服务程序中首要判别是何种类型的中止,如果是Setup恳求中止,则调用函数setup_handler()进行处理,函数的参数为设备接收到的Setup数据包的第3~第8 bit(Setup~Setup)。在setup_handler()函数中依据Setup数据包的内容跳转至相应的分支,对Setup恳求进行呼应。运用软件Bushound5.0对设备的枚举进程进行调查,捕获的部分数据如图4所示。
Bushound5.0只捕获到了设备枚举进程中主机宣布获取装备描述符恳求及之后的数据,图中的数据是主机宣布获取装备描述符恳求到主机宣布设置装备恳求之间的数据。
USB设备和主机之间的数据交换。当Netchip2272接收到主机发送的数据包之后,就会发生一个中止信号给Blackfin532,Blackfin532在中止服务程序中查询相应的寄存器得知接收到数据包之后,直接将接收到的数据包读到Blackfin532中。USB设备需求向主机发送数据时,先将需求发送的数据放到输入端点的Buffer中,当主机向相应的输入端点发送In Token时,Buffe中的数据包就回来给了主机,数据包发送成功后Netehip2272会发生一个中止信号给Blackfin532,在中止处理函数中将全局变量Tx_data_flag的相应方位1,数据包发送成功。
2.2 驱动程序
驱动程序编写是杂乱的,选用Jungo的WindowsDriver,在Windows Driver检测到枚举成功的设备之后,输入设备的厂商ID(VID)和产品ID(PID),即可生成一个inf文件,将设备的PID和VID与设备的驱动程序绑定在一起,当设备经过设备描述符将VID,PID传送给主机之后,主机就可以据此找到设备的驱动程序了。
3 试验成果及剖析
设备枚举成功之后,使用BusView调查到的设备的装备状况如图5所示。
USB设备一共有6个端点,这儿仅列出其间两个端点的描述符,其他的和这两个相似。BusView显现的设备装备状况和固件程序中对设备的装备状况完全一致,这表明设备的枚举进程是正确的。
经过使USB设备循环的向主机发送数据来查验USB输入到主机方向的数据传输,使用Bushound5.0捕获的部分数据如图6所示。图中的数据显现USB设备循环发送的数据是00 01 02 03 04 05 06 07 08 09,在Windows Driver中对相应的管道进行监听,收到的数据如图7所示。试验成果显现数据传输完全正确。关于主机输出到USB设备方向的数据传输,进行了查验,数据传输也完全正确。这表明依据Blackfin532和Netc-hip2272的USB接口电路的计划是可行的。
4 结束语
依据Blackfin532和Netchip2272的USB接口电路具有数据传输快速、牢靠、接口电路简略、固件程序的可移植性强等长处,具有杰出的实用价值和运用远景。欲了解更多信息请登录本站网(http://www.elecfans.com)