[实用参考]USB的通讯协议(通俗易懂).ppt
文本预览下载声明
16. 5. 3 USB寄存器 11)USB状态寄存器1(USR1) USR1的地址:$003E,定义如下: D7 — R2SEQ位:端点2接收序列位。为1,表示上一次端点2接收的是DATA1;为0,表示上一次端点2接收的是DATA0。 D6 — TXACK位:ACK包传输位。为1,表示上一次端点0发送的是一个ACK包;为0,表示上一次端点0发送的不是ACK包。 D5 — TXANK位:NAK包传输位。为1,表示上一次端点0发送的是一个NAK包;为0,表示上一次端点0发送的不是NAK包。 D4 — TXSTL位:STALL包传输位。为1,表示上一次端点0发送的是一个STALL包;为0,表示上一次端点0发送的不是STALL包。 D3~D0 — RP2SIZ3~RP2SIZ 0位:端点2接收数据包大小。 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 R2SEQ TXACK TXANK TXSTL RP2SIZ3 RP2SIZ2 RP2SIZ1 RP2SIZ0 复位 0 0 0 0 0 0 0 0 16. 5. 3 USB寄存器 12) USB端点0数据寄存器(UE0D0-UE0D7) UE1D0-UE1D7的地址是从$0020-$0027。可读可写。 13) USB端点1数据寄存器(UE1D0-UE1D7) UE1D0-UE1D7的地址是从$0028-$002F。只写。 14) USB端点2数据寄存器(UE2D0-UE2D7) UE1D0-UE1D7的地址是从$0030-$0037。可读可写。 16.5.4 USB中断 USB模块中断有三种类型: ● 当接收或发送事务完成时,产生事务结束中断; ● 当USB总线悬挂后被激活时,产生唤醒中断; ● 当检测到一个低速的包结束信号时,产生结束中断。 所有的中断共享同一个中断向量,由中断程序区分产生的是什么中断。 16.5.5 JB8 USB1.1通信编程 USB中断处理流程图 端点0接收数据产生的中断 USB初始化 开始 Y SETUP事务? N N 端点0接收数据产生的中断 Y N 复位产生的中断? 调用处理端点0OUT事务处理 Y N 退出中断 调用处理端点0IN事务处理 调用SETUP事务处理 Y USB中断服务程序 端点1和端点2利用查询方式发送和接收数据的编程方法,包括:USB初始化、发送字节和接收字节。 (1)USB初始化 (2)发送数据子程序 (3)接收数据子程序 端点1发送、接受数据的流程图 Y 查询方式接收数据 UIR1 的BM_RXD2F位为1 禁止端点2输入(将UCR2 的BM_RX2E位置0) 清RXD2F位(将UIR2 的 BM_RXD2FR位置0) 从端点2的接收缓冲区中读取数据 允许端点2输入(将UCR2 的BM_RX2E位置1) N 开始 查询方式发送数据 UIR1 的BM_TXD1F位为1 禁止端点1输出(将UCR1 的BM_TX1E位置0) 清TXD1F位(将UIR2 的 BM_TXD1FR位置0) 向端点1的数据缓冲区中写入数据 设置发送数据的个数和TES1Q位,允许端点1输出(将UCR2 的BM_RX2E位置1) 开始 N Y USB中断服务程序 (1)USB初始化 USB中断服务程序 (2)发送数据子程序 USB中断服务程序 (2)发送数据子程序 USB中断服务程序 (3)接收数据子程序 16.6 PC机方USB1.1编程实例 16.6.1 PC机方USB1.1编程步骤 1.选择并安装合适的USB1.1驱动程序 2.选择一种高级语言,参照驱动程序的相关文档进行编程 (1) 为新建的工程添加USBIOCOM 1.0 Type Library (2) 编写响应USB设备的程序 (3) 取得描述符,初始化USB设备并建立连接 (4) 进行USB收发通信 16.6 PC机方USB1.1编程实例 16.6.2 PC机方USB1.1 VB编程实例 开始 不是 是 捕捉到WM_DEVICECHANGE消息 判断USB设备类型 USB存储设备 其他类型USB设备 JB8 USB设备 取得描述符 根据描述符判断是否为SU-USB-TEST设备 发送握手信号$FE和将要发送的字节数N给USB设备 发送N个字节的数据给USB设备 接收USB设备回发的N个字节数据,并显示 USB测试程序PC机方VB程序流程图 数据传输阶段用来传输主机与设备之间的数据。控制读取是将数据从设备读到主机上,读取的数据USB设备描述符。该过程如图16-8所示。对每一个数据信息包而言,首先,主机会发送一个IN令牌信息包,表示要读数据进来。然后,设备将数据通过DAT
显示全部