AT91SAM7X的多路USB2.0数据采集系统

2009-01-02 22:54:14来源: 单片机与嵌入式系统应用

 

  目前工业和医疗上使用的USB设备,绝大部分是使用专用的USB芯片与微处理器相连的,特别是USB数据采集系统。根据不同的需求,通常也需要外扩一定数量的A/D转换器,接口非常复杂。有时甚至需要为了协调不同的时钟而外扩FIFO,这样的设计不但成本大幅提高,而且系统的稳定性受到了严重的威胁。本文使用Atmel公司开发的基于ARM的闪存微控制器AT91SAM7X芯片。芯片内部集成了8路10位ADC和USB2.O设备接口,单芯片即可完成设计任务,避免了复杂的接口电路设计,不但有效地解决了以上这些问题,而且在很大程度上提高了系统的稳定性。

  1 AT91SAM7X数据采集主控芯片介绍

  AT9lSAM7X是基于32位ARM7TDMI内核的微控制器。AT91SAM7X系列微控制器具备嵌入式10/100M以太网(Ethernet)MAC、CAN、全速(12 Mbps)USB 2.O。针对广泛的网络化实时嵌入式系统而设计的AT9lSAM7X256还具备1个10位模/数转换器(ADC)、2个串行外围接口(SPI)、同步串行接口(SSC)、双线接口(TWI)、3个通用异步收发器(UART)、1个8级优先中断控制器(priority interrupt controller)和众多的监管功能。这个新型的50MIPS MCU拥有64 KB的静态存储器和256 KB的25 ns闪存,这种闪存支持实时控制系统所需的可确定性处理能力。

  2 数据采集系统硬件设计

  2.1 数据采集系统硬件设计结构图

  
本文设计的基于AT91SAM7X的多路USB2.O数据采集系统主要由6部分组成,如图1所示,分别是输入信号接口模块、多路信号放大模块、信号调理模块、数据采集处理模块、USB2.O接口模块和上位机模块。其中,输入信号接口模块、多路信号放大模块、信号调理模块主要完成外部标准的一5~+5 V信号的隔离接人与变换。因为AT91SAM7X的ADC允许接入的转换电压范围是O~3 V,所以上述3个过程的信号变换是必要的。本系统主要采用的变换手段为信号的差分放大,主要部分数据采集处理模块和USB2.O接口模块分别由AT91SAM7X内置的ADC模块和USB2.O模块来完成。由于大部分的工作是在同一个芯片内部完成,只需通过简单的寄存器设置和数据交换,即可完成数据的采集和传输过程,在很大程度上优化了系统的设计。

  2.2 AT91SAM7X的ADC模块介绍

  AT91SAM7X的片内ADC是基于连续寄存器(SAR)模型,片内通过一个8到1的模拟复用器来实现8通道的模/数转换。ADC输入范围是O V~ADVREF。ADC支持8位和10位两种分辨率,可以通过软件触发、外部ADTRG触发引脚、内部触发定时器来启动ADC。可以通过配置ADC时钟、启动时间、采样保持时间来提高ADC的精度。ADC不受电源管理器管理,有一个中断源,如果用到ADC中断信号,则需要配置中断控制器(AIC)。

  2.3 AT91SAM7X的USB2.O模块介绍


  AT91SAM7X具有内置的USB设备控制器,USB设备端口符合USB2.O全速器件规范,具有12 Mbps的通信速率。每个端点可以配置为几种USB传输类型中的一种。USB设备自动检测挂起与恢复,通过中断来停止处理器。同时,为了配合USB设备的使用并发挥其最大性能,片内集成了328字节的双口RAM。此双口RAM的一个DPR段由处理器读/写,另一个DPR段由USB2.O外设读/写,从而有效地保证了数据传输的最大带宽。

  3 AT91SAM7X的配置与模块编程

  3.1 ADC模块的配置与模块编程

  
