0 引 言
近年来,随着集成电路以及芯片制造技术的不断发展,不同的usb通信芯片不断涌现,目前典型的usb通信芯片有ch375、pdiusbd12等。
这些器件的特点是功能较为强大,但价格较高,很难在中低价位的产品开发中使用。而avr usb技术则是利用高性能的8位risc架构的avr单片机的io口来模拟usb的通信端口,并由软件来实现usb通信协议,以将普通的avr单片机模拟成一个usb低速设备,从而实现avr单片机与计算机之间的通信和控制。
尽管这种方式只能实现低速传输,但对常用数据量不是十分巨大的系统而言,它已经足够使用了,且其速度远远高于传统的串口传输速度,因而在产品开发中具有广阔的应用前景。本文便是利用avr usb技术来实现对温度的测量和显示功能。
1 系统下位机软件流程
下位机软件设计及其实现可基于winavr编程环境,代码则可利用c语言实现。avr单片机主要完成两个功能:温度测量和数据传送。温度测量主要是对电压信号进行采样,以确定温度的离散数值。传送数据则是将测量的数据通过avr所模拟的usb端口传至pc端,以便pc端进行数据的显示和处理。其主要流程如图1所示。
2软件功能的实现
2.1温度数据的采集
atmega8内含一个10位逐次逼近型adc。该adc可与一个8通道的模拟多路复用器连接,以对来自端口c的8路单端输入电压进行采样。单端电压输入以0 v(gnd)为基准。ad转换的时序图如图2所示。
对于连续ad数据采集,可采用查询法和中断法,该程序中采用的是中断法,即一次ad转换结束后便产生中断。设计时可利用如下函数对电压数值进行采集:
首先定义全局变量value,储存所测量到的温度数值,并将该值作为usb端口的发送数值。
2.2 usb数据传输
为了利用atmega8模拟“软usb”,应在winavr将avrusb的文件配置文件夹usbdrv放置在源文件目录下,在该目录下,编程中所需要的文件如表1所列。
该设计只要对usbconfig.h的内容进行配置,便可减小代码量。其主要参数配置如表2所列。
一般情况下,每种usb设备都有一个pid和vid。其中vid是生产商的代号,pid是产品的代号,每个代号都是一个双字节的整数。pid和vid不能随意设置,它是由usb标准协会进行分配的(0x16c0、0x05dc),并在用户配置文件中要遵循低位在前高位在后的原则。
2.3 usb数据传输的接口函数
(1)初始化函数
使用avrusb前,通常都要通过调用初始化函数usbinit ()来对usb端口进行初始化,调用该函数之前,考虑到该程序可能由其他程序段跳转而来,因此,初始化之前,一般要将usb端口进行重新复位,复位只需要将d-和d+端口的电平拉低即可,利用如下语句便可实现上述功能:
ddrd=0x14;portd=0x00;
通常可在程序其他部分初始化完成后再调用函数usbinit (),最后再调用sei ()函数允许中断。在main.c文件中的实现代码如下:
(2)事件处理函数
用户程序的主循环中需要定期调用usb事件处理函数usbpoll ()。usb事件处理函数usbpoll ()在没有usb事件需要处理时将直接返回,否则将调用内部函数来进行相应的事件处理,最后再将数据传递到用户接口函数中。通常的方法是:
一次usb通信的超时时间是50ms。所以,在编程时应注意其他事件不要占用太长的时间,以勉usbpoll ()函数不能及时执行。
(3)事件接口函数
在用户程序中,需要编写usb用户事件接口函数,以完成usb通信。avrusb将用户接口简化为以下3个函数:
上述三个函数需要用户进行编程处理,它们将完成usb通信的数据处理。
为了使代码最优化,本系统只使用usbfunctionsetup函数,而屏蔽了usbfunctionwrite和usbfnctionread函数,方法是在usbconfig.h中设置相应的位为0或1即可(参见表2)。
函数usbfunctionsetup负责传递usb请求,其参数存放在一个8字节的数组中(uchar data [8]),其含义是:
由于该系统功能只需要将测得的温度值传送到pc端,因此,该函数中只需做数据传送即可,而无须作不同指令的辨识,设计时可使用如下代码来实现上述功能:
2.4编译文件的配置
在winavr软件环境下,还需要配置makefile,以用于编译编程文件:
经过上述过程的配置和编程后,即可实现下位机的数据采样和usb端口的数据传输。
3 结束语
基于avrusb技术的温度测量和显示系统由于使用了一体的软usb技术,其硬件电路设计更加小巧稳定。经使用和测试证明:该系统具有性能稳定、价格低廉等特点。重要的是,本系统提供了一种低成本的usb设计方案,同时较详细的提供了下位机的设计流程和部分代码,从而为中低成本的usb设备开发提供了一个较好的思路。
VR和AI应用在房子装修是一种什么体验?
存储新态势!PCIe SSD与SATA SSD同价
中国移动5G:赋能“智造”的典型应用
华为在深圳落地了首家全球旗舰店,可见智能家居渐成大势
旋转LED显示屏的制作
AVR USB接口的温度测量系统下位机设计
白酒甲醇快速检测仪的特点及功能
二手车交易市场混乱,商务部将入局监督
PLC的扫描周期_PLC输入/输出滞后时间
Verilog并行FIR滤波器设计
OPPOR11最新消息:OPPOR11成功占领9大城市地标,2000万拍照更清晰!代言人曝光OPPOR11发布会要来了?
现在的芯片行业为什么会这样失衡?
OST中提取邮箱数据和重置丢失的WindowsServer 密码的工具
AR FieldAdvisor是一种用于远程现场服务的空间计算解决方案
一分钟了解如何使用灵科超声波焊接LED车灯
蓝牙AOA室内定位的精度有多少
Chris_zhangrx的博客
布局物流自动驾驶,物流企业正在下一盘什么棋
致动器的定义
2017年作为iPhone十周年 iPhone8将华丽大变身