USB鼠标嵌入式驱动系统
1.嵌入式系统组成简介
![1.嵌入式系统组成简介](https://img.taocdn.com/s3/m/0b0851ee551810a6f524860f.png)
串口4
串口1
串口2
设备
1)嵌入式系统硬件系统
嵌入式系统的硬件是以嵌入式处理器 为核心,配臵必要的外围接口部件。在嵌 入式系统设计中,应尽可能选择适用于系 统功能接口的SoC/SOPC芯片,以最少的外 围部件构成一个应用系统,满足嵌入式系 统的特殊要求。 一般包括有 :嵌入式处理器; 存储器; I/O系统和外设。
硬件抽象层
是硬件功能模块的集合,是对硬设备功能的第一
层抽象,实现基本的IO操作。 所关心的是如何实现硬件功能的软件接口,而不 是设备的管理逻辑。 每个硬件可能有多个端口(设备),对应的硬件 抽象层是对这些端口(设备)操作的基本抽象, 为驱动程序管理这些设备提供接口。上层驱动程 序在不需要了解具体设备硬件信息的情况下,就 可以操作这些设备。
2)板级支持包BSP
BSP主要是为驱动程序提供访问硬件设备寄存器 的函数包,从而实现对操作系统的支持。不同操作 系统有不同的板级支持包。具体完成如下二方面的 功能: ①在系统启动时,完成对硬件的初始化。如对设备 的中断、CPU的寄存器和内存区域的分配等进行操作。 ②为驱动程序提供访问硬件的手段。如系统是统一 编址的,则可以直接在驱动程序中用C语言的函数进 行访问。如是单独编址的,只能用汇编语言编写函 数进行访问。BSP就是为上层的驱动程序提供访问硬 件设备寄存器的函数包。
(3)中间层(驱动层软件)
使用任何外设都需要有驱动程序的支持, 驱动程序不仅要实现设备的基本功能函数, 如初始化、中断响应、发送、接收等,而且 还要提供完备的错误处理函数。中间层为上 层软件提供了设备的操作接口。上层程序只 需调用驱动程序提供的接口,而不用理会设 备具体的内部操作。 驱动层软件(中间层)将系统软件与底 层硬件部分进行了隔离,使得系统的底层设 备驱动程序与硬件无关。具体包括硬件抽象 层HAL和板级支持包BSP。
USBgadget设备驱动解析
![USBgadget设备驱动解析](https://img.taocdn.com/s3/m/2c6da17a9e314332396893ac.png)
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:253 errors:0 dropped:0 overruns:0 frame:0
};
static struct platform_device *smdk2410_devices[] __initdata = {
…,
&s3c_device_usbgadget, /*USB gadget device设备登记*/
};
static void __init sdmk2410_init(void)
};
printk("smdk2410_udc: %s\\n",s3c2410_pullup_info[cmd]);
s3c2410_gpio_cfgpin(S3C2410_GPG9, S3C2410_GPG9_OUTP);
switch (cmd)
{
case S3C2410_UDC_P_ENABLE :
#make zImage
#make modules
在名目drivers/usb/gadget下生成g_ether.ko
3、加载驱动,测试功能
利用前面的生成的内核,启动系统后,加载g_ether.ko
#insmod g_ether.ko
#ifconfig usb0 192.168.1.120
……
usb0 Link encap:Ethernet HWaddr 5E:C5:F6:D4:2B:91
USB(Host)唯独通过描述符了解设备的有关信息,按照这些信息,建立起通信,在这些描述符中,规定了设备所使用的协议、端点情形等。因此,正确地提供描述符,是USB设备正常工作的先决条件。
Linux下的硬件驱动——USB设备
![Linux下的硬件驱动——USB设备](https://img.taocdn.com/s3/m/63a7448fa0c7aa00b52acfc789eb172dec639949.png)
Linux下的硬件驱动——USB设备什么是USB设备?USB即Universal Serial Bus,翻译过来就是通用串行总线。
它是一种规范化的、快速的、热插拔的串行输入/输出接口。
USB接口常被用于连接鼠标、键盘、打印机、扫描仪、音频设备、存储设备等外围设备。
Linux下的USB驱动在Linux系统中,每个USB设备都需要一个相应的驱动程序来驱动。
从Linux 2.4开始,内核提供了完整的USB设备支持。
对于每个USB设备,内核都会自动加载对应的驱动程序。
Linux下的USB设备驱动程序主要分为以下几个部分:USB核心驱动程序USB核心驱动程序是操作系统内核中处理USB设备的核心模块,负责与各种类型的USB设备进行通信,包括主机控制器、USB总线、USB设备等。
它与驱动程序和应用程序之间起到了桥梁的作用,为驱动程序提供了USB设备的基础支持。
USB设备驱动程序USB设备驱动程序是与特定USB设备相对应的驱动程序,为USB设备提供具体的读写功能和其他控制功能。
USB核心驱动程序和USB设备驱动程序之间的接口USB核心驱动程序和USB设备驱动程序之间的接口是指USB层和应用程序层之间的接口,负责传递各种USB操作的命令和数据。
如何编译一个USB设备驱动编译一个USB设备驱动程序需要按照以下步骤进行:步骤一:安装必要的软件包首先需要安装编译和调试USB设备驱动所需的软件包,包括编译工具链、内核源代码、内核头文件等。
sudo apt-get install build-essential linux-source linux-headers-`una me -r`步骤二:编写代码现在可以编写USB设备驱动程序的代码,此处不做详细介绍。
步骤三:编译代码在终端窗口中进入USB设备驱动程序所在的目录下,输入以下命令进行编译:make此命令将会编译USB设备驱动程序,并生成一个将驱动程序与内核进行连接的模块文件。
用于NIOSⅡ嵌入式处理器系统的鼠标控制器设计
![用于NIOSⅡ嵌入式处理器系统的鼠标控制器设计](https://img.taocdn.com/s3/m/64e35099daef5ef7ba0d3c1f.png)
S C。它 通常 由 NI I 理 器 、 ao OP OS I 处 Av ln总 线 结 构 和 各
Av ln总 线规 范定 义 了外 设 可 以包 含 的 各 种 信号 类 a o 型( 例如 地址 、 据 、 数 时钟等 )3。本 文所 设计 的鼠标控 制器 _ ] 是一 个从模 式设 备 ,它 和 Av ln总线 通 过从 端 口信号 连 ao 接 。部分 Av ln从 端 口信 号 的方 向 和 说 明 如 表 1所示 。 ao 信号 的方 向是从 外设 的角度 定义 的 。
Qig J a me g GeYu Ch nCh n n u n n n e o g
( p rme t f f eto i S in ea dEn ie r g De at n cr n c c c n g n e i ,Na n ie s y o o El e n NigUnv r i ,Na j g 2 0 9 ) t ni 1 0 3 n
1 1 Avln总线从端 口接 口信 号 . ao
随着 芯 片 制 造 技 术 的发 展 , O C( 编 程 单 芯 片 系 SP 可 统) 已成为 嵌入式 系统 设 计 的 一个 发展 方 向。Ah r 司 ea公 推 出 的 NI I 入 式 处 理 器 系 统 , 目前 比较 流 行 的 OS I 嵌 是
Kewo d :NI I S 2 y rs OS I;P / ;Mir s f n el u e OPC co otI tlmo s ;S i
鼠标方案工程师
![鼠标方案工程师](https://img.taocdn.com/s3/m/6e577b4c91c69ec3d5bbfd0a79563c1ec4dad765.png)
鼠标方案工程师一、工作内容1. 鼠标产品规划与设计鼠标方案工程师需要根据市场需求以及公司战略进行产品规划,确定产品定位、功能特点以及技术指标等。
在产品设计阶段,他需要结合人体工学、材料工艺等知识,设计出外形美观、手感舒适、操作灵活的鼠标产品。
2. 硬件设计与调试在硬件设计方面,鼠标方案工程师需要熟悉电子元器件的选型与应用,掌握PCB设计与布线技术,了解传感器原理与算法等。
他还需要进行硬件测试与调试,确保鼠标在各种环境下都能正常稳定地运行。
3. 软件开发与优化鼠标方案工程师需要编写嵌入式软件,进行鼠标的驱动程序开发与优化。
他需要掌握C/C++等编程语言,了解USB/Bluetooth等通信协议,熟悉传感器数据的处理与解析算法等。
4. 产品认证与质量控制在产品开发的最后阶段,鼠标方案工程师需要进行产品的认证测试,确保产品符合国际标准与法规要求。
同时,他还需要进行质量控制与线上问题反馈解决,不断地改进产品质量与用户体验。
二、技能要求1. 电子电路与信号处理鼠标方案工程师需要具备电子电路设计与分析的能力,熟悉模拟与数字信号处理技术,了解传感器原理与工作方式。
2. 嵌入式系统与编程鼠标方案工程师需要熟练掌握嵌入式系统的开发与调试,具备C/C++等编程语言的编写能力,了解USB/Bluetooth等通信协议。
3. 人机工程学与材料工艺鼠标方案工程师需要了解人体工学原理与实践,熟悉塑料、金属等材料的选用与加工工艺,能够设计出外形美观、手感舒适的产品。
4. 产品测试与质量控制鼠标方案工程师需要熟悉产品认证测试流程与标准,具备产品质量控制与问题解决的能力,确保产品在市场上有竞争力。
5. 创新意识与团队合作鼠标方案工程师需要独立思考与创新意识,不断追求技术突破与产品改进。
同时,他还需要具备良好的团队合作精神,与其他部门密切配合,共同完成产品的开发与上市。
三、行业前景随着智能手机、平板电脑、电脑游戏等应用领域的不断扩大,鼠标作为人机交互的重要工具,其市场需求也在不断增加。
Server-2008-嵌入-USB3.0驱动
![Server-2008-嵌入-USB3.0驱动](https://img.taocdn.com/s3/m/324f1abad15abe23492f4d37.png)
Server 2008 嵌入 USB3.0驱动1.前言需要有完全的管理员权限,若有access denied的提示,说明当前的管理员权限不是最完整的,有可能是域用户的权限限制,请使用未加入域的单机操作,亦有可能是由于后台的防毒软件在干扰;本文中的USB是针对T130/R230/R330/T330,不支持其他机型。
但其他机型的制作方式一样,只是需要更换不同的USB驱动;本文方式同样适用于将阵列卡或其他驱动集成进去,将相应的驱动解压后放入文中所提及的USB3目录即可,不同的驱动,分目录都放在USB3目录里即可全部一起集成,无需分别指定集成;2.准备工作:涉及的制作命令适用于Win7/Win2008 r2,不支持XP/20003下操作,其他系统下未测试是否能运行。
在C盘或D盘上先建个临时目录,例如Win08 R2(要求对应盘至少有15G剩余空间),本例是在C盘上建Win08目录。
将附件(Win08 R2usb3.zip)容解压至Win08R2目下(密码usb3usb3,请直接双击文件进行解压,不要保存到本地再解压,否则可能出错),类似下图所示:Win08usb3.zip下载USB3.0驱动:downloads.dell./FOLDER03327566M/1/Intel_C230_USB3.0_MDNM0_A00_1spark.zip下载后解压,并将解压后的文件复制到上图中的USB3目录里。
使用工具软件(例如UltraISO工具)将2008R2的ISO刻录到U盘上,具体可参考本文最后部分的“将2008 R2 ISO刻录到U盘的步骤”。
从刻录好2008R2 ISO的U盘中找到Sources目录,进入该目录后,将Boot.wim及Install.wim这两个文件复制到刚才建的临时目录Win08 R2里,类似下图效果。
具体操作步骤:以下是操作步骤的简化说明,若有一定了解则无需再去看之后的详细说明:1.双击1chkboot文件,获取最大索引号;2.执行在2bootX(X为步骤1中的最大索引号)文件上点右键,选择在管理员身份运行;3.双击运行3chkIns文件,获取所需安装版本(例如企业版/标准版等等)应对的索引号;4.找到程序4insX(X为步骤3中对应版本的索引号),在该程序上点右键,选择以管理员身份运行;5.将临时目录里集成好的Boot.wim 及 Install.wim文件覆盖到U盘Sources目录下。
嵌入式系统中常见的外设接口与控制方法
![嵌入式系统中常见的外设接口与控制方法](https://img.taocdn.com/s3/m/656df8ae846a561252d380eb6294dd88d0d23dc0.png)
嵌入式系统中常见的外设接口与控制方法嵌入式系统是一种特殊类型的计算机系统,它被设计用于特定的应用领域,通常需要与外部设备进行交互。
外设接口是嵌入式系统与外部设备之间的物理连接通道,而控制方法则是嵌入式系统用于管理和控制外设的软件和算法。
在嵌入式系统中,常见的外设接口包括串行接口、并行接口、USB接口、以太网接口和无线接口等。
每种接口都具有不同的特点和应用场景。
串行接口是一种通过一个bit传输数据的接口,它使用单个传输线路来传输数据。
串行接口具有低功耗、简单和成本低等特点,在嵌入式系统中被广泛应用。
常见的串行接口标准包括RS-232、RS-485和I2C等。
RS-232是一种常见的标准,用于在计算机和外设之间传输数据。
RS-485接口适用于在长距离传输数据,常用于工业自动化系统。
I2C接口是一种简单的串行接口,广泛用于连接各种外设,如传感器和存储器等。
并行接口是一种同时传输多个bit的接口,它使用多个传输线路来传输数据。
并行接口具有高带宽和高速度的优势,适用于要求高速数据传输的应用。
常见的并行接口标准包括PCI、PCIe和ISA等。
PCI接口用于连接计算机和外部设备,广泛应用于桌面电脑和服务器等系统。
PCIe接口是一种新一代的高速扩展总线接口,用于连接图形卡和其他高性能设备。
ISA接口是一种老式的并行接口,现已不常见。
USB接口是一种通用的串行总线接口,它是嵌入式系统中最常见的接口之一。
USB接口具有热插拔、高带宽和灵活性等优势,广泛应用于各类外设。
USB接口分为多个版本,包括USB 1.0、USB 2.0和USB 3.0等。
USB 1.0接口适用于低速和全速设备,如键盘和鼠标等。
USB 2.0接口提供高速传输速度,可以连接数码相机和移动存储设备等。
USB 3.0接口是当前最新的USB标准,具有更高的传输速度和功率输出能力。
以太网接口是一种用于连接计算机网络的接口,它使用以太网协议传输数据。
以太网接口广泛应用于嵌入式系统中的网络通信功能,如网络交换机和路由器等。
鼠标报告描述符
![鼠标报告描述符](https://img.taocdn.com/s3/m/e4b26d9f51e2524de518964bcf84b9d528ea2ca3.png)
鼠标报告描述符简介鼠标报告描述符是一种在嵌入式系统中使用的协议,用于描述鼠标的输入事件。
通过鼠标报告描述符,系统可以理解鼠标的特性和行为,从而正确地处理鼠标事件。
报告格式鼠标报告描述符的格式遵循USB HID(Human Interface Device)规范。
它定义了鼠标报告的结构和字段。
报告结构鼠标报告由一个或多个输入报告构成。
每个输入报告有固定长度,通常为8个字节。
一个完整的鼠标报告由多个输入报告组成,每个输入报告表示一个鼠标事件。
报告字段鼠标报告包含了一系列字段,用于描述鼠标事件的细节。
以下是常见的鼠标报告字段:•Button:表示鼠标按键的状态。
通常有三个按键:左键、右键和中键。
•X轴和Y轴位移:表示鼠标在水平和垂直方向上的移动距离。
可以通过这两个字段计算鼠标的位置。
•水平滚动和垂直滚动:表示鼠标滚轮的状态。
这两个字段用于检测鼠标滚轮的滚动方向和速度。
除了上述字段,鼠标报告还可以包含其他一些特定的字段,用于描述鼠标的特性和行为。
例如,一些高级鼠标可以支持多点触控,报告中会包含额外的字段来描述触摸点的数量和位置。
配置鼠标报告描述符鼠标报告描述符可以通过配置寄存器来设置。
配置鼠标报告描述符的过程如下:1.将鼠标连接到目标系统的USB接口。
2.通过USB主机控制器发送GET_DESCRIPTOR请求,请求获取鼠标报告描述符。
B主机控制器接收到鼠标报告描述符后,将其存储在内存中。
4.目标系统读取鼠标报告描述符,并解析其中的字段和值。
5.根据需要,目标系统可以修改鼠标报告描述符的字段和值。
6.修改后的鼠标报告描述符通过SET_DESCRIPTOR请求发送给USB主机控制器。
B主机控制器接收到修改后的鼠标报告描述符后,将其写入鼠标设备中。
8.鼠标设备收到修改后的鼠标报告描述符后,根据其中的配置进行工作。
使用鼠标报告描述符使用鼠标报告描述符的过程如下:1.目标系统接收到鼠标的输入报告。
2.目标系统解析输入报告中的字段和值,获取鼠标的动作信息。
usb键盘鼠标协议
![usb键盘鼠标协议](https://img.taocdn.com/s3/m/fbc04a2c52d380eb62946ded.png)
竭诚为您提供优质文档/双击可除usb键盘鼠标协议篇一:usb鼠标键盘报告描述符介绍在usb中,usbhost是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。
usb报告描述符(Reportdescriptor)是hid设备中的一个描述符,它是比较复杂的一个描述符。
usbhid设备是通过报告来给传送数据的,报告有输入报告和输出报告。
输入报告是usb设备发送给主机的,例如usb鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等;输出报告是主机发送给usb设备的,例如键盘上的数字键盘锁定灯和大写字母锁定灯等。
报告是一个数据包,里面包含的是所要传送的数据。
输入报告是通过中断输入端点输入的,而输出报告有点区别,当没有中断输出端点时,可以通过控制输出端点0发送,当有中断输出端点时,通过中断输出端点发出。
而报告描述符,是描述一个报告以及报告里面的数据是用来干什么用的。
通过它,usbhost可以分析出报告里面的数据所表示的意思。
它通过控制输入端点0返回,主(usb键盘鼠标协议)机使用获取报告描述符命令来获取报告描述符,注重这个哀求是发送到接口的,而不是到设备。
一个报告描述符可以描述多个报告,不同的报告通过报告id来识别,报告id在报告最前面,即第一个字节。
当报告描述符中没有规定报告id时,报告中就没有id字段,开始就是数据。
更详细的说明请参看usbhid 协议,该协议可从下载。
usb报告描述符可以通过使用hiddescriptortool来生成,这个工具可以到下载,为了方便大家,我顺便上传了一份。
/upload/blog/20xx/4/2/af7c3443-ad61-4465-adc7-a74d2 8bbc322.zipuploadfile-/20xx-4/42672233.zip下面通过由hiddescriptortool生成的usb鼠标和usb键盘来说明一下报告描述符和报告。
嵌入式机舱监控系统鼠标驱动程序的设计
![嵌入式机舱监控系统鼠标驱动程序的设计](https://img.taocdn.com/s3/m/4e24bc6758fafab069dc0246.png)
v d oi M
—
D a us r od rwC ro( i) v
{
jtiofe; n , f t j s ,
un i e i c sgn d nt urv ue al ;
_
《 工业控制计算机} 0 2年第 2 21 5卷第 3期
程 序 。在 嵌 入 式 机 舱 监 控 系统 设 计 时 , 由于 实 时性 的要 求 , 统 系 采用 D OS操作 系统 ,工 作 在 2 6色 8 0 6 0图形 模 式 ,采 用 5 0x0 IT 3 H 鼠标 器 功 能调 用 , N 3 鼠标 不 能 正 确 地 显示 和定 位 。 因是 原 鼠 标 驱 动 程 序 仅 支 持 八 种 低 分 辨 率 的显 示 模 式 ”, 支 持 高 分 ]不 辨 率 图形 模 式 ( 8 0 6 0的 2 6色 图形 模 式 ) 但 在高 分 辨 率 如 0x0 5 。
5 2
嵌 人 式 机 舱 监 控 系统 鼠标 驱 动 程 序 的 设 计
嵌入式机舱监控系统鼠标驱动程序的设计
Mo s ie r gr m f E u e Dr P O a v o mb d e Ma ie E g n o m Mo i r g S se e d d r n ie R o n nt i y t m o n
_ 『功能 呼 功能 随剜
A = XO
A = Xl
A : X2
复化 鼠标 ,返叫 鼠标器 安 标 志
显示 光标
隐减 光标
A = X3 A : X4 A = X7 A = X8
取 鼠 、 置和按钮 状态 位 设 鼠标 器光标位 设置 水 甲 的蜮 小 I 最大 值
usb免驱原理
![usb免驱原理](https://img.taocdn.com/s3/m/1069b7041fd9ad51f01dc281e53a580216fc5090.png)
usb免驱原理小伙伴们!今天咱们来唠唠USB免驱这个超酷的事儿。
你想啊,平常咱们把个USB设备,像U盘啦、鼠标啦、键盘啥的,往电脑上一插,“嗖”的一下就能用,都不用装啥驱动程序,多方便呀。
这背后的原理可有点小复杂,但也超级有趣呢。
咱先说说USB设备本身的构造。
USB设备呀,就像是个带着小秘密的小盒子。
它里面有个叫固件的东西,这个固件就像是设备的小脑袋,它知道自己是干啥的,也知道怎么跟电脑沟通。
比如说一个简单的鼠标,它的固件就知道怎么把自己的移动、按键这些信息按照USB的规则整理好。
那电脑这边呢?电脑的USB接口可不是个傻愣愣的洞洞哦。
电脑的操作系统里呀,有一些通用的USB协议的支持程序。
这些程序就像是一群小助手,它们能识别出USB设备的一些基本类型。
就好比它们认识一些“大众脸”,像鼠标和键盘这种超级常见的设备,它们一看就知道,“哟,这是个鼠标呀,那我就按照鼠标的方式来跟你打交道。
”这就是为啥你插个鼠标进去,电脑马上就能用,根本不用你操心找驱动。
再说说USB设备的分类。
有些设备是那种特别标准的,就像刚刚说的鼠标键盘这种,它们遵循着非常严格的USB标准规范。
这种标准规范就像是全世界都统一的密码一样,电脑和设备都知道这个密码,所以一见面就对上号了。
而且呀,电脑的操作系统在设计的时候,就已经把这些常见设备的使用方式都预想到了。
比如说鼠标,操作系统知道鼠标要传来移动的坐标和按键的信息,它早就准备好了接收这些信息的“小口袋”。
不过呢,不是所有的USB免驱设备都是这么简单的情况。
还有些设备,虽然也是免驱,但它们可能是因为使用了一些通用的芯片。
这些芯片制造商很聪明,他们把芯片设计得能够被电脑很容易识别。
比如说有些摄像头芯片,很多摄像头都用这种芯片,电脑看到这个芯片的标识,就知道“哦,这是那种摄像头呀,我知道怎么让它工作。
”还有个很重要的点呢,就是USB设备的描述符。
这个描述符就像是设备的自我介绍。
当你把USB设备插到电脑上,设备就会把自己的描述符发给电脑。
嵌入式Linux的USB驱动设计
![嵌入式Linux的USB驱动设计](https://img.taocdn.com/s3/m/18755d19f18583d04964594f.png)
Ke r s: B  ̄n x d vc rv r r g a y wo d US ; u ; e ie d e o r m;e e d d s se i p mb d e y tm
随 着 计 算 机 外 围 硬 件 的 扩 展 , 各 种 外 围 设 备 使 用 不 同 的 总 线 接 口 , 致 计 算 机 外 部 各 种 总线 繁 多 , 理 困 难 , S 导 管 UB 总 线 可 以解 决这 些 问 题 。 此 而 诞 生 。U B总 线 提 供 统 一 的 因 S
意 修 改 其 源 代码 。 是 其 他 的操 作 系统 做不 到 的 。 正 是 由 于 这
这 一 点 。iu 得 到 了 广 泛 的 应 用 。 Ln x
1 iu L n x中 US B设备驱动程序框 架及数据结构
1 U B 的体 系 结构 . 1 S
U B接 口标准 支持 外部设 备 和主 机之 间进行 数据 传送 。在 S
b l i sz; u k n ie
_ _
/ 据 接 收 缓 冲 区 大 小 / 数
u 8 u 8
b l i e d onAd r , 端 点 地 址 u k n n p it d; , 入 b l u n p i t d ; / 2 端 点 地 址 u k o t e d o nAd r /
第l 9卷 第 1 期 1
Vo .9 11
No 1 .l
ቤተ መጻሕፍቲ ባይዱ
电子设计 工程
E e t n c D sg g lcr i e in En o
2 1 年 6月 01
J n 2 1 u.01
嵌 入 式 L n x的 US 驱 动 设 计 iu B
基于STM32的USB简易鼠标
![基于STM32的USB简易鼠标](https://img.taocdn.com/s3/m/c6924a1ee87101f69e3195f4.png)
毕业设计 [论文]题目:基于STM32的USB简易鼠标设计学院:电气与信息工程学院专业:电子信息工程姓名:XXX学号:XXXXXX指导老师:XXX完成时间:2015年06月01日摘要随着设备的越来越智能化,嵌入式计算机大量应用到各种电子设备中,基于嵌入式系统的USB鼠标及键盘的应用也变得越来越广泛。
在本次设计中,研究的是一款基于STM32的USB鼠标,即插即用,免驱动自动识别,很好的解决了鼠标设备智能化和低延迟的设计要求。
由于是基于HID的USB设备,所以编程非常方便,贴近工程实践,应用前景广阔。
嵌入式系统HID,即人机接口设备,是Human Interface Device的缩写。
HID 是计算机周边设备中非常常见的设备类型,是可以直接与进行人交互的USB设备,例如鼠标、摄像头、U盘等。
在种类繁多USB设备中,HID类设备的成本一般情况下是比较低的。
实际上,只要是符合HID标准的设备都是HID设备,不一定非要具有人机交互功能。
最早支持HID设备的计算机操作系统是Windows98系统。
HID 设备的驱动程序内置在这些系统中,不需要单独开发与安装驱动,应用程序可以直接使用这些驱动程序来与设备通信。
近年来,受计算机性能提升和游戏软件等的影响,人们对鼠标的要求越来越高,特别是一些即时作战游戏,人们希望能达到“零”延迟,这就对原来的鼠标技术提出了挑战。
老式的圆孔鼠标早已不再适用,特别是笔记本电脑根本不再设计老式插孔。
随着USB2.0以及USB3.0的不断完善,再加上高速而价廉的单片机,一款基于STM32的USB简易鼠标正是本课题的研究内容。
本文主要研究基于STM32的USB简易鼠标系统的功能、设计思想和实现,以及基于STM32的USB简易鼠标的组成及工作原理,描述了研究该课题的意义和应用价值。
本设计的重点在于USB 协议的HID部分,精通此协议并植入单片机才能实现计算机与鼠标的沟通。
关键词: USB 技术; HID 协议; STM32单片机;鼠标AbstractAs more and more intelligent devices, embedded computers applied to the large variety of electronic devices, embedded systems USB mouse and keyboard applications are becoming more and more widespread.In this design, the study is a based on the STM32 USB mouse, plug and play, driver-free automatic identification, a good solution to the mouse device intelligence and low-latency design requirements.Because it is based on HID USB device, so the programming is very convenient, close to the engineering practice, the application prospects.Embedded systems HID, namely human interface devices, is an abbreviation for Human Interface Device. HID is a computer peripheral device in a very common device types, people can interact directly with the conduct of USB devices, such as a mouse,camera, U disk and so on.In a wide range of USB devices, under HID class devices generally cost is relatively low.In fact, as long as a HID-compliant devices are HID device does not necessarily have to have interactive features.The earliest HID devices supported computer operating system is Windows98 system.HID device drivers built into these systems, the need for separate development and install the driver, an application can use these drivers to communicate with the device.In recent years, the impact of computer and game software performance by, people have become increasingly demanding of the mouse, especially some instant combat game, people want to be able to achieve "zero" delay, which the original mouse technology presents a challenge .Old-fashioned mouse the hole is no longer applicable, especially notebook computers designed simply no longer the old jack.With the continuous improvement USB2.0 and USB3.0, coupled with high speed and low cost microcontroller, a research based on the STM32 USB simple mouse precisely this topic. This article is mainly based on the STM32 USB simple mouse systems design and implementation, as well as easy on the STM32 USB mouse and work principle, it describes the subject of research and practical value.The design focuses on some USB HID protocol, proficient in this agreement and in order to achieve single-chip implanted communication computer mouse.Keywords: USB technology; HID protocol; STM32 microcontroller; mouse目录摘要 (I)Abstract ............................................................ I I 目录 ............................................................... I II 第1章引言 . (1)1.1 课题背景 (1)1.2 基于STM32的USB鼠标的设计研究方法及目标 (1)1.3 USB鼠标国内外研究现状 (2)第2章 USB协议概述 (3)2.1 USB简介 (3)2.2 USB的拓扑结构 (3)2.3 USB的电气特性 (4)2.4 USB描述符 (4)2.5 USB的包结构 (5)2.5.1令牌包 (5)2.5.2数据包 (6)2.5.3握手包 (6)2.5.4特殊包 (6)2.6 USB的传输类型 (7)第3章 STM32及MDK简介 (8)3.1 STM32简介 (8)3.2 MDK的使用 (8)第4章 USB鼠标的实现 (10)4.1 USB简易鼠标的程序编写 (10)4.2 USB鼠标的运行 (12)4.3 硬件实现 (12)设计总结 (14)参考文献 (15)致谢 (16)附录 (17)第1章引言1.1 课题背景USB 接口是串行总线通信端口,支持即插即用,在计算机领域应用非常广泛。
LinuxUSBgadget设备驱动解析
![LinuxUSBgadget设备驱动解析](https://img.taocdn.com/s3/m/69a1d675dd88d0d232d46a29.png)
Linux USB gadget设备驱动解析(1)“功效体验”利用Linux USB gadget设备驱动可以实现一些比力有意思的功效,举两个例子:1、一个嵌入式产物中的某个存储设备,或是一个存储设备的某个分区,可以作为一个U盘被PC设别,从而非常方便的完成文件交互,这个功效被遍及的应用于手机、数码相机等产物中。
2、一个嵌入式设备通过USB连接到你的PC后,在你的PC端会出现一个新的网络连接,在嵌入式设备上也会有一个网卡设备,你可以配置它们的IP地点,并进行网络通讯,俗称USBNET。
所有USB通讯的设备端都有usb device步伐,通常称它们为usb固件。
在一些功效简朴的设备里,用一些专用的可编程USB控制器就可以了。
而在一些运行了类似linux操纵系统的庞大的嵌入式系统中,要完成usb device步伐,就会要求你不但熟悉usb device控制器的操纵,还要熟悉操纵系统的驱动架构。
我想通过“功效体验”、“驱动调试”、“gadget驱动结构阐发”、“编写一个自己的gadget驱动”这4个方面解析linux usb gadget设备驱动的编写要领。
一、linux模拟U盘功效的实现在硬件情况为华清远见的fs2410平台,软件情况为linux-2.6.26的linux系统上,实现模拟U盘的功效。
向内核添加代码#include <asm/arch/regs-gpio.h>#include <asm/arch/regs-clock.h>#include <asm/plat-s3c24xx/udc.h>修改arch/arm/mach-s3c2410/mach-smdk2410.c/*USB device上拉电阻处置惩罚*/static void smdk2410_udc_pullup(enum s3c2410_udc_cmd_e cmd){u8 *s3c2410_pullup_info[] = {" ","Pull-up enable","Pull-up disable","UDC reset, in case of"};printk("smdk2410_udc: %s\\n",s3c2410_pullup_info[cmd]);s3c2410_gpio_cfgpin(S3C2410_GPG9, S3C2410_GPG9_OUTP);switch (cmd){case S3C2410_UDC_P_ENABLE :s3c2410_gpio_setpin(S3C2410_GPG9, 1); //set gpg9 output HIGHbreak;case S3C2410_UDC_P_DISABLE :s3c2410_gpio_setpin(S3C2410_GPG9, 0); //set gpg9 output LOWbreak;case S3C2410_UDC_P_RESET ://FIXME!!!break;default:break;}}static struct s3c2410_udc_mach_info smdk2410_udc_cfg __initdata = {.udc_command = smdk2410_udc_pullup,};static struct platform_device *smdk2410_devices[] __initdata = {…,&s3c_device_usbgadget, /*USB gadget device设备登记*/};static void __init sdmk2410_init(void){u32 upll_value;set_s3c2410fb_info(&smdk2410_lcdcfg);s3c24xx_udc_set_platdata(&smdk2410_udc_cfg); /* 初始化*/s3c_device_sdi.dev.platform_data = &smdk2410_mmc_cfg;/* Turn off suspend on both USB ports, and switch the* selectable USB port to USB device mode. */s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |S3C2410_MISCCR_USBSUSPND0 |S3C2410_MISCCR_USBSUSPND1, 0x0);/* 设置USB时钟*/upll_value = (0x78 << S3C2410_PLLCON_MDIVSHIFT)| (0x02 << S3C2410_PLLCON_PDIVSHIFT)| (0x03 << S3C2410_PLLCON_SDIVSHIFT);while (upll_value != readl(S3C2410_UPLLCON)) {writel(upll_value, S3C2410_UPLLCON);udelay(20);}}修改drivers/usb/gadget/static void start_transfer(struct fsg_dev *fsg, struct usb_ep *ep,struct usb_request *req, int *pbusy,enum fsg_buffer_state *state){int rc;udelay(800);……}配置内核支持U盘模拟<*> USB Gadget Support --->USB Peripheral Controller (S3C2410 USB Device Controller) --->S3C2410 USB Device Controller[*] S3C2410 udc debug messages<M> USB Gadget Drivers<M> Storage Gadget3、编译内核#make zImage#make modules在目录drivers/usb/gadget下生成g_加载驱动,测试功效利用前面的生成的内核,启动系统后,加载g_#insmod g_# insmod g_ stall=0 removable=10.03 USB: usb_gadget_register_driver() \'g_\'0.04 USB: binding gadget driver \'g_\'0.05 USB: s3c2410_set_selfpowered()g_ gadget: Storage Gadget, version: 20 October 2004g_ gadget: Number of LUNs=1g_ gadget-lun0: ro=0, file: /dev/mtdblock30.06 USB: udc_enable calledsmdk2410_udc: Pull-up enable连接设备到windows,windows系统会自动设备到一个新的U盘参加。
USB2.0驱动在UP—NETARM2410-S嵌入式实验平台移植与分析
![USB2.0驱动在UP—NETARM2410-S嵌入式实验平台移植与分析](https://img.taocdn.com/s3/m/0a722fbd65ce050876321310.png)
K y r s: U B; I t r a e U - E A ̄ 2 1 . e wo d S n e f c : P N T J 4 0 S:P r i g M - ot n
引 言
UB设备可以有 单独的驱动程序 , S 也可 以使用系统 提供
这几年, 随着 大量 支持 UB S 个人 电脑的普 及,S 逐步 UB
等 :S D (om n c to e ie l s , 信 设备 类 U B C C Cm u ia i n D v c s C a s 通 别) 比如 UB口的 m dm或其它类似设备 , S oe
2 U B . 动 移 植过 程 S 20驱
新推 出的 P c机几乎 1 0 支持 UB 而在外设 (e ie 端 , 0% S; dv c ) 使 用 UB接 口的设备也与 日俱增, S 例如数码相机 、 扫描 仪、 游戏 杆、 磁带和软驱、 图像设 备、 印机、 打 键盘 、 鼠标 等等 。伴随着
c ti a on. T S ap de ri es hi p er sc b th U 2. dr ve n e SB 0 i o th U -N A 241 -S mb d p at r fo t por in pr - e P ET RM O e ed ed l fo m r he t g o
下 面 详 细 介 绍 如 何 将 UB . S 2 0驱 动 移 植 到 u _ E P N—
T R 2 1- 嵌入式实验平 台。在移植前 , A M 4 S O 首先要建立移植环
UB . 驱动在嵌入式 Lnx S20 iu 中的移植过程。
1 US 2பைடு நூலகம்介 绍 B.
境:
硬 件 :P N T R 2 1- 、S 16 / 1 U- E A M 4 0 S IP 10 0 ;
vxworks usb 驱动精辟演示(有图)
![vxworks usb 驱动精辟演示(有图)](https://img.taocdn.com/s3/m/b208b2e2998fcc22bcd10d37.png)
VxWorks下USB 1.1协议栈与驱动学习笔记(一)协议栈剥离与驱动调试tearing @ /bbs 很多朋友可能还不清楚USB设备客户端驱动以及USB协议栈的相关调试方法。
先借用风河USB文档的图片来看下USB1.1协议栈的层次结构吧。
(栈,多么美好的一个字-。
-)USB HC层:为栈最底层的硬件-USB主控制器(USB Host Controller),实现USB主机功能。
目前,USB控制器主要有3类:¾UHCI,Universal Host Controller Interface通用的主控制器,由Intel最先设计并制定相应规范;¾OHCI,Open Host Controller Interface开放的主控制器,由Microsoft,Compaq和National Semicondtlctor最先设计并制定相应规范;¾EHCI,Enhanced Host Controller Interface增强的主控制器,该控制器支持USB2.0.。
且它是一种为联合设备companion type。
简单来说内部包含了UHCI。
如果有2.0设备接入,则EHCI工作,如果1.1设备接入,则UHCI工作。
例如我的本本里的USB控制器如图所示:电脑常见USB控制器HCD层:每一主控制器在其上都有相对应的主控制器驱动程序(HCD),这些设备驱动程序与底层的硬件相关,为上层提供统一的功能接口。
相应的驱动分别在usbHcdOhciLib.c 和usbHcdUhciLib.c中定义。
USBD层:USB主机驱动(USB Host Driver)与底层硬件无关,通过HCD与底层控制器通信。
USBD管理连接到主机上的每一个USB连接,并提供高层与USB设备通信的通道。
除此之外,USBD还自动对USB设备进行电源管理和分配带宽。
USB CM:在协议栈的最顶层是USB设备驱动程序Client Module。
usb键盘鼠标控制器介绍
![usb键盘鼠标控制器介绍](https://img.taocdn.com/s3/m/e2cc225b312b3169a451a41b.png)
USB键盘鼠标模拟器简介
用一句话来阐述,就是一个可以2次开发的USB键盘鼠标,硬件如图:
控制命令从左侧的串口进入,经过转化变成标准的USB键盘鼠标操作从右侧输出,USB插入电脑就是标准的键盘鼠标设备,不需要驱动程序(有客户插入linux下也不需要驱动,因为linux下的版本问题,需要客户自行测试)。
应用领域:软件测试部门,工业自动化控制,输入辅助等等……
应用举例1:一台电脑控制另外一台电脑的键盘鼠标动作
应用举例2:一台电脑控制自己的键盘鼠标动作
应用举例3:一台电脑通过多串口卡控制多台电脑的键盘鼠标动作
一台电脑通过太网转串口模块(或串口服务器)控制一台(或多台)电脑键盘鼠标动作
应用举例5:
一台电脑(或手机)通过WIFI转串口模块(或Wifi串口服务器)控制一台(或多台)电脑键盘鼠标动作
一台电脑(或手机)通过蓝牙串口适配器控制一台(或多台)电脑键盘鼠标动作
应用举例7:
一台手持终端通过串口控制一台电脑键盘鼠标动作
(或测试设备回放数据到用户电脑,实现自动输入数据)
一台电脑通过串口控制嵌入式系统的键盘鼠标动作,进行测试调试
应用举例9:
一台电脑通过网络串口软件控制网络中采用应用举例2的一台(或多台)电脑的键盘鼠标动作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USB鼠标嵌入式驱动系统朱娟光华长春大学吉林省E-mail:zhuj_guanghua@ 王帅中国科学院长春光学精密机械与物理研究所吉林长春张舒阳王津立李赵希长春大学光华学院吉林长春摘要:该论文设计了一种USB鼠标基于AT89S52单片机的嵌入式驱动系统。
这AT89S52控制USB的主控芯片,SL811HS实现控制USB鼠标的功能。
硬件给出该系统的原理框图。
软件介绍系统的实现原理和USB总线重新插入行动的装置检测、设备速度检测等。
嵌入式USB驱动系统有重要的参考价值,USB主机系统的设计。
关键词——USB数目;SL811HS;AT89S52单片机I.简介USB设备因其便捷和高性价比特点,被广泛用于日常工作和生活中。
例如,USB 磁盘,USB相机,USB鼠标,USB键盘,等等。
单片机(SCM)有成熟的技术和高性价比,被广泛用于自动化领域中。
但是单片机没有USB主机接口配置,从而导致直接控制USB外围设备有困难。
如果我们在单片机系统中增加USB主机接口、通过接口控制USB从动装置设备,单片机系统的功能将大大扩展。
该系统为单片机加上USB主机接口。
使用常见的51单片机连接特殊解决USB接口芯片。
这个解决方案具有良好的灵活性和简单的移植。
它为低成本产品的开发提供了一个广阔的前景。
系统选用Atmel公司的AT89S52单片机。
USB的主控制芯片是芯片赛浦路斯的公司的SL811HS。
SL811HS可以在任何一个主机或从动模型使用,它支持USB1.1的全速和低速数据传输。
当在主机模式下工作时,就可以自动检测到嵌入SL811HS的行为。
本论文介绍方法AT89S52控制SL811HS以完成USB控制的方法。
例如,USB鼠标控制计划的情况。
II.系统硬件系统的硬件如图一所示。
AT89S52和SL811HS的电压分别为5V和3.3V。
虽然电压不同,AT89S52和SL811HS的参数可以根据噪音容忍参数直接连接。
图1、总系统图无需转换电压,当设计硬件时,需注意一下方面:1、SL811HS的D引脚上拉电阻连接线与AT89S52单片机的P0引脚连接,应确保AT89S52对于SL811HS的读/写(R/W)控制。
2、用33欧的电阻在一个15K的下拉电阻在连接线上,连接AT89S52和SL811HS 的数据参数。
3、在这里,SL811HS用于主机模式下,所以控制存储器的参数必须设置为0。
米每秒的必须设置为0。
4、晶体频率应为48赫兹III.控制程序A.SL811HS的读写控制SL811HS的读写控制项目如下所示图2、寻读功能图图3、写函数在图2和图3中,根据SL811HS 的读写时序,EZUSB 延时(1)代表延时一毫秒。
B.初始化当单片机控制SL811HS,首先,它会进行一些列初始化操作。
初始化操作由SL811HS 芯片重置、USB 总线复位、插入检测装置、USB 数据传送速度检测装置等等组成。
通过这些初始化操作,SL811HS 将建立一个基础的保护USB 接口作为从属装置的连接关系,这为接下来的数据传输做准备。
重设是芯片状态的重设操作,包括了芯片内部存储器测试值的重设。
该操作不需要读写内部寄存器,只需要输入一个效果产生脉冲到内部芯片。
USB 总线复位是指让USB 数据可以输出到SE0状态,该状态保持超过10毫秒。
当从属装置连接到USB 总线接受的重置信号,将为接下来的数据传输做准备。
CtrlReg 的寄存器比特设置为3和4,并保持10毫秒以上,然后恢复至00.然后,内部芯片产生USB 总线复位信号。
在USB 协议的物理层,USB 设备是连接到USB 总线而不是检测总线电压。
单片机也可以从电压处得到速度支持。
在物理层电压处检测结果反映在SL811HS的状态寄存器数值上。
单片机通过读出这些状态寄存器数值获得嵌入状态和装置速度。
B设备列举主中心不断检测DATA+DATA-引脚中断两个信号线分别由15K电阻连接到地线。
每个USB设备通过1.5K电阻连接在电源的D+引脚。
当主机的尾端连接在一个USB装置上,USB装置的电阻将会使电压升高。
所以主机中心意识到有USB装置嵌入。
主机检测到一个新的USB装置,它会进行USB计算操作。
Enumeration是一些USB设备连接到系统时从主机获得一个特殊的地址码所进行的操作。
这地址码用于访问个别装置。
当USB主机控制要查究某个装置属于哪类型的装置,它会绑定到项目的驱动装置上。
在列举过程中,主机将发送一些基本命令给从属装置。
设置地址,该命令会改变当前的设备地址。
获取设备描述符号,该命令会获取该装置的信息,包括制造商、固件版本等等。
•设置地址,该命令会改变当前的设备地址。
•获取设备描述符号,该命令会获取该装置的信息,包括制造商、固件版本等等。
•获取配置描述符,将会恢复使用该端口。
•获取内部描述符,将会通过该装置的内部接口。
•获取字符串描述符,将得到制造商、产品名称的统一格式符号。
•设置配置•设置内部和一个USB装置连接到主机,上述的基本过程都是必须的,如果USB装置没有列举,这个设置将不能被操作系统使用。
D、传输的实现传输由发送每个指令和以下数据传输而实现。
根据USB1.1协议,传输事件通常由三个数据包组成。
他们分别是指令包,数据包和数据包助手。
指令包负责传输的类型,传输数据的长度和数据存储空间地址等等。
指令包由USB主机和从属装置发出,USB从属装置会发出和USB主机指令一致的传输数据。
如果传输成功,主机会发送握手信号给USB从属装置。
所有类型的USB传输操作都通过SL811HS内部存储器的读写而实现。
例如,获取装置描述符号的指令应包括5个存储器的读写。
分别是EP0状态,EP0计算,EP0地址,EP0Xferlen和EP0控制。
获取装置描述符号的指令如下所示:表1、获取设备运行命令符号每个寄存器设计如下:EP0Status =0xD0;//十六进制的D 赋予PID_SETUP,0端口等于0.EP0Counter =0x00;//USB 地址是十六进制的0.EP0Address =0x10;//数据的起始地址是十六进制的10也称为date0.EP0XferLen =0x08;//8段数据长度。
EP0Control =0x07;//数据传送的方向是主动机到从动机.设置了上述5个寄存器后,前面储存的数据“8006000100001200”将会用data00x10写成8位进制,建立过程完成。
阅读EP0S 状态寄存器的数据,当牵手完成,SL811HS 以0x10为开始地址。
储存设备描述符号。
单片机用SL811HS 读取数据,从而获得完整数据。
IV.鼠标的指令如果USB鼠标和主机连接在一起,主机会发送以下指令。
用一个鼠标联合在我们的系统中为例。
A.获取设备描述符输入指令“8006000100001200”,然后系统会获得USB的描述信息。
数据是“120100020000000822340007058103049D 9F”,另一个数据是08,用十八进制。
这对接下来的指令有用。
B.设置地址输入指令“0005010000000000,系统接下来会建立一个地址为01,代表USB中心。
C.再次获得描述符号这个地址对接下来的指令有帮助。
用新地址“01”再次获得USB鼠标的描述符,描述数据从第一次到第九次,会有小的变化。
使用的鼠标给出的数据是“12010002000000086D 040E C0101101020001”。
D.获得设备配置输入指令“800600020000FF 00”,It is “09(长度是9),02(是设备请求求求评估索引长度8006000100001200配置描述符号)2200010100A03109(长度是9)04(04是接触面描述符)00(00是接触面数字)0001(端点数量)03(人工接口设备(HID))0102(协议代码)00 09(9长度是9)21(人工接口设备描述符)1001000122340007(长度是7)05(端点描述符)81(10000001:终端数字是001)03(中断传输)04(传送数据的最大值) 000A(时间间隔是10毫秒)”。
E.设置配置输入指令0009010000000000,设置配置01。
F.获取界面输入指令810A010*********,系统获取界面值00。
G.设置界面输入指令810A010*********,设置界面。
这些操作后,USB鼠标设置完成,可以进行一般使用。
如果进行一些操作,单片机会接收到对应的数据。
下列数据时这个鼠标操作数据的一部分,每个数字都是一组鼠标的操作。
TABLE II.鼠标工作的数据章节数据功效0100000000000000按击左部按钮0200000000000000按击右部按钮0400000000000000按击中间按钮00010000向右边方向移动00FF0000向左边方向移动0000FF00向前移动00000100向后移动00010100向右后方向移动0001FE00向右后方向移动00FE0100向左后方向移动00FF FE00向左后方向移动总结当单片机控制SL811HS,寄存器对于SL811HS的读写是最低的工作。
为确保数据传输,单片机会读写五个寄存器。
USB列举是使用这个USB设备的第一步,接下来单片机系统可以喝USB设备进行沟通。
感谢书我衷心感谢在完成本次论文期间所有给予我帮助的人,包括长春机械印刷有限公司。
本文作者衷心感谢吉林教育研究部对于本次研究的资金支持。
参考文献[1]赛赛普拉斯半导体公司,SL811HS嵌入式USB主机/从机控制器,数据表。
[2]周立功PDIUSB12USB《软件程序运用和驱动发展》北京航空航天大学出版社2003(中文版)[3]陈志荣李斌51《单片机控制》《USB主机根本设备》《电子设计运用》2003(中文版)[4]钱浩《USB设备列举过程和代码设计》《电脑知识和技术》2010(中文版)[5]/developers/wusb/docs[6]/view/dc3e56d376a20029bd642dc5.html译文原文出处:重庆大学数字图书馆IEEE/IET Electronic Library(网址。