ADC模块功能框图如图2所示。ADC模块是基于逐次逼近寄存器(SAR)的10位模/数转换器,集成了一个8到1的模拟多路复用器,可实现8路模拟信号的模/数转换。转换由O V到ADVREF。同时,ADC支持8位或10位分辨率模式,并且转换结果进入一个所有通道可用的通用寄存器(即通道专用寄存器)中。可配置为软件触发、外部触发ADTRG引脚上升沿或内部触发定时计数器输出。ADC还集成休眠模式与转换序列发生器,并与PDC通道连接。这些特性可降低功耗,减少处理器干涉。最后,用户可配置ADC时间,如启动时间以及采样与保持时间。

  系统设计中采用多点方式进行A/D转换,ADVREF接3.O V的基准电压。方便起见,以单点转换为例,说明ADC模块的配置与模块编程。当然在A/D转换之前,系统时钟和整体的配置是必需的,此处只介绍ADC模块相关的配置与模块编程。先将与模/数转换相关的所有寄存器清零,以保证所有寄存器都有确定值。具体配置过程和IAR程序代码如下:

  3.2 USB2.0模块的配置与固件编程

  USB2.0接口模块如图3所示。该模块需要2个时钟,即USB2.O器件端口时钟和主时钟。模块通过APB总线接口访问USB2.0器件端口.通过对APB寄存器的8位值进行读/写以实现对存储数据的双口RAM的读/写。外部恢复信号可选,允许在系统模式下唤醒USB2.O器件端口外设,然后主机将通知请求恢复的器件。USB2.O接口进行枚举时,该特性必须由主机处理。为保留检查VBUS的I/O线,必须先对PIO的控制器编程,将该I/O配置为输入PIO模式。USB2.O器件中有一条中断线与高级中断控制器AIC相连,因此,处理USB2.0器件中断时,必须在配置USB2.0器件端口前对高级中断控制器AIC编程。
  
  本系统中使用USB2.0接口与上位机进行通信。为便于说明,此处以向上位机端通过USB2.0接口传送O~9的数字,并循环10次为例,说明USB2.0模块的配置与同件编程。系统初始化完成后,此固件程序就通过USB2.0接口发送O~9的数字,循环10次后结束。具体的配置过程和IAR程序代码如下:



  注意:在USB2.0通信接121调试过程中,一定要将USB2.0固件程序下载到AT91SAM7X的F1ash中。这个过程可以通过ARM的地址重映射来完成,然后重新给USB2.0接口上电,因为只有在设备插入时上位机才检测设备,并提示添加相应的驱动程序。如果开发人员调试的过程中只是将程序加载到RAM中,那么由于数据掉电不会保存,固件程序在下一次插入设备时就不会存在,无论在上位机添加何种驱动程序,上位机都不会接收到数据,这样就会导致整个调试过程的失败。

  3.3 USB2.0的Windows应用程序设计


  上位机部分通过Visual C++6.0程序实现与嵌入式硬件部分的USB通信。测试过程中,先将USB2.0固件程序下载到AT91SAM7X中,插上USB数据线,根据提示添加相应的驱动程序后直接运行设计好的Visual C++6.0程序。测试结果如图4所示。

  上位机程序运行过程中首先检查设备的连接情况,确认成功连接后开始接收USB2.0设备发送过来的数据。此处为循环10次的0~9的数字,如图4所示,数据已经成功传输到了上位机端。

  结 语


  本文设计了基于AT91SAMTX的多路USB2.0数据采集系统,以AT91SAM7X芯片为核心实现了数据信号的调理变换、采集和向上位机的传输。由于AT91SAM7X内置了ADC模块和USB2.0设备接口,使得系统设计十分方便;同时由于无需使用大量的外扩芯片,使得硬件成本大幅降低,产品体积更小巧,稳定性方面也比外扩芯片的方式有较大幅度的提升。

关键字:中断  接口  转换  内核  闪存

编辑:汤宏琳 引用地址:http://www.eeworld.com.cn/medical_electronics/2009/0102/article_500.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
中断
接口
转换
内核
闪存

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 医学成像 家庭消费 监护/遥测 植入式器材 临床设备 通用技术/产品 其他技术 综合资讯

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved