0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AVR USB接口的温度测量系统下位机设计

电子工程师 来源:电子元器件应用 作者:孙福文 2021-04-28 11:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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所示。

pIYBAGCI0LKAT8cfAAA2dgyLHBc148.png

2软件功能的实现

2.1温度数据的采集

ATmega8内含一个10位逐次逼近型ADC。该ADC可与一个8通道的模拟多路复用器连接,以对来自端口C的8路单端输入电压进行采样。单端电压输入以0 V(GND)为基准。AD转换的时序图如图2所示。

pIYBAGCI0MCAOKU0AAD3pJqqsiI871.png

对于连续AD数据采集,可采用查询法和中断法,该程序中采用的是中断法,即一次AD转换结束后便产生中断。设计时可利用如下函数对电压数值进行采集:

首先定义全局变量Value,储存所测量到的温度数值,并将该值作为USB端口的发送数值。

o4YBAGCI0PWARG1UAACyB6z1yXI174.png

2.2 USB数据传输

为了利用ATMEGA8模拟“软USB”,应在WINAVR将AVRUSB的文件配置文件夹USBDRV放置在源文件目录下,在该目录下,编程中所需要的文件如表1所列。

o4YBAGCI0S2AFkVZAABZwoH19jM157.png

该设计只要对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文件中的实现代码如下:

pIYBAGCI0VuAU59IAAAuopMU_k4731.png

(2)事件处理函数

用户程序的主循环中需要定期调用USB事件处理函数usbPoll ()。USB事件处理函数usbPoll ()在没有USB事件需要处理时将直接返回,否则将调用内部函数来进行相应的事件处理,最后再将数据传递到用户接口函数中。通常的方法是:

o4YBAGCI0X2ATB_KAAAxKpOyAIk207.png

一次USB通信的超时时间是50ms。所以,在编程时应注意其他事件不要占用太长的时间,以勉usbPoll ()函数不能及时执行。

(3)事件接口函数

在用户程序中,需要编写USB用户事件接口函数,以完成USB通信。AVRUSB将用户接口简化为以下3个函数:

o4YBAGCI0ZiABO9yAABHQQBRuVo834.png

上述三个函数需要用户进行编程处理,它们将完成USB通信的数据处理。

为了使代码最优化,本系统只使用usbFunctionSetup函数,而屏蔽了usbFunctionWrite和usbFnctionRead函数,方法是在usbconfig.h中设置相应的位为0或1即可(参见表2)。

o4YBAGCI0buAeczxAAIyl4FBXIk978.png

函数usbFunctionSetup负责传递USB请求,其参数存放在一个8字节的数组中(uchar data [8]),其含义是:

o4YBAGCI0fmADgi6AABj_gWkDXg307.png

由于该系统功能只需要将测得的温度值传送到PC端,因此,该函数中只需做数据传送即可,而无须作不同指令的辨识,设计时可使用如下代码来实现上述功能:

o4YBAGCI0gqAUVrBAACPGMoWP0o677.png

2.4编译文件的配置

在WINAVR软件环境下,还需要配置MakeFile,以用于编译编程文件:

pIYBAGCI0heAR0KCAAGmmClTcMc427.png

经过上述过程的配置和编程后,即可实现下位机的数据采样和USB端口的数据传输。

3 结束语

