正在加载图片...
州周立功单片机发展有限公司Te:(020)3873097638730977Fax:38730925htpr/w dma. bits. endp_5 interrupt enable =0; DI2 SetDMA(dma) 建立DMA请求 建立DMA请求是一个通过控制管道发送的厂商请求。在 PDIUSBD12采样固件和小应用程序中,这 些是由 IOCTL WRITE REGISTER(由微软 Windows98DDK中的静态图像USB接口定义)完成的。器件 请求描述如下: 偏移「字段 规格值 备注 0 BmRequest Type10x40厂商请求,器件到主机 OxIC OCTL WRITE REGISTERd固定值 偏移,设置为零 4 0x0471建立DMA请求的固定值 建立DMA请求的数据长度 在器件请求之后,DMA操作的具体请求在数据阶段发送。采样固件和小应用程序使用专有的定义, 偏移字段 0地址[7:0]已请求DMA传输的地址 [5:8] 3类型[7:0 传输的规格 命令 位7:1启动DMA传输 位0:1IN标志;‘0OUT标志 主机端编程注意事项 USB器件不是决定传输速率的唯一标准。主机端的应用程序在整个系统的性能占有更重要的地位,因 为主机一直在控制USB的处理 DMA传输是一个包括了控制端点和主端点的连续操作。由于下一步操作由前一操作的结果决定,所 以协作非常重要。虽然多线程可用于对不同管道进行访问以增加系统的性能,但使用单线程却使处理建立 DMA请求(IOC∏L)和数据传输(写文件/读文件)操作的编程容易许多。 IOCTL WRITE REGISTER和 IOCTL READ REGISTER使用结构 IO BLOCK与器件驱动器进行数 据交换。下面所示的结构定义是微软静态图像USB接口的一部分。 typedef struct IO BLOCK i In unsigned uoffset IN OUT PUCHAR pby Data; M IO BLOCK, "PIO BLOCK, IO REQUEST结构是一个专有的定义,包含了建立DMA请求的细节 typedef struct_IO REQUEST( unsigned short uAddressL, ansI 9 IO REQUEST, "PIO REQUEST 举例程序如下 rEquest. uAddressL =0;广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax: 38730925 http://www.zlgmcu.com 3 dma.bits.endp_5_interrupt_enable = 0; D12_SetDMA(dma); 建立 DMA 请求 建立 DMA 请求是一个通过控制管道发送的厂商请求 在 PDIUSBD12 采样固件和小应用程序中 这 些是由 IOCTL_WRITE_REGISTER 由微软 Windows 98 DDK 中的静态图像 USB 接口定义 完成的 器件 请求描述如下 偏移 字段 规格 值 备注 0 BmRequestType 1 0x40 厂商请求 器件到主机 1 Brequest 1 0x0C IOCTL_WRITE_REGISTERd 固定值 2 Wvalue 2 0 偏移 设置为零 4 Windex 2 0x0471 建立 DMA 请求的固定值 6 Wlength 2 6 建立 DMA 请求的数据长度 在器件请求之后 DMA 操作的具体请求在数据阶段发送 采样固件和小应用程序使用专有的定义 如下所示 偏移 字段 备注 0 地址 7 0 1 地址 15 8 2 地址 23 16 已请求 DMA 传输的地址 3 类型 7 0 4 类型 15 8 传输的规格 5 命令 位 7 `1`启动 DMA 传输 位 0 `1`IN 标志 `0`OUT 标志 主机端编程注意事项 USB 器件不是决定传输速率的唯一标准 主机端的应用程序在整个系统的性能占有更重要的地位 因 为主机一直在控制 USB 的处理 DMA 传输是一个包括了控制端点和主端点的连续操作 由于下一步操作由前一操作的结果决定 所 以协作非常重要 虽然多线程可用于对不同管道进行访问以增加系统的性能 但使用单线程却使处理建立 DMA 请求 IOCTL 和数据传输 写文件/读文件 操作的编程容易许多 IOCTL_WRITE_REGISTER 和 IOCTL_READ_REGISTER 使用结构 IO_BLOCK 与器件驱动器进行数 据交换 下面所示的结构定义是微软静态图像 USB 接口的一部分 typedef struct _IO_BLOCK { IN unsigned uOffset; IN unsigned uLength; IN OUT PUCHAR pbyData; IN unsigned uIndex; } IO_BLOCK, *PIO_BLOCK; IO_REQUEST 结构是一个专有的定义 包含了建立DMA请求的细节 typedef struct _IO_REQUEST { unsigned short uAddressL; unsigned char bAddressH; unsigned short uSize; unsigned char bCommand; } IO_REQUEST, *PIO_REQUEST; 举例程序如下 ioRequest.uAddressL = 0;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有