当前位置:首页 > 单片机 > 单片机
[导读]由于信息网络化的发展,经常需要将各种设备与主机相连,传统的外设与主机的通讯接口一般是基于PCI总线、ISA总线或者是RS-232C串行总线。 PCI总线虽具有高的传输速度(132Mbps),支持"即插即用"功能,但其缺点是插拔麻

由于信息网络化的发展,经常需要将各种设备与主机相连,传统的外设与主机的通讯接口一般是基于PCI总线、ISA总线或者是RS-232C串行总线。 PCI总线虽具有高的传输速度(132Mbps),支持"即插即用"功能,但其缺点是插拔麻烦,且扩展槽有限(一般为5~6个)。ISA总线显然存在着同样的问题。RS-232C串行总线虽然连接简单,但其缺点是传输速度慢(56kbps). 而通用串行总线(Universal Serial Bus,简称USB)的出现能很好地解决以上这些冲突。我们利用新型高性能单片机Aduc831设计了基于USB总线数据采集系统

1. USB简介

1.1 USB特点

USB的英文全称为Universal Serial Bus,它是一种快速、双向、同步传输的廉价的并可以进行热拔插的串行接口。它的特点主要有:

1)速度快。USB有高速和低速两种方式,主模式为高速模式,速率为12Mbps,另外为了适应一些不需要很大吞吐量和很高实时性的设备,如鼠标等,USB还提供低速方式,速率为1.5Mb/s。

2) 设备安装和配置容易。安装USB设备不必再打开机箱,加减已安装过的设备完全不用关闭计算机。所有USB设备均支持热插拔,且易于扩展。

3) 使用灵活。USB共有4种传输模式:控制传输(control)、同步传输(Synchronization)、中断传输(interrupt)、批量传输(bulk),以适应不同设备的需要。

1.2 USB总线协议

USB总线属一种轮讯方式的总线,主机控制端口初始化所有的数据传输。

每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的 USB数据传输,在主机和设备的端口之间,可视为一个通道。存在两种类型的通道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且通道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。多数通道在USB设备设置完成后即存在。USB中有一个特殊的通道——缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。

2. 硬件设计

2.1  Aduc831简介

ADuC831 是一个完全综合的247 k采样保持数据采集系统,在同一片中 结合了高性能的自校准12位 ADC 多路通道,双12位 DAC通道和可编程8位 MCU。微处理器核心是 8052,提供片内 62 kB 非易失性闪速/电擦除程序存储器。还提供片内 4 kB 非易失性闪速/电擦除数据存储器、256 b RAM 和2 kB 扩展 RAM。

ADuC831 还提供额外的电源监视器, 和一个高精度参考源。片内数字外围设备包括2个16位Σ-Δ DAC, 双输出16位 PWM,看门狗定时器, 定时间隔计数器,3个定时器/计数器, 定时器 3用于波特率产生核 串行接口 I/O (I2C, SPI 和UART) 。

并且片内提供串行下载和调试模式 (通过 UART), 并且通过EA引脚提供单引脚竞争模式。ADuC831 支持 QuickStart™ 和 QuickStart Plus 升级系统和低成本的软件和硬件工具。

2.2  USBN9603简介

USBN9603是一个集成的USB端点控制器,具有增强的DMA功能。USBN9603集成了一个带有3.3V的调节器的收发器,1个SIE(串行接口引擎),1个8 b并行接口,1个时钟发生器和1个MICROWIRE/PLUS接口。USBN9603可以进行7个端点的数据传输,除了1个端点必须为控制传输端点以外,其他的6个端点可以被配置成中断传输端点、批量传输端点或者等时传输端点;每一个端点都有一个专门的FIFO,控制端点的FIFO长度为8B,其他的为64B。8 b并行接口可以支持多路复用或者非多路复用2种与CPU的接口方式。USBN9603的突出特点为:低EMI(电磁干扰),低等待电流,24M晶振,增强的DMA功能;可使用5V或3.3V电源;总线操作具有异步唤醒的全速静态HALT模式;改进的3.3V电压输入的电压调节器,所有非双向端点都有64B 的FIFO;外部控制器接口简单,编程方便。

2.3 原理图设计

USB数据采集系统硬件模块主要由Aduc831芯片、USB接口芯片USBN9603组成。硬件结构简单,硬件总体结构框图如图1所示.

模拟输入信号A/D转换器,转换结果存储在FIFO存储器中;一旦FIFO存满,SIE立刻对数据进行处理,然后Aduc831系统将数据从FIFO存储器中读出,由收发器通过数据线(D+、D-)送至主机。