基于AVRUSB技术的温度测量和显示系统由于使用了一体的软USB技术,其硬件电路设计更加小巧稳定。经使用和测试证明:该系统具有性能稳定、价格低廉等特点。重要的是,本系统提供了一种低成本的USB设计方案,同时较详细的提供了下位机的设计流程和部分代码,从而为中低成本的USB设备开发提供了一个较好的思路。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    8373

    浏览量

    281772
  • 编程
    +关注

    关注

    90

    文章

    3708

    浏览量

    96777
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66855
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    分享1-Wire接口数字温度传感器IC型号

    如今,随着测温应用环境的升级和拓展,精准的温度测量与控制已成为各种环境数据采集的关键,传统模拟温度传感器已经无法满足市场的要求,而1-Wire接口数字
    的头像 发表于 12-02 16:34 389次阅读
    分享1-Wire<b class='flag-5'>接口</b>数字<b class='flag-5'>温度</b>传感器IC型号

    USB接口的革命性进化之路

    USB(Universal Serial Bus,通用串行总线)自问世以来,凭借其传输速度快、使用方便、连接灵活等优势,迅速取代了其他同类接口标准,成为电子设备连接的主流选择。更关键的是,USB标准
    的头像 发表于 12-01 11:48 32次阅读

    Microchip Technology AVR® DU微控制器数据手册

    /8KB SRAM和256字节EEPROM。AVR DU MCU采用14引脚、20引脚、28引脚和32引脚封装选项。这些MCU支持无晶振USB操作,并包含一个可选的内部3.3V稳压器。这些MCU在-40°C至85°C的宽工业工作温度
    的头像 发表于 10-09 15:15 348次阅读
    Microchip Technology <b class='flag-5'>AVR</b>® DU微控制器数据手册

    USB 接口无法识别外接设备怎么办?​

    可能是设置被误改。今天,我们就从硬件排查到系统修复入手,拆解不同场景下的解决方案,让大家遇到这种情况时不用送修,自己在家就能搞定! ​ 一、搞清楚USB 接口不识别的两大根本原因,不是接口
    的头像 发表于 09-17 16:28 2864次阅读
    <b class='flag-5'>USB</b> <b class='flag-5'>接口</b>无法识别外接设备怎么办?​

    嵌入式接口通识知识之USB接口

    可以在计算机运行时插入或拔出设备,而不会影响系统的正常操作,这种特性大大增强了设备的易用性和可移植性。1.2 类型USB接口有多种版本和类型,包括标准的USB、Micro-
    发表于 08-21 16:56

    功率器件测量系统参数明细

    在半导体功率器件(如IGBT、SiC MOSFET、GaN HEMT)的研发、生产与品控中,精准、高效、可靠的测量系统是确保器件性能达标、加速产品上市的关键。天恒科仪功率器件测量系统
    发表于 07-29 16:21

    Analog Devices Inc. LTM2985数字温度测量系统数据手册

    Analog Devices Inc. LTM2985隔离式高精度数字温度测量系统测量各种温度传感器,以数字方式输出结果(°C或°F),具有
    的头像 发表于 06-25 09:16 576次阅读
    Analog Devices Inc. LTM2985数字<b class='flag-5'>温度</b><b class='flag-5'>测量</b><b class='flag-5'>系统</b>数据手册

    87233系列USB连续波功率探头

    USB连续波功率探头频率范围覆盖8kHz~67GHz,最高功率测量准确度可达±0.20dB。本产品体积小、重量轻、采用USB接口供电和通信,可配接到计算机使用,能灵活扩展电子
    的头像 发表于 04-21 16:37 491次阅读
    87233系列<b class='flag-5'>USB</b>连续波功率探头

    普源DHO1072示波器USB信号测量方法

    随着电子技术的飞速发展,USB(通用串行总线)接口已成为现代电子设备中不可或缺的组成部分。USB接口不仅用于数据传输,还广泛应用于电源管理、设备控制等多个领域。因此,对
    的头像 发表于 03-19 13:48 928次阅读
    普源DHO1072示波器<b class='flag-5'>USB</b>信号<b class='flag-5'>测量</b>方法

    Keithley静电计在温度测量中的准确性探讨

    测量系统的理想选择。本文将从温度测量的基本原理、静电计的技术特点、温度补偿机制、实际应用场景及误差分析等多个维度,深入探讨Keithley静
    的头像 发表于 03-17 11:45 699次阅读
    Keithley静电计在<b class='flag-5'>温度</b><b class='flag-5'>测量</b>中的准确性探讨

    温度探头的测量范围选择

    温度是工业过程中一个关键的参数,它直接影响到产品质量、生产效率和安全性。温度探头作为测量温度的工具,其测量范围的选择直接关系到
    的头像 发表于 01-20 09:54 1448次阅读

    电动牙刷USB接口的芯片保护电路方案

    1 USB2.0的ESD保护方案 如图1所示为USB接口与ESD保护芯片连接示意图,其中USB Controller/Charger指的是USB
    的头像 发表于 01-17 16:52 1748次阅读
    电动牙刷<b class='flag-5'>USB</b><b class='flag-5'>接口</b>的芯片保护电路方案

    温度对电桥测量结果的影响

    温度对电桥测量结果的影响是显著的,主要体现在以下几个方面: 一、电阻值变化 电桥电路中的电阻值会随着温度的变化而变化。通常,电阻的阻值会随着温度的升高而增大,这种变化会导致电桥电路中的
    的头像 发表于 01-09 10:21 1930次阅读

    利用FPGA实现USB 2.0通信接口

    USB 2.0接口的实现方式 利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围的USB
    的头像 发表于 12-30 13:59 3799次阅读
    利用FPGA实现<b class='flag-5'>USB</b> 2.0通信<b class='flag-5'>接口</b>

    微型丝杆测量温度对误差的影响

    温度对精密测量设备,包括微型丝杆的测量精度有着显著的影响。
    的头像 发表于 12-16 17:38 732次阅读
    微型丝杆<b class='flag-5'>测量</b>时<b class='flag-5'>温度</b>对误差的影响