at89c51单片机usb接口驱动和应用程序的开发毕业论文(编辑修改稿)内容摘要:
连接的集线器端口失效时进入挂起状态,这就是所谓的选择性挂起 (Selective Suspend)。 当 USB 设备接上或 USB 设备移开的时候,主机启动一个被称作总线枚举(bus enumeration)的进程,来标识并管理设备状态的改变,当 USB 设备接上一个加电端口时,系统将采取以下操作: 1. USB 设备所连的集线器通过其通向主机的状态改变通道向主机汇报本USB 设备已连接上。 此时, USB 设备处于加电状态,它所连接的端口是无效的。 2.主机通过寻问集线器决定此次状态改 变的确切含义。 3.主机一旦得知新设备已连上以后,它至少等待 100ms 以使得插入操作的完成以及设备电源稳定工作。 然后主机发出端口使能及复位命令给那个端口。 4.集线器将发向端口的复位信号持续 10ms。 当复位信号撤消后,端口已经有效了。 这时 USB 设备处于缺省状态,并且可从 VBUS 汲取小于 100mA 的电流 ,所有设备寄存器及状态己经被复位,设备可对缺省地址产生响应。 5.主机给设备分配一个唯一的地址,设备转向地址状态 (Address State)。 6.在 USB 设备接受设备地址之前,它的缺省控制通道 (Default Control Pipe)在缺省地址处自然是可寻址的,主机通过读取设备描述表,判决设备缺省通 道的地址。 设备驱动程序开始收集关于设备的信息,包括接口和端点。 如果设备有多个配置,驱动程序通常也要全部读出。 当设备已被配置好并且可以运行时,它将进入配置状态。 第 3 章 USB 数据采集系统的硬件设计 系统的模拟开关、 A/D 转换器均采用传统的设计方法。 本章主要介绍 USB接口的设计。 USB 接口方案 USB 接口设计中有三种芯片选择方案 :第一种方案是选用设计成标准 USB控制器的低层芯片,例如 Cypress 公司的 CY7C63XXX 系列,这类芯片是完全按照 USB 协议设计的,但由于其结构不同于其它常用控制芯片,开发者需要较长的学习时间,不利于快速开始一个项目;另一种方案是采用具备 USB 通信功能的单片机,例如 Intel/Cypress 的 8X93 Cypress 的 EZUSB,这些单片机采用开发者熟悉的结构和指令集,处理能力强,构成系统的电路简单,调试方便,是目前常用的一种方案。 但由于具备了 USB 接口,与过去的开发系统通常不兼容,需要购买新的开发 系统,投资较高;第三种方案是采用连接到一般微控制器的接口芯片,例如 philps 的 PDIUSBD11/1 National 半导体公司的 USBN960X、南京沁恒电子有限公司的 CH372 等,它可用一般的单片机开发系统进行开发,不需购买新系统,而且 USB 芯片本身价格较便宜,所以这种接口方案成本很低。 另外由于采用一般单片机,熟悉单片机的开发人员可以很快的开始一个项目。 其缺点是需要两个芯片,电路设计和调试比较复杂,接口性能由于开发者的因素差异较大。 根据本系统的设计要求和实际情况,在设计中选择了第三种方案。 USB 接口的硬件设计 CH372 简介 CH372 是一个 USB 总线的通用设备接口芯片。 在本地端, CH372 具有 8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU 等控制器的系统总线上;在计算机系统中, CH372 的配套软件 提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。 CH372 的主要特点包括以下方面: (1)全速 USB 设备接口,兼容 USB ,即插即用,外围元器件只需要晶体和电容。 (2)提供一对主端点和一对辅助端点,支持控制传输、批 量传输、中断传输。 (3)具有省事的内置固件模式和灵活的外部固件模式。 (4)内置固件模式下屏蔽了相关的 USB 协议,自动完成标准的 USB 枚举配置过程,完全不需要本地端控制器作任何处理,简化了单片机的固件编程。 (5)通用 Windows 驱动程序提供设备级接口,通过 DLL 提供 API 应用层接口。 (6)产品制造商可以自定义厂商标识( Vendor ID)和产品标识( Product ID)。 (7) 通用的本地 8 位数据总线, 4线控制:读选通、写选通、片选输入、中断输出。 (8) 主端点上传下传缓冲区各64 字节,辅助端点上传下传缓 冲区各 8 字节。 (9) 支持 5V 电源电压和 电源电压,支持低功耗模式。 表 31 CH372 引脚 CH372 用到的命令如下表 32 所示: 表 32 CH372 的命令 如果命令的输出数据是操作状态,参考 表 33。 表 33 操作状态 命令 GET_IC_VER:该命令获取芯片及固件版本。 返回的一个字节数据是版本号,其位 7 为 1,位 6 为 0,位 5~位 0 为版本号。 如果返回值为 0B7H,去掉位7 的 1,实际版本号为 37H。 命令 ENTER_SLEEP:该命令使 CH372 芯片进入低功耗睡眠挂起状态 (部分型号的芯片不支持该功能)。 进入低功耗状态后, CH372 芯片的时钟停振,从而节约电能,直到检测到以下两种情况之一才退出低功耗状态:一是检测到 USB 总线有信号;二是单片机向 CH372 芯片写入新的命令(没有输入数据的命令,例如 GET_IC_VER 命令)。 通常情况下, CH372 芯片从低功耗状态退出并恢复到正常工作状态需要几毫秒的唤醒时间,当完全恢复到正常工作状态后, CH372 将 产生 USB_INT_WAKE_UP 事件中断。 命令 RESET_ALL:该命令使 CH372 执行硬件复位。 通常情况下,硬件复位在 40ms 时 间之内完成。 命令 CHECK_EXIST:该命令测试工作状态,以检查 CH372 是否正常工作。 该命令需要输入 1 个数据,可以是任意数据,如果 CH372 正常工作,那么 CH372的输出数据是输入数据的按位取反。 例如,输入数据是 57H,则输出数据是 A8H。 另外,在 CH372 复位后未收到任何命令之前,从其并口通常是读出数据 00H。 命令 CHK_SUSPEND:该命令设置检查 USB 总线挂起状态的方式。 该命令需要输入两个数据,分别是数据 10H 和检查方式。 检查方式有 2 种: 00H 说明不检查 USB 挂起 (上电或复位后的默认值 ); 04H 说明以 50ms 为间隔检查 USB挂起。 USB 总线挂起状态包括两种情况:一是 USB 信号线物理断开,完全没有USB 信号;二是 USB 主机端停止发送 SOF 信号,也就是 USB 主机端要求 USB设备进入挂起状态。 当检查到 USB 总线挂起状态后, CH372 将产生USB_INT_USB_SUSPEND 事件中断。 命令 SET_USB_ID:该命令设置 USB 的厂商识别码 VendorID 和产品识别码 ProductID。 该命令需要输入 4 个数据,依次是厂商 VID 的低 8 位、厂商 VID的高 8 位,产品 PID 的低 8 位,产品 PID 的高 8 位。 如果需要设置 ID,那么该命令必须在 SET_USB_MODE 命令之前执行。 命令 SET_USB_MODE:该命令设置 USB 工作模式。 该命令需要输入 1 个数据,该数据是模式代码:模式代码为 00H 时切换到未启用的 USB 设备方式(上电或复位后的默认方式);模式代码为 01H 时切换到已启用的 USB 设备方式,外部固件模式;模式代码为 02H 时切换到已启用的 USB 设备方式,内置固件模式。 在 USB 设备方式下,未启用是指 USB 总线 D+的上拉电阻被禁止,相当于断开 USB 设备;启用是指 USB 总线 D+的上拉电阻有效,相当于连接 USB 设 备,从而使 USB 主机能够检测到 USB 设备的存在。 通过设置是否启用,可以模拟USB 设备的插拔事件。 通常情况下,设置 USB 工作模式在 20uS 时间之内完成,完成后输出操作状态。 命令 GET_STATUS:该命令获取 CH372 的中断状态并通知 CH372 取消中断请求。 当CH372 向单片机请求中断后,单片机通过该命令获取中断状态,分析中断原因并处理。 表 34 中断状态字节 下面是中断状态的分析说明。 在内置固件模式的 USB 设备方式下,单片机只需要处理表中标注为灰色的中断状态, CH372 内部自动处理了其它中断状态。 表 35 中断状态值 命令 UNLOCK_USB:该命令释放当前 USB 缓冲区。 为了防止缓冲区覆盖,CH372 向单片机请求中断前首先锁定当前缓冲区,暂停所有的 USB 通讯,直到单片机通过 UNLOCK_USB 命令释放当前缓冲区,或者通过 RD_USB_DATA 命令读取数据后才会释放当前缓冲区。 该命令不能多执行,也不能少执行。 命令 RD_USB_DATA0:该命令从当前 USB 中断的端点缓冲区中读取数据块。 首先读取的输出数据是数据块长度,也就是后续数据流的字节数。 数据块长度的有效值是 0 至 64,如果长度不为 0,则单 片机必须将后续数据从 CH372 逐个读取完。 该命令与 RD_USB_DATA 命令的唯一区别是后者在读取完成后还会自动释放当前 USB 缓冲区(相当于再加上 UNLOCK_USB 命令)。 命令 WR_USB_DATA5:该命令向 USB 端点 1 的上传缓冲区写入数据块, 在内置固件模式下, USB 端点 1 就是中断端点。 首先写入的数据是数据块长度,也就是后续数据流的字节数。 数据块长度的有效值是 0 至 8,如果长度不为 0,则单片机必须将后续数据逐个写入 CH372。 命令 WR_USB_DATA7:该命令向 USB 端点 2 的上传缓冲区写入数据块,在 内置固件模式下, USB 端点 2 就是批量端点。 首先写入的输入数据是数据块长度,也就是后续数据流的字节数。 数据块长度的有效值是 0 至 64,如果长度不为 0,则单片机必须将后续数据逐个写入 CH372。 USB 接口的硬件 电路 设计 图 31 CH372 的引脚图 CH372 芯片的被动并行接口包括: 8 位双向数据总线 D7~ D0、读选通输入引脚 RD、写选通输入引脚 WR、片选输入引脚 CS、中断输出引脚 INT以及地址输入引脚 A0。 通过被动并行接口, CH372 芯片可以很方便地挂接到各种 8位单片机、 DSP、 MCU 的 系统总线上,并且可以与多个外围器件共存。 CH372 芯片的 RD和 WR可以分别连接到单片机的读选通输出引脚和写选通输出引脚。 CS由地址译码电路驱动,用于当单片机具有多个外围器件时进行设备选择。 INT输出的中断请求是低电平有效,可以连接到单片机的中断输入引脚或者普通 I/O 引脚,单片机可以使用中断方式或者查询方式获知中断请求。 当 WR为高电平并且 CS和 RD及 A0 都为低电平时, CH372 中的数据通过 D7~ D0 输出;当 RD为高电平并且 CS和 WR及 A0 都为低电平时, D7~D0 上的数据被写入 CH372 芯片中;当 RD为高电平并且 CS和 WR都为低电平而 A1 为高电平时, D7~ D0 上的数据被作为命令码写入 CH372 芯片中。 CH372 芯片占用两个地址位,当 A0 引脚为高电平时选择命令端口,可以写入新的命令,或者读出中断标志;当 A0 引脚为低电平时选择数据端口,可以读 写数据。 表 36 并口 I/O 操作的真值表(表中 X 代表不关心此位, Z 代表 CH372 三态禁止)。 CH372 芯片的 UD+和 UD引脚应该直接连接到 USB 总线上。 如果为了芯片安全而串接保险电阻或者电感或者 ESD 保护器件,那么交直流等效串联电阻应该 在 5Ω之内。 CH372 芯片内置了电源上电复位电路,一般情况下,不需要外部提供复位。 CH372 芯片正常工作时需要外部为其提供 12MHz的时钟信号。 一般情况下,时钟信号由 CH372 内置的反相器通过晶体稳频振荡产生。 外围电路只需要在 X1和 X0 引脚之间连接一个标称频率为 12MHz 的晶体,并且分别为 X1 和 X0 引脚对地连接一个高频振荡电容。 如果从外部直接输入 12MHz 时钟信号,那么应该从 X1 引脚输入,而 X0 引脚悬空。 CH372B 芯片支持 或者 5V 电源电压。 当使用 5V工作电压时, CH372芯片的 VCC 引脚输入 外部 5V 电源,并且 V3 引脚应该外接容量为 4700pF 到 左右的电源退耦电容。 当使用 工作电压时, CH372 芯片的 V3 引脚应该与 VCC 引脚相连接,同时输入外部的 电源,并且与 CH372 芯片相连接的其它电路的工作电压不能超过。 USB 接口硬件的实现 综合以上对 USB 的介绍和陈述, USB 接口电路可有以下几部分构成 (总体电路图的设计见附录一)。 时钟电路 下图为 AT89C51 的时钟电路图,单片机内部有一个用于构成振荡器的高增。at89c51单片机usb接口驱动和应用程序的开发毕业论文(编辑修改稿)
相关推荐
刻,用于判断时限任务是否超时。 parameter_01 int 该任务的第 1个条件中,角色当前达成的参数。 参数含义参见下方的对照表。 parameter_02 int 该任务的第 2个条件中,角色当前达成的参数。 parameter_03 int 该任务的第 3个条件中,角色当前达成的参数。 parameter_04 int 该任务的第 4个条件中,角色当前达成的参数。 ( 4) 宠物图鉴
式的经济收入、有形服务和福 利 [2]。 广义的薪酬既包括经济型报酬,也包括非经济性的报酬,非经济性报酬 是指员工对组织及工作本身的心理感受,如工作的认可、挑战性工作、工作环境、 注释: [1] 李新建 .全面 薪酬:让员工认同 [EB/ [2] 常晓妍 .薪酬体系的选择与优化 [J].企业管理 ,2020,5(12). 工作氛围、发展、晋升机会、能力提高、职业安全等
可以给好友留言,或者查看好友的空间留言。 系统的设计目标 (1)设计目标: 系统应建立友好的界面 ,即要操作简单、直观、灵活,又要易于学习掌握。 这个系统的目的:使好友之间留言更加便捷,好友易于对留言进行回复。 如果操作复杂,就失去了推 广价值,因为这个系统是面向没有计算机使用基础的普通用户。 系统在用户输入用户名,密码时,就具有自动识别的功能,以帮助用户更正错误。 系统在确定用户名和密码后
no 与 51 单片机相比 : 变更人性化,编程相对 人性 化和直观 , 没有 单片机基础 的人也能很快上手。 硬件性能上, Arduino 更加稳定,不会像51 一样时常出现跑 飞的现象。 Arduino 作为开源的一款的单片机, 更重要 的是 在这个 4g 时代可搜寻的学习资料是非常多的。 综上所述, Arduino 无疑是比 51 更适合新手和用于比赛专用的。 Arduino 循迹小车 8
5]技术的可行性。 AMOOFDM(不是 ACOOFDM 吗) 系统根据每个子载波上的频率响应情况,单独为其设置调制方式,以求获得更好的系统性能。 S. C. J. Lee 等人于 2020 年和 2020 年通过实验分别实现了 直流偏置光正交 频 分 复 用 ( Direct Currentbiased Optical Orthogonal Frequency Division
设计及实施等,综合比较评审打分。 9 驻地 服务 驻地服务人员数量,经验、资质认证等情况,综合比较评审打分 5 6 合 计 100 2评标过程保密性 公开开标后,直至 合同生效之日止 ,凡审查、澄清、评价和比较投标的有关资料以及授标意见等,均不得向投标人及与评标无关的其他人透露。 本文档是纯 word 文档,可以任您自由编辑修改,下载后双击页眉页脚后可用 delete 键删除,