- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
14.3.7 USB口初始化与数据的收发编程
*------------------------------------------------------*
*功能:USB中断服务程序
*调用:handleSETUP、handleOUT0、handleIN0、initUSB
*------------------------------------------------------*
isrUSB:
SEI ;禁止中断
;判断是否是端点0接收到数据产生的中断,如果不是,则跳转去判断
;是否是端点0发送数据产生中断
isr1: BRCLR B_RXD0F,UIR1,isr2
;判断是否是SETUP事务,如果不是则认为是OUT事务
BRCLR B_SETUP,USR0,outPacket
JSR handleSETUP ;调用处理SETUP事务子程序
BRA isrExit
outPacket:
JSR handleOUT0 ;调用处理一个普通OUT事务子程序
BRA isrExit
;判断是否是端点0发送完数据产生中断,如果不是,则跳转去判断
;是否是复位产生中断
isr2: BRCLR B_TXD0F,UIR1,isr5
JSR handleIN0 ;调用处理端点0的IN事务处理子程序
BRA isrExit
;判断是否是USB复位产生中断,如果不是则跳出中断
isr5: BRCLR B_RSTF,UIR1,isrExit
BSET B_RSTFR,UIR2 ;清除RSTF中断标志位 jiang add
JSR initUSB ;初始化USB系统
BSET B_ENABLE1,UCR3 ;允许端点1
BSET B_ENABLE2,UCR3 ;允许端点2
BSET B_TXD0IE,UIR0 ;允许端点0发送数据产生中断
BSET B_RXD0IE,UIR0 ;允许端点0接收数据产生中断
BSET B_RX0E,UCR0 ;允许端点0接收数据
MOV #US_DEFAULT,USB_State ;USB设备进入Default状态
isrExit:
CLI ;开中断
RTI 在handleSETUP子程序中,首先取得端点0数据寄存器中的数据(也就是设备请求),分析这些数据,判断是什么类型的设备请求,然后转入相应的设备请求子程序中执行。举例说明:若是取描述符请求,则子程序将相应描述符写到端点0数据寄存器中准备发送;若是设置地址,则相应的子程序不设置新地址,而是等到下一个端点0的 IN中断中进行设置新地址;在handleOUT0子程序中,由于端点0的OUT事务仅仅是作为标准设备请求的状态阶段,所以该子程序只是对一些标志位进行设置;在handleIN0子程序中,也要先判断当前执行的是什么设备请求,然后执行相应的操作。如:若是取描述符请求,则将相应描述符写到端点0数据寄存器中准备发送;若是设置地址,则向地址寄存器中写入新地址。
下面我们主要讲解端点1和端点2利用查询方式发送和接收数据的编程方法,包括USB初始化、发送字节和接收字节。
(1)USB初始化
以下用到的有关口地址定义在头文件JB8.H中定义,也就是说上面介绍的所有寄存器的英文名,如UDDR、UIR0,可以直接使用。
对USB进行初始化,主要是对USB寄存器的设置,在主程序的初始化时,调用如下的初始化程序:
MOV #$80,UADDR ;允许USB模块,初始地址为0
MOV #$00,UCR0 ;将UCR0寄存器复位
MOV #$00,UCR1 ;将UCR1寄存器复位
MOV #$00,UCR2 ;将UCR2寄存器复位
MOV #$44,UCR3 ;清TX1ST位,允许内部上拉
MOV #$00,UCR4 ;将UCR4寄存器复位
MOV #$00,UIR0 ;将UIR0寄存器复位,端点1和端点2都不允许中断
文档评论(0)