当USB控制器从USB总线检测到主机启动的某一传输请求后,通过中断方式将此请求通知Aduc831系统,Aduc831系统通过访问USB控制器的状态寄存器和数据寄存器获得与此次传输有关的各种参数,并根据具体的传输参数,对USB控制器的控制寄存器和数据寄存器进行相应的操作,以完成主机的传输请求。Aduc831与USBN9603接口电路如图2所示。

3. 系统软件设计                     

系统软件主要包括:控制程序和USB设备驱动程序。

3.1 控制程序

控制程序就是指在Aduc831中运行的程序,对USB控制器的操作是严格按照USB协议1.1进行的。在实际开发中使用了控制传输和块传输两种传输方式。控制传输主要用来完成主机 对设备的各种控制操作,也就是用来实现位于主机上的USB总线驱动程序  (USBD.SYS)以及编写的功能驱动程序对设备的各种控制操作。块传输主要用来完成主机和设备间的大批量数据传输以及对传输数据进行错误检测(若发生错误,它支持“重传”功能)。

控制程序主要功能有控制A/D采样, 控制USBN9603接受并处理USB驱动程序的请求及应用程序的控制指令。因为Aduc831带有串口下载功能,所以可以很方便的通过串口将程序下载到Aduc831中,不用仿真机,不用传统的方法向EEPROM中烧制程序,所以调试起来非常方便。控制程序流程、中断处理程序如图3、4所示。

3.2  USB设备驱动程序设计

USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法, 较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较高级的通用串行总线模块(USBD)和较低级的主控制器驱动程序模块(HCD)。USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。Windows 98/2000提供了一系列的系统驱动程序,他们具有为许多标准类型设备服务所需的所有基本功能,用户按照提示可以定义设备的配置和功能,然后做功能的修改即可。可以把USB设备驱动程序的功能划分成4个不同的模块来实现:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块。初始化模块提供1个入口函数DriverEntry(),在DriverEntry中,需要提供一个AddDevice例程,把驱动程序添加到驱动程序堆栈中去。另外,所有对各种IRP(I/O请求包)的处理例程都在此入口函数中作为定义。
DriverEntry(IN PDRIVER_OBJECT DriverObject,…) //驱动程序入口
{
DriverObject->DriverExtension->AddDevice=USBAddDevice;
DriverObject->DriverUnload=USBUnload;
DriverObject->MajorFunction[IRP_MJ_READ]=USBRead;
DriverObject->MajorFunction[IRP_MJ_WRITE]=USBWrite;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = USBDeviceControl;
RegisterForPnpNotification(DriverObject);
return status;
}

即插即用管理模块用来实现USB设备的热插拔及动态配置。当硬件检测到有USB设备接入时,Windows98查找响应的驱动程序,并调用它的 DriverEntry例程。PnP(即插即用)管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备。在此处理过程中,驱动程序收到一个设备启动请求(IRP_MN_START_DEVICE)的IRP。同理,当要拔除时,PnP管理器会发出一个设备删除请求(IRP_MN_REMOVE_DEVICE)的IRP,由驱动程序进行处理。通过对这些PnP请求的处理,可支持设备的热插拔和即插即用功能。

电源管理模块负责设备的挂起与唤醒。

I/O功能实现模块完成I/O请求的大部分工作。若应用程序想对设备进行I/O操作,它便使用Windows API函数,对WIN32子系统进行WIN32调用。此调用由I/O系统服务接收并通知I/O管理器,I/O管理将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB设备驱动程序。USB设备驱动程序接收到这个IRP以后,根据IRP中包含的具体操作代码,构造相应的USB请求块并把此 URB(USB请求块)放到一个新的IRP中。然后,把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所含的URB执行相应的操作(如从USB设备读取数据等),并把操作结构通过IRP返还给USB设备驱动程序。USB设备驱动程序接收到此IRP后,将操作结果通过IRP返还给 I/O管理器。最后,I/O管理器将此IRP中操作结果返还给应用程序,至此应用程序对USB设备的一次I/O操作完成。

结束语:

USB为计算机外设输入输出提供了新的接口标准。它使设备具有热插拔,即插即用,自动配置的能力,并标准化设备连接, 还可与MAX485结合起来实现数据的远程采集。该系统具有可靠性高、性价比高和多点采集等优点。而USB2.0标准具有更高的传输速率,更具有美好的应用前景。

参考文献:
1. Aduc831 datasheet.             Analog device.
2. USB1.1.     Universal serial bus specification S.
3. 张念淮、江浩.《USB总线接口开发指南》 国防工业出版社.
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