原创 USB的“JoyStickMouse”例程分析02

2010-4-16 18:09 2581 10 10 分类: MCU/ 嵌入式

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 


二、STM32处理器的USB接口


1、接口模块的内部结构


 


在书上有一个很好的USB内部接口模块内部结构图,比较好的解释了各个模块之间的关系,我这里试着用我自己的理解阐述一下吧。


首先在总线端(与D+D-相连的那一端),通过模拟收发器与SIE连接SIE使用48MHz的专用时钟。


SIE相关的的有三大块:CPU内部控制、中断和端点控制寄存器挂起定时器(这个好像是USB协议的要求,总线在一定时间内没有活动,SIE模块能够进入SUSPEND状态以节约电能),还有包缓冲区接口模块


说到包缓冲区接口模块,这个对应的含义是,USB设备应该提供USB包缓冲区。这块缓冲区同时受到SIECPU核心的控制,用于CPUSIE共享达到数据传输的目的。


所以CPU通过APB1总线接口访问,SIE通过包缓冲区接口模块访问,中间通过Arbiter来协调访问


 


当然我们关注的中心点是控制、中断和端点控制寄存器。我们通过这些寄存器来获取总线传输的状态,控制各个端点的状态,并可以产生中断来让CPU处理当前的USB事件。


CPU可以通过APB1总线接口来访问这些寄存器。它们使用的都是PCLK1时钟。


 


2USB模块的寄存器认识


1 控制寄存器CNTR



传输完成中断允许位。CTRM1有效,如果SIE置位传输完成标志,则相应的数据传输完成中断发生。


15


包缓冲区溢出中断允许位


错误中断允许位


唤醒中断允许位WKUPM1有效,如果唤醒请求标志位置位,则产生唤醒中断。


挂起中断允许位SUSPM1有效,当总线挂起标志置位时,发生挂起中断。


复位中断允许位RESETM1有效,软件强制复位和总线复位信号,都能触发复位中断。


帧首中断允许位


期望帧首中断允许位。ESOFM它的含义是没有收到帧首信号,允许发生中断。


 


 


 


8


 


 


 


向主机发送的唤醒请求RESUME1有效,主机收到该信号,将唤醒设备这个由软件置位。


 


 


4


强制挂起控制FSUSP1有效。与由于总线无活动引起挂起的效果相同。


低功耗模式。前提是先进入挂起状态。由软件设置,一般又硬件复位(被唤醒后自动清零)。


断电模式控制位。PDWN此位为1时,USB模块关闭。


强制复位控制FRES与总线上的复位信号产生相同的效果。也能产生复位中断.


 


 


 


0位。


 


2 中断状态寄存器ISTR


这个寄存器主要是反映USB模块当前的状态的。第15-8为与控制寄存器的中断允许是意义对应的。相应的标志位置位,且中断未屏蔽,则向CPU发出对应的中断。



CTR标志,数据传输完成后硬件置1.


PMAOVR标志


ERR标志


WKUP请求,总线检测到主机唤醒请求时由硬件置位。


SUSP请求标志位。


RESET请求标志位。


SOF帧首标志


ESOF,期待帧首标志。


 


 


DIR传输方向,此位由硬件控制IN时为0OUT1.


4位。


发生数据传输的端点的地址


 


3 USB设备地址寄存器


7位,EFUSB模块允许位。如果EF=0,则USB模块将停止工作。


6-0位。USB当前使用的地址。复位时为0.


 


4 端点状态和配置寄存器,8个寄存器,支持8个双向端点和16个单向端点。



CTR_RX,正确接收标志位


 


 


15位。


DTOG_RX,用于检测的数据翻转位。一般由硬件自动设置,软件写1可使其手动翻转。


STAT_RX,占据两位


00表示该端点不可用,无回应。


01表示响应STALL


10响应NAK


11表示端点有效,可接收数据。


SETUP标志。收到SETUP令牌包时置位。用户收到数据后需检查次位。


11位。


EP_TYPE,两位,表示端点类型。


00表示批量端点。


01表示控制端点


10表示等时端点。


11表示中断端点。


EP_KIND,端点特殊类型。在EP_TYPE=01时,表示设备期望主机的0字节状态包。


CTR_TX


正确发送标志。主机的IN包之后。


7位。


DTOG_TX,用于检测的数据翻转位。一般由硬件自动设置,软件写1可使其手动翻转。


STAT_TX,占据两位


00表示该端点不可用,无回应。


01表示响应STALL


10响应NAK


11表示端点有效,可发送数据。


端点地址:EA30】,表明该寄存器对应的端点号码。比如12号寄存器都可以对应端点1(在双缓冲情况下)。


3-0位。


 


5 端点描述符表相关寄存器


首先有一个描述符表地址寄存器,指明了包缓冲区内端点描述符表的地址。


每一个端点都对应一个描述附表。描述符表也在包缓冲区内。每个端点寄存器对应的描述符表的地址可根据公式计算。


单缓冲、双向的端点描述符表有四项,每项占据两个字节:分别是端点n的发送缓冲区地址、发送字节数、接收缓冲区地址、接收字节数。


 


了解USB相关寄存器的知识以后,接下来就可以分析JoyStickMouse详细的工作过程了。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /3 下一条