基于Blackfin532和Netchip2272的USB接口设计

时间:2010-11-08来源:网络


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所示。

1 2 3

关键词: Blackfin Netchip 2272 532

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版