基于单片机和USB接口技术的高速数据采集系统的设计.doc_第1页
基于单片机和USB接口技术的高速数据采集系统的设计.doc_第2页
基于单片机和USB接口技术的高速数据采集系统的设计.doc_第3页
基于单片机和USB接口技术的高速数据采集系统的设计.doc_第4页
基于单片机和USB接口技术的高速数据采集系统的设计.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

辽宁科技大学毕业设计 论文 第 I 页 I 基于单片机和 USB 接口技术的高速数据采集 系统的设计 摘要摘要 数据采集系统是结合基于计算机的测量软硬件产品实现灵活的 用户自定义的 测量系统 数据采集包括从信号源采集信号 将其进行数字化 存储分析并传递到 个人 PC 上 通用串行总线 USB 作为一种新的微机总线接口规范 具有便捷 易扩 展 低成本 低干扰等特点 非常适合作为主机和外设之间的通信接口 USB 为数 据采集设备 仪器与 PC 机之间的连接提供了一个费用低廉且简单易用的方案 USB 通讯技术的出现 使高传输速度 强纠错能力 易扩展性 方便的即插即用 有机 的结合在一起 USB 技术虽然出现的时间并不长 但是由于它的种种优点 被越来 越多的厂商和用户所接受 本次毕业设计 论文 设计了一种基于单片机和 USB 的高速 数据采集系统的硬件及固件 PDIUSBD12 程序设计方案 关键词关键词 数据采集系统 usb 接口 单片机 4 7 8 9 10 11 14 26 27 31 辽宁科技大学毕业设计 论文 第 II 页 II Abstract Data acquisition uses a combination of PC based measurement hardware and software to provide a flexible user defined measurement system Data acquisition involves gathering signals from measurement sources and digitizing the signal for storage analysis and presentation on a personal computer PC As a new interface Specification the Universal Serial Bus USB has the advantages of convenient expansibility low cost and anti disturbance So it is fit for the communication interface between the host and available peripherals USB delivers an inexpensive easy to use connection between data acquisition devices instruments and PCs USB communication technology can enable high speed strong error correcting capabilities easy extensibility plug and play convenience combined with organic USB technology is not even in the face of a long time but because of its many advantages more and more accepted by manufacturers and users This thesis introduce to the hardware and software design for the high speed data acquisition system based on Single chip micro computer and USB Key words data acquisition universal serial bus interface Single chip micro computer 辽宁科技大学毕业设计 论文 第 III 页 III 目录目录 摘要 I Abstract II 第 1 章 绪论 1 1 1 研究的背景及目的 1 1 2 国内外研究现状及已有成果 1 1 3 课题的研究方法和内容 2 第 2 章 总体方案设计 3 2 1 芯片比较 3 2 1 1 单片机选型 3 2 1 2 USB 接口芯片的选择 3 2 2 系统的原理及其组成 5 第 3 章 系统的程序设计 7 3 1 系统的硬件设计 7 3 1 1 PDIUSBD12 的性能特点和内部结构 7 3 1 2 PDIUSBD12 的端点描述 9 3 1 3 PDIUSBD12 的指令集 10 3 1 4 PDIUSBD12 的管脚配置 11 3 1 5 A D 与单片机接口电路 13 3 1 6 PDIUSBD12 与单片机接口电路 14 3 2 系统的软件设计 14 3 2 1 PDIUSBD12 的固件编程思想 14 3 2 2 PDIUSBD12 固件编程的结构 15 3 2 3 PDIUSBD12 固件编程的实现 17 3 2 4 端点处理程序 18 3 2 5 主循环 MAINLOOP C 21 3 2 6 驱动程序开发工具的介绍 22 3 2 7 USB 设备驱动程序设计 23 3 2 8 USB 设备驱动程序的调用 24 第 4 章 方案设计的分析及本研究的创新策略 26 4 1 方案的可行性 实验过程 数据的处理及分析 26 4 1 1 系统硬件设计分析 26 4 1 2 系统软件设计分析 26 4 2 本次设计的创新与改进 27 结论 29 致谢 30 参考文献 31 附录 A 32 附录 B 43 辽宁科技大学毕业设计 论文 第 1 页 1 第1章 绪论 1 1 研究的背景及目的 信息技术与电子技术的迅猛发展 使得计算机和外围设备也得到飞速发展和应 用 过去人们单纯追求计算机与外设之间的传输速度 现在纠错能力和操作安装的 简易性也成为人们关注的目标 USB 通讯技术的出现 使高传输速度 强纠错能力 易扩展性 方便的即插即用 有机的结合在一起 USB 设备需要依据 USB 协议进 行数据的解包与打包 底层硬件设备与操作系统之间需要以驱动程序为桥梁 驱动 程序以 WDM 为模型 以 DDK 为开发工具 以 IRP 为消息传播载体 来实现与 Windows 系统底层核心机制向交互的功能 随着控制系统的日益复杂 所要采集的量也会越来越多 因此寻求一种高速 安全 方便的通讯形式是十分必要的 USB 技术虽然出现的时间并不长 但是由于 它的种种优点 被越来越多的厂商和用户所接受 出现了 USB 打印机 摄像头等产 品 随着 pc 机日益广泛的应用 其外设也逐日增多 但 pc 机接口的数量是一定的 这 就限制了 pc 机挂接外设的数量 在很多应用场合 如工业数据采集 常使用采集板卡 来完成工作 采用板卡不仅安装麻烦 易受机箱内环境的干扰 而且受计算机插槽数 量和地址 中断资源的限制 不可能挂接很多设备 而通用串行总线可以很容易的实 现高可靠性 多点的数据采集 1 2 国内外研究现状及已有成果 在国际和国内 现代工业生产和科学研究对数据采集的要求日益提高 在瞬态 信号测量 图像处理等一些高速 高精度的测量中 需要进行高速数据采集 现在 研究通用的高速数据采集卡一般多是 PCI 卡 A D 卡及 422 485 卡或 ISA 卡 存 在以下缺点 安装麻烦 价格昂贵 受计算机插槽数量 地址 中断资源限制 可 扩展性差 同时在一些电磁干扰性强的测试现场 可能无法专门对其做电磁屏蔽 从而导致采集的数据失真 传统的外设与主机的通讯接口一般是基于 总线 ISA 总线或者是 RS 232C 串行总线 PCI 总线虽然具有较高的传输速度 辽宁科技大学毕业设计 论文 第 2 页 2 132Mbps 并支持 即插即用 功能 但其缺点是插拔麻烦 且扩展槽有限 一般 为 5 6 个 ISA 总线显然存在同样的问题 RS 232C 串行总线虽然连结简单 但 其传输速度慢 56kbps 且主机的串口数目也有限 随着时代的发展 1995 年康 柏 微软 IBM DEC 等公司为解决传统总线不足而推广的一种新型的通信标准 就是通用串行总线 USB 该总线接口具有安装方便 高带宽 易于扩展 使用灵活 等优点 已逐渐成为现代数据传输研究的发展趋势 基于单片机和 USB 的高速数据 采集充分利用 USB 总线的上述优点 有效解决了传统高速数据采集的缺陷 在国内外研究中 高速数据采集领域在很多方面均有应用 例如采用 AVR 单 片机 ATmegal28 作为主控制器 通过基于 CH375 的 USB 接口实现数据传输 给出 了高速模数转换及 USB 接口的电路原理 实现 USB 数据传输的上 下位机的程序 设计 经实验测试 该系统采集速度快 死时间小 计数率高 该系统采集速率最 高可以达到 5 MS s 有软件触发 后触发 前触发三种采集模式 已成功应用到高 速数据采集领域 它适用于作用大范围场地的辐射监测系统 1 3 课题的研究方法和内容 本次设计主要基于单片机和 USB 接口的数据采集 控制系统的硬件模块主要是 由 A D 转换器 D A 转换器 微处理器 USB 接口控制芯片 串行口控制芯片 放 大器等组成 本数据采集和控制系统是以飞利浦 公司的 PDIUSBD12 作为系统的 微控制器 管理和控制整个系统 该芯片集成度高 与 51 单片机兼容 有效的解决 了传统高速数据采集的缺陷 本文内容安排如下 第一章对基于单片机和 USB 的高速数据采集进行了综合 首先介绍了粒子单片 机和 USB 的高速数据采集研究背景及目的 接着对单片机和 USB 的高速数据采集 的国内外研究现状和相关领域中已有的研究成果进行了说明 第二章对本次毕业设计的总体方案与选择的论证进行了说明 首先介绍了单片 机芯片和 USB 接口固件的选择 接着论证了总体设计方案 第三章对系统的硬件与软件部分进行了设计计算 包括对 PDIUSBD12 的多方 面介绍 与单片机的连接 系统程序设计等等 第四章对研究设计进行分析 对内容中的创新 改进及实际意义进行说明 辽宁科技大学毕业设计 论文 第 3 页 3 第 2 章 总体方案设计 2 1 芯片比较 本文应用了单片机芯片和 USB 接口固件 下面对其进行介绍 2 1 1 单片机选型 当今单片机厂商琳琅满目 产品性能各异 常用的单片机有很多种 Intel8051 系列 Motorola 和 M68HC 系列 Atmel 的 AT89 系列 台湾 Winbond 华邦 W78 系 列 荷兰 Pilips 的 PCF80C51 系列 Microchip 公司的 PIC 系列 Zilog 的 Z86 系列 Atmel 的 AT90S 系列 韩国三星公司的 KS57C 系列 4 位单片机 台湾义隆的 EM 78 系列等 我们最终选用了 ATMEL 公司的 AT89C52 单片机 AT89C52 是美国 ATMEL 公司生产的低电压 高性能 CMOS8 位单片机 片内含 8Kbytes 的可反复擦 写的只读程序存储器 PEROM 和 256bytes 的随机存取数据存储器 RAM 器件 采用 ATMEL 公司的高密度 非易失性存储技术生产 与标准 MCS 51 指令系统及 8052 产品引脚兼容 片内置通用 8 位中央处理器 CPU 和 FLASH 存储单元 功 能强大 AT89C52 单片机适用于许多较为复杂控制应用场合 本次设计选用 AT89C52 2 1 2 USB 接口芯片的选择 基于 USB 的外置式硬件电路的设计核心是 USB 控制器的选择 在进行一个具 体的 USB 设备开发之前 首先要根据具体要求选择合适的 USB 控制器 整个 USB 外围设备的设计将围绕该控制器展开 在选定 USB 控制器以后 如果是带 USB 接 口的单片机 则是一般单片机应用系统的开发 若是 USB 外设接口芯片 就是 USB 外设接口芯片与单片机应用系统的接口问题 一般 USB 接口芯片都支持多种并行总 线结构 复用 非复用 可以方便地与多种单片机连接 目前 市场上可供选择的 USB 接口芯片很多 按照功能基本上分为两类 一类 是纯粹的 USB 接口芯片或通用 USB 外设接口芯片 也称 USB 设备器件 另一类是带 辽宁科技大学毕业设计 论文 第 4 页 4 有 USB 接口芯片的单片机 也称 USB 主控制器 1 带 USB 接口的单片机 USB 主控制器 这类芯片主要有 Cypress 公司的 CY7C63xxx CY7C64xxx 系列和 EZ USB Intel 公司的 8X930 8x931 Philips 公司的 ISP 1161 USB 1 1 ISP I 561 USB2 0 Scanlogic 的 SL11R 以及 Motorola 的 MC68HC908JB8 系列等 这种方案的最大好处 在于开发难度较小 因为大多数这样的单片机芯片都是基于 8051 结构或者其它常见 的结构 有自己的精简指令集 与单片机类似 熟悉单片机开发的开发者对系统结 构和指令集非常熟悉 但其开发一般需要专用的仿真器 对于简单或低成本系统 价格高将会是最大的障碍 2 纯粹的 USB 外设接口芯片 USB 设备器件 这类芯片主要有 NS 公司的 USBN9602 9603 9604 Scan logic 的 SUIT 以及 Philips 公司的 PDIUSBD11 PDIUSBD12 USB1 1 ISP1581 USB2 0 等 纯粹的 USB 外设接口芯片仅处理 USB 总线相关事务 必须有一个外部微处理器来进行协议处理 和数据交换 这种方案的主要特点是价格便宜 接口形式多样 可靠性高 灵活性 大 尤其适合于产品的改型设计 缺点是开发者需要非常熟悉 USB 协议 还必须用 微处理器来控制 USB 外设接口芯片的工作 综合比较 PDIUSBD 12 是一款性价比很高的 USB 器件 可使设计者选择最合 适的微控制器 减少开发时间 风险及费用 是最实用最快捷的方法实现最经济的 USB 外设的方案 该芯片支持一个控制端点以及 4 个额外的端点地址 一个端点的 缓冲区可以储存到 128 个字节 而双缓冲区可以到 256 个字节 PDIUSBD 12 通常 用作微控制器系统中实现与微控制器进行通信的高速通用并千示接口 并支持本地 DMA 传输 PDIUSBD 12 完全符合 USB1 1 规范 并符合大多数器件的分类规格 成 像类 海量存储器件 通信器件 打印设备以及人机接口设备 同样地 PDIUSBD 12 还适用于打印机 扫描仪 外部存储设备和数码相机等等 另外 该芯片还集成 了许多特性 包括 SoftConnect GoodLink 可编程时钟输出 低频晶振和终止寄存 器集合 简化 USB 功能在外设上的应用 由于 51 系列的单片机是应用非常广泛的一种微处理器 在其基础上开发了大量 的软件包 对其内部结构和工作原理我们都非常了解 故本系统中我们采用 8902 进 行核心程序的设计来实现其所需的功能 A D 选用我们熟悉而且能满足要求的 辽宁科技大学毕业设计 论文 第 5 页 5 AD0809 而 PDIUSBDI2 能够完成将数据信号到符合 USB 规范的信号的转换 为此 我们利用 89C52 中丰富的软件资源和 USB 总线技术即插即用 热插拔特性来完成 高速数据采集系统 这样可以降低开发成本 缩短开发周期 降低风险 2 2 系统的原理及其组成 基于 USB 的数据采集和控制系统的硬件模块主要是由 A D 转换器 D A 转换 器 微处理器 USB 接口控制芯片 串行口控制芯片 放大器等组成 本数据采集 和控制系统是以飞利浦 公司的 PDIUSBD12 作为系统的微控制器 管理和控制整 个系统 该芯片集成度高 与 51 单片机兼容 整个数据采集和控制系统的总体结 构框图如图 2 1 所示 图 2 1 设计数据采集和控制系统原理图 从结构图中可知 模拟输入信号通过信号处理 放大和滤波 后 输出到 A D 转 换器 微控制器把经过 A D 转换器转换后的数字信号通过 USB 控制芯片输出给计 算机 同时可以在计算机上实现数据的显示和键盘控制 另一方面 经过 A D 转换器 采集到的数字信号可以通过算法实现控制后 经过 D A 转换器输出 进而可以对其 它设备进行控制 同时 该系统还可以作为一种 USB 和串行口的转接卡 通过串行 口与 USB 接口实现数据之间的交互 充分利用了 USB 的快速性和 RS 232 远距离的 优势 实现了资源优势互补 可以通过该板卡实现数据的远程控制和数据传输 既 提高了传输速率 又增加了传输距离 而 USB 主机及显示部分则通过输出接口在 PC 机上显示 采用软件来模拟显示 输入信号的波形 同时可以控制 A D 转换器的启停 数据存取器的存取 USB 外设 辽宁科技大学毕业设计 论文 第 6 页 6 芯片的工作 显示图形的放大和缩小等 USB 数据传输的硬件结构由以下三部分组成 通用 USB 控制芯片 微处理器 USB 接口 它们构成了一个 USB 数据传输的最小系统 其功能为 USB 收发器负责 处理所有与 USB 总线事务有关的任务 如总线唤醒 数据接受 发送 打包 CRC 校验等 但该收发器不负责解释这些数据的意义 微处理器负责处理数据 响应主机 请求 以及控制 USB 收发器的工作 内存负责存储和提供数据 其中 状态监视器是一个高速的单稳态多频振荡器 用来实现掉电和恢复操作 的 当系统连续 3ms 检测不到主机的请求时 系统就会进入挂起状态 当系统从挂 起状态退出以后 状态监控器就产生一个正脉冲以复位 唤醒整个系统 辽宁科技大学毕业设计 论文 第 7 页 7 第 3 章 系统的程序设计 3 1 系统的硬件设计 基于 USB 的数据采集和控制系统主要利用了 A D 转换技术 D A 转换技术和 USB 技术 是伴随着 USB 技术的迅速发展与新的数据采集技术的发展而发展起来 的 采集到的数据通过主机接口 USB 口 发送到上位机并实时显示出来 其波形保 真性能与 A D 转换器的转换速率 分辨率与精度密切相关 A D 转换速率越高 复 现的波形的分辨率也就越高 A D 转换器位数越多 精度越高 波形保真性越高 3 1 1 PDIUSBD12 的性能特点和内部结构 PDIUSBD12 集成了许多新的特性 包括可编程时钟输出 SoftConnet GoodLink 低频晶振 1 可编程时钟输出 不必考虑电路设计时使用高频晶振产生的 EMI 问题 D12 的 CLKOUT 引脚输出时钟信号 可用作 MCU 时钟 最低 4MHZ 最高达 48MHZ D12 内部有倍频电路 外部只需 6M 晶振即可提供 D12 自身工作时钟 48MHZ 及 输出时钟 2 软连接 SoftConnet 技术 芯片内集成有 1 5 K 的 USB 上拉电阻 连接此电阻 将 D 置为高设置为高速 USB 设备 连接的建立通过外部 MCU 发送命令来实现 这就允许设备在决定与 USB 总线建立连接之前完成初始化时序 USB 总线连接 的连接可以重新初始化而不需要拔插 USB 电缆 3 GoodLink 技术 可提供良好的 USB 连接指示 在枚举中 LED 指示根据通信 情况间歇闪烁 当成功枚举和配置后 LED 指示将一直点亮 USB 支持两种信号 速率 USB 的最高速率是 12Mb s 但它可以工作在 1 5Mb s 的较低速率 同一个 USB 系统可同时支持这两种模式 但 1 15Mb s 低速率方式主要为了降低对速度 要求不高的设备的成本 只支持少数像鼠标这样的低带宽要求的设备 4 可编程的时钟频率输出 集成 320 字节多结构 FIFO 存储器 具体组成如字 辽宁科技大学毕业设计 论文 第 8 页 8 节数端点 0 端点 1 端点 320 16 IN 16 OUT 16 IN 16 OUT 64 IN 64 OUT 2 双缓冲 主端点的双缓冲配置增加了数据吞吐量 并轻松实现实时数据传输 5 多中断模式实现批量和同步传输 端点可通过 Set Mode 命令配置为 4 种不 同的模式 分别为 模式 0 Non ISO 模式 非同步传输 模式 1 ISO OUT 模式 同步输出传输 模式 2 ISO IN 模式 同步输入传输 模式 3 ISO IO 模式 同步输入输出传输 USB 电缆可以允许使用不同长度的电缆 最长可达几米 为了提供可靠的输入 电压和适当的终端阻抗 在电缆的每一端带偏压的终端 该终端可以发现任一端口 上 USB 设备的 插入 和 拔除 操作 并能区分全速和低速设备 图 2 指示了高 速 USB 设备在集线器的终端位置及其所连的功能设备 从中可以看出在电缆的下行 端的电阻 Rpu 是接在 D 线上的 在低速设备中 Rpu 电阻是接在 D 线上的 PD 工 USBD12 的软连接 SoftConnet 技术使得在电路设计中可以省去此电阻 并可以通 过软件设置 图 3 1 PDIUSBD12 的原理图 1 模拟收发器 集成的收发器接口可通过终端电阻直接与 USB 电缆相连 2 电压调整器 片内集成了一个 3 3V 的调整器用于模拟收发器的供电 该电压 还作为输出连接到外部上拉电阻 可选择 D12 提供的带有上拉电阻的软件连接 技术 3 倍频电路 PLL 片内集成了 6M 到 48M 时钟乘法 PLL 就可使用低成本的 6M 晶振 4 位时钟恢复 位时钟恢复电路使用 4X 过采样规则 从进入的 USB 数据流中 恢复时钟 它能跟踪 USB 规定范围内的抖动和频漂 辽宁科技大学毕业设计 论文 第 9 页 9 5 串行接口引擎 SIE 串行接口引擎实现了全部的 USB 协议层 完全由硬件实 现而不需要固件的参与 该模块的功能包括同步模式的识别 并行 串行转换 位填 充 解除填充 CRC 校验 产生 PID 校验 产生 地址识别和握手评估等 6 存储器管理单元 ME 和集成 RAM 在进行数据传输并与微处理器的并口相连 时 MMU 和集成 RAM 作为 USB 间传输的缓冲区 允许 MCU 以它自己速率对 USB 信息包读写 PDIUSBD12 内部结构框图如图 3 2 所示 图 3 2 PDIUSBD12 的内部框图 3 1 2 PDIUSBD12 的端点描述 端点 Endpoint 是一个 USB 设备唯一可以确认的部分 它是主机与设备之间的 通信流终点 一系列相互独立的端点在一起构成了 USB 逻辑设备 1 端点 0 要求 所有 USB 设备都需要实现一个缺省的控制方法 这种方法将端 点 0 作为输入端点 同时也将端点 0 作为输出端点 USB 系统用这个缺省方法初始 化及一般地使用逻辑设备 即设置此设备 缺省控制通道支持了对控制的传送 一 旦设备接上 并加电 且又收到一个总线复位命令 端点 0 就是可访问的了 2 非 0 端点要求 设备可以有除 0 以外的其它端点 这取决于这些设备的实现 低速设备在 0 号输入及输出端点外 只能有 2 个额外的可选端点 而高速设备可具 有的额外端点数仅受限于协议的定义 协议中规定 最多 15 个额外的输入端点和最 6MHZ D 3 3V 1 5K 电压调整器电压调整器 ANALOG TX AX softconnect D 上行端口上行端口 PLL 位时钟恢复位时钟恢复 PHILIPS SIE 内内存存管管 理理单单元元 集成集成 RAM 并行并行 和和 DAM 接口接口 D 辽宁科技大学毕业设计 论文 第 10 页 10 多 15 个额外的输出端点 非 0 端点在被配置前处于未知状态 在设备配置以后才能 使用 D12 的端点适用于不同类型的设备 并可通过 Set Mode 命令配置为 4 种不 同的模式 模式 0 非同步模式 模式 1 同步输出模式 模式 2 同步输入模式 模式 3 同步输入输出模式 本设计中只用到了模式 0 配置 同步模式配置未使用 端点 可用来存放从主机接受到或者设备发送来的数据 每个端点都有属于自己的缓冲区 模式 0 配置下的端点缓冲区如表 3 1 所示 端点 2 主端点 是进行吞吐大数据量的主要端点 具有 64 字节双缓冲区结构 可以减轻传输大量数据的任务 1 双缓冲 允许 USB 与本地 CPU 之间的并行读写操作这样就增加了数据的吞 吐量缓冲区切换是自动处理的这导致了透明的缓冲区操作 2 支持 DMA 直接存储器访问操作 可以和对其它端点的正常 I 0 操作交叉进 行 3 DMA 操作中的自动指针处理 在跨过缓冲区边界时不需要本地 CPU 的干预 4 可配置为同步传输或非同步批量和中断传输 表表 3 1 端点缓冲区配置端点缓冲区配置 模式模式 0 端点号 端点索 引传输类型 端点类型 方向 缓冲区长度 字节 0 0 控制输出 默认 输出 16 0 1 控制输出 默认 输入 16 1 2 普通输出 普通 输出 16 1 3 普通输出 普通 输入 16 2 4 普通输出 普通 输出 64 2 5 普通输出 普通 输入 64 3 1 3 PDIUSBD12 的指令集 PDIUSBD12 有自己的专用指令集 用于设置 USB 芯片 读取 USB 芯片的状态 和控制 USB 总线传输 D12 芯片内有一系列的寄存器对应着这些指令 微处理器把 要设置的值按字节写入 D12 的这些寄存器 或者从 D12 的这些寄存器中读出 USB 总线的状态 D12 有三种基本的类型的命令 初始化 数据流和通用命令 辽宁科技大学毕业设计 论文 第 11 页 11 1 初始化命令 初始化命令在 USB 总线进行枚举处理时使用 这些命令用于使能端点的功能 还可用来设置 USB 分配的地址 包括 设置地址 使能 设置端点使能 设置模式 设 置分频系数 软连接 端点模式以及中断模式等 DMA 设置等命令 表表 3 2 初始化命令指令集初始化命令指令集 命令名 接收者 编码 数据 设置地址使能器件 D0h 写 1 字节 设置端点使能器件 D8h 写 1 字节 设置模式器件 F3h 写 2 字节 设置 DMA器件 FBh 写 读 1 字节 2 数据流命令 数据流命令用于管理 USB 端点和外部微控制器之间的数据传输 D12 通过微控 制器中断初始化大量的数据流 微控制器利用这些命令访问和决定端点的 FIFO 是 否含有有效的数据 包括 读中断寄存器 选择端点 读最后处理状态寄存器 读缓 冲区 写缓冲区 使缓冲区有效 清除缓冲区 设置端点状态 应答建立等命令 如表 3 4 3 普通命令 包括发送恢复 读当前帧数目两个命令 表表 3 3 普通命令指令集普通命令指令集 命令指令集 发送恢复 F6h 无 读当前桢数 F5h 读 1 或 2 字节 3 1 4 PDIUSBD12 的管脚配置 PD12 共有 28 个管脚 具有 S028 和 TSSOP28 两种封装形式 管脚图如下图 3 3 所示 辽宁科技大学毕业设计 论文 第 12 页 12 图 3 3 PBIUSBBI2 的管脚配置 表表 3 4 数据流命令指令集数据流命令指令集 数据流命令 读中断寄存器 器件 F4h 读 2 字节 选择端点 控制输出 00h 读 1 字节 可选 控制输入 01h 读 1 字节 可选 端点 1 输出 02h 读 1 字节 可选 端点 1 输入 03H 读 1 字节 可选 端点 2 输出 04h 读 1 字节 可选 端点 2 输入 05h 读 1 字节 可选 读最后处理状态 控制输出 40h 读 1 字节 控制输入 41h 读 1 字节 端点 1 输出 42h 读 1 字节 端点 1 输入 43h 读 1 字节 端点 2 输出 44h 读 1 字节 端点 2 输入 45h 读 1 字节 辽宁科技大学毕业设计 论文 第 13 页 13 读缓冲区 选择的端点 F0h 写 n 字节 写缓冲区 选择的端点 F0h 写 n 字节 设置端点状态控制输出 40h 写 1 字节 控制输入 41h 写 1 字节 端点 1 输出 42h 写 1 字节 端点 1 输入 43h 写 1 字节 端点 2 输出 44h 写 1 字节 端点 2 输入 45h 写 1 字节 应答设置 选择的端点F1h 无 缓冲区清零 选择的端点F2h 无 使缓冲区有效 选择的端点 FAh 无 3 1 5 A D 与单片机接口电路 ADC0809 允许的最大时钟频率为 1280kHz 主要管脚功能如下 INO IN7 8 路模拟量输入端 可从这 8 个脚输入 0V 5V 待转换的模拟电压 ADDA ADDB ADDC 管道地址输入端 通过编码的方式来实现管道地址的选择 CLOCK 时钟输入端 ADC0809 只有在时钟脉冲信号的同步下才能进行 A D 转 换时钟频率越高转换得越快 典型时钟频率是 640kHz ALE 地址锁存允许端 START 启动脉冲输入端 在时钟脉冲频率为 640kHz 时 START 脉宽应大于 100ns 200ns EOC 转换结束信号端 在 A D 转换期间 EOC 0 表示转换正在进行 输出数 据不可信 转换完毕后立即使 EOC 1 表示转换已经完成 输出数据可信 D7 DO 转换所得八位输出数据 D7 是最高位 而 DO 是最低位 OE 允许输出端 OE 端控制输出锁存器的三态门 当 OE 1 时 转换所得数据 出现在 D7 D0 脚 当 OE 0 时 D7 DO 脚对外是高阻抗 辽宁科技大学毕业设计 论文 第 14 页 14 89C52 通过 P1 4 和读 写控制线来控制转换器的模拟输入通道地址锁存 启动 和允许输出 编程时注意启动 AD0809 后 EOC 在一定时间才能变成低电平 图 3 4 ADC0809 与 89C52 的接口电路 3 1 6 PDIUSBD12 与单片机接口电路 图 3 5 PDIUSBD12 与 89C52 的连接电路 PDIUSBD12 与 89C52 的连接电路如图 3 5 所示 89C52 的 ALE 和 PD12 的 ALE 相接 表示采用单独地址和数据总线配置 其 AO 脚接高电平用于控制命令或 数据输入到 PDIUSBD I2 也就是编程中 outportcmd 和 outportdata 函数 此外 辽宁科技大学毕业设计 论文 第 15 页 15 89C52 的多位地址 数据复用总线 PO 可直接与 PDIUSBD12 的数据总线相连 CLKOUT 时钟输出为 89C52 提供时钟输入 在该数据采集系统中 用 ADC0809 采 集 0 5V 的电压信号 经 A D 转换后将数字量存入预先设定的缓冲区里 利用接口 芯片 D12 将数据送至 USB 总线上 设备应用程序从缓冲区里取数据显示 通过数 值来说明 USB 接口的采集速率比一般的串行总线速度高 当前端的电压信号不断变 化的同时 在 PC 上可以观察到数据的变化 这就表明利用 USB 接口在数字采集系 统中进行数据传输是能够实现的 而且能够很好的实现 硬件电路原理图祥见附图 B1 3 2 系统的软件设计 3 2 1 PDIUSBD12 的固件编程思想 PDIUSBD 12 的固件设计成完全的中断驱动 当 CPU 处理前台任务时 USB 的 传输可在后台进行 这就确保了最佳的传输速率和更好的软件结构 同时简化了编 程和调试 后台 ISR 中断服务程序 和前台主程序循环之间的数据交换通过事件标志 和数据缓冲区来实现 其原理图如图 3 6 所示 图 3 6 前后台工作原理 由于这种结构 主循环不关心数据是来自 USB 串口还是并口 它只检查循环缓 冲区内需要处理的新数据 这个概念很重要 这样主循环程序专注于数据的处理而 ISR 能够以最大可能的速度进行数据的传输 相似的 控制端点在数据包处理时采用了同样的概念 ISR 接收和保存数据缓 辽宁科技大学毕业设计 论文 第 16 页 16 冲区中的控制传输并设置相应的标志寄存器 主循环向协议处理程序发出请求 由 于所有的标准器件 级别和厂商请求都是在协议处理程序中进行处理 ISR 得以保 持它的效率 而且一旦增加新的请求只需要在协议层进行修改 3 2 2 PDIUSBD12 固件编程的结构 固件的积木式结构如图 3 7 所示 图中箭头表示数据传输方向 下面是事件标志 EPPFLAGS 和 Setup 包数据缓冲区 CONROL XFER 的 结构体 事件标志 typedef union epp flags struct flags unsigned char timer 1 unsigned char bus reset 1 unsigned char suspend 1 unsigned char setup packet 1 unsigned char remote wakeup 1 unsigned char in isr 1 unsigned char control state 2 unsigned char configuration 1 unsigned char verbose 1 unsigned char epl rxdone 1 unsigned char setup dma 1 unsigned char dma state 2 bits unsigned short value EPPFLAGS USB 设备请求寄存器 typedef struct device request 辽宁科技大学毕业设计 论文 第 17 页 17 unsigned char bmRequesetType unsigned char bRequest unsigned short wValue unsigned short windex unsigned short wLength DEVICE REQUEST Setup 包数据缓冲区 typedef struct control xfer DEVICE REQUSET DeviceRequest unsigned short wLength unsigned short wCount unsigned char pData unsigned char dataBuffer MAX CONTROLDATA SIZE CONTROL XFER 辽宁科技大学毕业设计 论文 第 18 页 18 图 3 7 固件结构和数据流向 3 2 3 PDIUSBD12 固件编程的实现 中断服务程序 ISR C 这部分代码处理由 PDIUSBD12 产生的中断 它将数据从 PD 工 USBD12 的内部 FIFO 取回到 CPU 存储器并建立正确的事件标志 通知主循环 进行处理 在 ISR 的入口固件使用 D12 Read Interrupt Register 来决定中断源 然后将进入相应的子程序进行处理 PDIUSBD12 的固件完全由中断驱动 ISR 的流程 图 8 如下所示 例如 在 OUT 数据阶段的建立包时 工 SR 将建立包和 OUT 数据都 存入 CONTROL XFER 缓冲区中 然后将 setup packer 标志就到主循环这将 减少主循环不必要的服务时间 并且简化了主循环的编程 总线复位和挂起并不要 求在 ISR 中进行特殊的处理 ISR 只需在 EPPFLAGS 中设置 bus reset 或 suspends 标志位 然后退出即可 ISR 与前台主循环通过事件标志 EPPFLAGS 和 数据缓冲区 CONROL XFER 进行通信 主循环和 ISR 之间的任务分配是这样的 主循环 采集数据 发出 USB 请求 和处理 USB 总线事件和用户功能等等 MAINLOOP C 中断服务程序 ISR C 标准请求处理 CHAP 9 C 厂商请求处理 PROTODMA C PDIUSBD12 命令接口 D12CI C 硬件提取层 EPPHAL C 辽宁科技大学毕业设计 论文 第 19 页 19 ISR 从 D12 收集数据而主循环对数据进行处理 当工 SR 收集了足够的数据时 它 只通知主循环己经准备好等待处理 3 2 4 端点处理程序 控制端点 控制传输总是在 SETUP 阶段开始 之后为可选的 DATA 阶 然后 在 STATUS 阶段结束 如图 3 8 所示为控制端点不同状态的转变 固件使用这 3 种 状态来正确地处理控制传输 图 3 8 控制端的安处理程序转换 从上面的流程图 3 8 中可以看出 MCU 需要通过选择控制输出端点提取建立包 的内容来决定端点是为满还是空 如果控制端点为满 MCU 将从缓冲区读出内容并 无数据控制 返回状态 空闲 接收 发送 输入 输出 辽宁科技大学毕业设计 论文 第 20 页 20 将其存入存储区 之后 它将从存储区使主设备请求生效 如果是一个有效的请求 MCU 必须向控制输出端点发送应答建立命令以重新使能下一个建立阶段接下来 MCU 需要证实控制传输是控制读还是写 这可以通过读建立包中 bmRequestType 的 第 8 位来实现 如果控制传输是一个控制读类型 那就是说器件需要在下一个数据 阶段向主机发回数据包 MCU 需要设置一个标志以指示 USB 设备现在正处于传输 模式 即准备在主机发送请求时发送数据 如图 3 9 所示为控制输出处理程序 为了说明它 举一个主机请求的例子叫做 Get Descriptor 的标准设备请求 当 USB 器件 D12 接收到建立包 将产生一个 中断通知 MCU 微控制器响应中断 通过读 D12 中断寄存器决定包是发到控制端 点还是普通端点 如果包是送往控制端点 MCU 要通过读 D12 的最后处理状态寄 存器进一步确定数据是否是一个建立包 第一个包必须是建立包 图 3 9 控制输入处理流程 建立阶段结束之后 主机会执行数据阶段 D12 等待接收 Control In 包 如下图 3 10 NONO NO NO NO NO Yes Yes Yes Yes Yes Yes Yes 控制输出入口 读端点处理状态 清中断标志 建立包 接收数据出错 读取断电数据并保 对控制输入端点和控制输 出断电进行建立数据对应 包 设置等待状态 停止控制端点 设置为等待状态 数据长度出错 子程序结束 处于接收状态 设置等待 状态 设 置建立包 标志标志 设置发送 状态 设 置建立包 标志标志 设置等待状态 带数据的要求 读取要求 读取端点数据并保 存 接收完毕 设置为等待状态 设置建立包标志 NO NONO NO YesYes Yes 读端点处理状 态 清中断标 志 控制输入入口 发送状态 剩下数据 16 字节 子程序结束 剩下 0 字 节 发送 16 个字 节数据 设置为发送状 态 发送剩下数据 设置为等待状 态 发送一个空包 设置为等待状 态 辽宁科技大学毕业设计 论文 第 21 页 21 图 3 10 控制输出处理流程 MCU 首先需要通过读 D12 的最后处理状态寄存器清零 Control In 中断标志位 辽宁科技大学毕业设计 论文 第 22 页 22 接着 MCU 再确认 D12 处于传输模式后进行数据包的发送 由于 D12 的控制端点只 有 16 字节 FIFO 如果传输的长度大于 16 字节 MCU 在传输阶段就必须控制数据 的数量 MCU 必须检查要发送到主机的当前和剩余的数据大小 如果剩下的字节数 大于 16 MCU 将先发送 16 字节并用减去参考长度 要求的长度 16 当下一个 Corntol In 标志来到时 MCU 将确定剩余的字节是否为零 如果己经没有数据要发 送 MCU 需要发送一个空的包以指示主机 数据已经发送完毕 如果建立包为 Set Descriptor 请求 那么建立包中的控制传输 将指示此包为控制写类型 在执行完 Set Descriptor 请求过程后 MCU 等待数据阶段 主机发送一个 Control Out 标志 MCU 从 D12 缓冲区中减去数据 流程现在处于 Control Out 处 理程序的右端 MCU 首先确认 D12 是否处于 USB Receive 模式 然后 MCU 通过 检查选择控制输出端点确认缓冲区是否己满并将数据从缓冲区读出 普通端点 端点 1 和端点 2 这里定义为普通输入输出 普通输出端点配置为从主机接收数据包 当 MCU 从主机接收 Generic Out 标 志 通过读中断寄存器识别 时 D12 中断位必须清零 选择端点将清零 Generic Out 缓冲区 接下来 MCU 需要确认数据的长度并把数据读出 然后设置收到数据标志 位 bEPPflag 对于普通输入端点的中断 只要读取端点号的最后处理状态寄存器来消除中断 寄存器的相应位 把状态清零就可以了 Generic In 标志是在发送完数据后才产生 的 当还有数据要发送时可以在中断程序里接着继续发 注意 这里的数据发送完成 标志是指在主机的一个有效的 IN 事务后才发生的 当主机发出 IN 事务而设备没有 送出数据时 是不会产生中断的 3 2 5 主循环 MAINLOOP C MCU 一旦上电就需要初始化其所有端口 存储区 定时器和中断服务程序 之 后 MCU 将重新连接 USB 包括将 Soft Connect 寄存器设置为 ON 这些过程是很 重要的 因为它确保了在 MCU 准备好服务 D12 之前 D12 不会进行操作 在主循环程序中 MCU 对键盘进行轮询 如果任何一个特定的按键被按下 键 处理命令将执行子程序并返回主循环 增加该子程序的目的仅仅是为了调试 1ms 辽宁科技大学毕业设计 论文 第 23 页 23 定时器用于激活该子程序以检测在评估板上的任何按键 当轮询到了检测建立包时 它确认建立标志在之前是否被中断服务程序所置位 如果建立标志置位 它将向协 议层发送一个器件请求进行处理 3 2 6 驱动程序开发工具的介绍 Windows DDK Windows DDK 是 Microsoft 公司提供的一个开发 Windows 驱动程 序的工具 是 Microsoft 出品的设备驱动程序开发工具包 DDK Device Developer Kit 它有 Windows98 DDK 和 Windows2000 DDK 两个版本 前者能够开发 Windows95 98 Me NT 下的 VxD KMD 和 WDM 驱动程序 后者可以开发 Windows98 Me NT 2000 下的 KMD 和 WDM 驱动程序 利用 DDK 开发 Windows 驱 动程序是一种比较传统的方法 它要求设计者必须对 Windows 的体系结构 设备驱动程序的结构 虚拟机管理 器 VMM 以及 Intel CPU 体系结构有深入的了解 而且需要保护模式的汇编语言编 程经验 因此 在实际的开发过程中 DDK 一般不常被人们所使用 取而代之的是 另外两种工具 DriverStudio 和 WinDriver DriverStudio 是由 Compuware 公司提供的驱动程序开发工具 简化了 Windows 驱动程序的开发 调试和测试 完整的版本是由 SoftICE DriverWorks DriverN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论