看AVR软USB接口如何解决传统RS232接口数据采集的诸多问题
0 2022-11-29

1.引言

在电力生产和电气测试工作中经常需要用便携式PC机通过接口采集和处理数据。

常用的带RS232串口的数据采集器,不允许带电(热)拔插,使用很不方便。而且现在大部分的PC机不带RS232接口,尤其是便携式机。取而代之的是USB接口。目前AVRUSB软接口技术应用的很普遍,最旱是ATMEL公司在《AVR309 Software UnivealSerial Bus》一文中,详细介绍了使用AVR单片机的普通IO口来实现USB接口功能;同时介绍了ATmega8程序(固件)的编程方法,并提供全部汇编程序源代码。在源码的基础上,笔者通过参阅和分析不同作者各种版本的USB软接口固件(原程序)进行优化组合,更改和删除一部份程序后,性能有很大的提高。CPU占用率比源码程序低得多。AVR单片机ATmega8具备AVR高档单片机性能和特点,而价格仅与低档单片机相当。其内置多路A/D转换器满足模拟数据采集需要。

2.ATmega8单片机

ATmega8是ATMEL公司AVR系列单片机,采用低功耗CMOS工艺生产的基于AVR 结构的8位单片机,大多数指令执行时间为单个周期。内有10位精度的逐次逼近型ADC.

ADC与一个8通道的模拟连接,能对来自端口C的8路单端输入电压进行采样。

单端电压输入以0V(GND)为基准。ADC包括一个采样保持电路,以确保在转换过程中输入到ADC的电压保持恒定。ADC由AVCC引脚单独提供电源。AVCC与VCC之间的偏差不能超过±0.3V.器件之内有标称值为2.56V和AVCC基准电压。基准电压可以通过在AREF引脚上加一个电容进行解耦,以更好地抑制噪声。

AVR单片机的系统内可编程特性,无需购买昂贵的和编程器也可进行单片机嵌入式系统的设计和开发;同时也为单片机的初学者提供了非常方便和简捷的学习开发环境。而且在省电性能、稳定性、抗干扰性以及灵活性方面考虑得更加周全和完善。

ATmega8单片机与其它单片机比较而言,简便易用、费用低,相对进入AVR系列单片机开发的门槛也低,软件资源丰富,程序容易开发。由于Atmega8单片机是常用芯片,本文对其特性、内部结构、引脚说明等不做介绍。

3.硬件电路

基于ATmega8的USB软接口数据采集硬件电路非常简单。以ATmega8单片机为核心,加上少量的外部元件构成(如图1所示)。

图1中USB数据线D-上的上拉电阻R3用于主机识别低速USB设备(USB规范中定义)。

12MHz晶体和两个20p的电容组成单片机运行所必须的(USB一个数据位有8个时钟周期)。

D 连接到PD2,同时也是INT0引脚。D-连接到PD3.电阻R1、R2起到限流和保护作用,防止在意外情况下损坏计算机的USB端口或单片机的端口。单片机所需的电源Vcc由USB口输出5V电源直接供电。因为在USB规范中规定数据线D 和D-上的电平范围是3.0V至3.6V,D1和D2是3.6V稳压,用于限制数据线上的电平。图中LED1和R4为电源指示电路。LEDa1-LEDa6、Ra1-Ra6为A/D转换通道指示电路。L1、C3、C4按ATmega8产品说明手册A/D转换精度要求设置。Ri1-Ri6、Ci1-Ci6为模拟信号采样输入设置,其电路和参数根据不同输入要求而改变。图中J2是模拟信号采样输入端,可接入单端0-2.56V、0-5V输入模拟信号。测量交流电参数需要对交流电信号处理后输入;如要测量差动模拟信号需要改变输入采样电路。并将单片机ATmega8改用ATmega16,ATmega16的A/D转换可单端输入也可差分输入;还有2路可选增益为10倍与200倍的差分输入通道;就是多了几个引脚,电路图有所变化;单片机软件可兼容和移植,并增加几条有关A/D转换差动输入和数据处理的指令。如需要请参阅ATmega16产品说明手册(ATMEL公司网站可下载)。

4.ATmega8单片机程序(固件)

本程序基于单片机ATmega8以纯软件完成USB协议接收、发送和解码,以实现USB接口数据通信功能;通过指令操作单片机内置A/D转换实现模拟量数据采集功能。USB协议定义低速USB设备通信速率是1.5M位/秒。

如单片机使用1 2 M H z的时钟频率,主频是1.5MHz的8倍。也就是说,单片机每8个周期就要精确完成一个(对普通IO端口)数据位的采集或发送。

这种情况对单片机的时序要求严格,为此单片机的软件核心部分代码必须由汇编语言编写。ATmega8芯片是ATMEL(爱特梅尔)公司的AVR系列单片机。ATMEL公司网站提供AVRStudio集成环境(IDE)开发软件免费下载。

安装后直接支持汇编语言。本固件程序以此开发软件汇编编译并烧写(烧写用USB-isp下载线)。

程序以模块化结构编写,为了各模块相互运行协调和高效,USB接口做如下设置约定。

状态代码=1:表示收到控制端口SETUP令牌包(中断内收到令牌包后设置)

状态代码=2:表示收到控制端口IN包(中断内收到令牌包后设置)

状态代码=3:表示收到控制端口OUT包(中断内收到令牌包后设置)

状态代码=5:表示收到数据端口OUT包(中断内收到令牌包后设置)

状态代码=6:表示收更改地址(主循环内设置)

操作标志=2:表示收到控制端口SETUP包数据(中断内收到数据包后设置)

操作标志=3:表示发送完控制端口IN数据包(中断内发送完IN数据包后设置)

操作标志=4:表示准备好控制端口IN数据包(主循环内设置)

端口号=0:控制端口

端口号=1:数据IN端口

端口号=2:数据OUT端口

端口号=3:串口状态IN端口(USB虚拟RS232接口,CDC类规范要求)

5.结论

程序从系统复位开始初始化系统(设置堆栈地址、存储器及初始化、A/D转换器初始化)和设置软USB接口初始值后,进入主程序不断检测USB复位信号(两条数据线保持10-20ms低电平)。如果出现复位 时当多个物品共用一个总发射器,一旦总发射器不能立刻找到,想找回所需物品也将变得困难,因此可以在一个或几个物品上也安装上小发射器,在总发射器上附加报警器,这样就可以利用物品上的发射器感应并找回总发射器,然后再利用总发射器找回所需物品。此外,它的应用范围较广,如博物馆、银行等,市场需求量会比较大,是现代社会的必备品之一, 因此具有较高的推广价值和较好的应用前景。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 工业
  • 安防
  • 航空
  • CAN
  • 地址总线数据总线及控制总线的定义

    总线:指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。地址总线(AB):地址总线是单向的,用于传送地址信息。地址总线的宽度为16位,因此基

    3小时前
  • 如何提高RS485接口芯片的通信质量

    RS-485接口芯片能担当起一种电平转化的角色,把TTL信号、COMS信号等转化为能在485总线上传输的差分信号,把接收到的485差分信号转化为MCU能够识别的

    3小时前
  • 模拟SPI接口I/O的定义及通信设计

    1.端口:P0.4,P0.5,P0.6,P0.72.调用delay_ms函数sbitspi_cs=P0^1;sbitspi_di=P0^2;sbitspi_cl

    昨天
  • 串口数据转换CAN帧格式的方法

    MCU没有CAN或CAN接口数量不够怎么办?目前市面上有串口转CAN的相关模块或设备,但大家知道串口转CAN是如何实现的吗?转换后的帧格式是如何的?本文将为大家

    昨天
  • IPMB接口的请求和应答协议

    lRequest/ResponseProtocol(请求/应答协议)IPMB使用“请求——应答”协议,发送一条请求消息给一个智能设备,该设备会返回一个独立的应答

    昨天
  • IPMB接口协议的实现目标和特征

    智能平台管理总线(IPMB)的设计是为了在mission-critical服务器平台支持“ServerPlatformManagement”(服务器平台管理)的

    昨天
  • 飞机加油系统中的PIC单片机应用

    一、引言当前,能源已成为制约很多国家发展的瓶颈,特别是广大发展中国家,能源紧缺现象逐步凸现,世界各国对石油资源的争夺不断加剧,甚至引发局部战争;作为最大的发展中

    昨天
  • 基于ARM7处理器实现USB接口与CAN总线

    为了更好的将USB的通用性和CAN的专业性结合起来,通过计算机的USB接口接入CAN专业网络,实现系统控制的便利性和应用的高效性,本文讲述了一种基于ARM7处理

    昨天
  • 嵌入式开发常用总线与接口

    任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化

    前天
  • 电机控制单电阻采样机制

    电机控制单电阻采样机制是在一个PWM波形内采集两相电流ADC数据,但某些扇区边界条件下只能获得一路电流ADC数据,需要对PWM波形进行变形用于构造电流采样区域。

    01-28
  • 共模电感用于总线的作用

    在CAN节点的设计中,我们通常为了总线的通讯更为可靠,为CAN接口增加各种器件,但实际并非所有应用都需要,过多防护不仅增加成本,而且器件的寄生参数必然影响信号质

    01-20
下载排行榜
更多
广告