基于C8051F系列单片机的数据采集系统USB接口设计
elecfans 2023-02-07

1 引言

随着现代工业生产和科学研究对数据采集系统的要求日益提高,传输速度、纠错能力和操作安装的简易性是人们进行采集数据时一直关注的问题,这使得数据通讯技术不可避免地成为了其中的关键技术,而数据采集系统采用何种接口进行数据通讯是影响系统整体效率的重要因素之一。(通用串行总线)总线接口技术由于具有速度快、设备安装和配置容易、易于扩展、能够采用总线供电及使用灵活等优点,已逐渐成为现代数据传输的发展趋势[1-5]。

本文给出了一种基于C8051F320的数据采集系统USB 接口设计方案,完成了USB 接口硬件设计和软件程序开发,并将其应用到仓库视频监控系统中,实现了快速、方便的数据采集和传输。

2 C8051F320 原理

2.1 C8051F320 的主要特点

C8051F320 是由美国Cygnal 公司推出的C8051F 系列单片机中的一款用于USB 设备的小型单片机。该器件内部集成有2304 By 和16K Byte 的Flash 存储器。由于利用该芯片进行设计时可以不需要任何外部元件(包括和晶振),因而是小型USB 应用的理想选择。与其它同类USB 产品相比,C8051F320 主要具有如下一些特点:

① 满足 USB2.0 协议;

② 可在全速(12 Mbps)或低速(1.5 Mbps)下运行;

③ 集成有一个源,对于全速或低速传输均可不用外部晶振;

④ 支持 8 个灵活通用的USB 端点;

⑤ 内置一个 1K 的USB 专用缓冲存储器;

⑥ 集成了一个 USB 接收器,不需要外部电阻。

⑦ 具有高速增强型 8051  内核,该MCU 内核采用流水线式指令结构,70%的指令执行时间为一个或两个系统时钟周期,处理速度可达25MIPS(时钟频率为25MHz 时)。

此外,C8051F320 还有许多其它特性,如支持在系统编程(ISP),带有可编程的数字I/O和数字交叉开关,可提供全速、非侵入式的在系统片内调试电路等。

2.2 C8051F320 的引脚及封装

C8051F320 的引脚排列如图1 所示,封装为TQFP-32。其中VDD 为;GND为模拟地;REGIN 为5V 校准器的输入端;T/C2CK 为设备的复位引脚或EC2 调试接口的时钟信号;P3.0/C2D 为端口P3.0 或EC2 调试接口的双向信号引脚;VBUS 为USB 总线输入脚;D 为USB 的D ;D-为USB 的D-;P0.2/XTAL1 为端口0.2 或外部晶振输入;P0.3/XTAL2 为端口P0.3 或外部晶振输出;P0.6/CNVSTR 为端口P0.6 或0 外部转换开始输入脚;P0.7/FF 为端口P0.7 或外部参考电源的输入端或输出端;P0.0、P0.1、P0.4、P0.5、P1.0~P1.7、P2.0~P2.7 均为相应的端口引脚。

3 USB 接口电路设计

3.1 USB 接口硬件电路设计

由于 C8051F320 微控制器内部集成了一个USB 接收器,简单易用,因此,用它进行USB 接口的硬件设计也显得比较简单。主要包括两部分的内容,一是接口转换模块供电方式的选择,二是USB 引脚的连接。图2 是其USB 接口电路图。模块选择自供电模式,图2所示的整个模块的供电电源都来自外部5V 电源。C8051F320 中的USB 内部已经集成了上拉电阻,不需要任何外部器件就可直接与USB 接口相连。

3.2 USB 设备固件程序设计

USB 设备固件程序是USB 设备必须实现的部分,它的主要目的是:当USB 设备连接到主机上时,主机可以发现新设备,然后建立连接并完成数据传输任务,也就是能够让上位机能够正常检测和识别USB 设备。因此,本固件设计的目的是使主机能够识别C8051F320设备,以及正确的与它进行通信。同时为了在USB 上达到最大的传输速度,C8051F320 固件设计成中断驱动。

C8051F320 固件分为两个部分:前台主程序和后台中断服务程序(ISR)。在USB 固件程序中,最重要的工作就是USB 描述符的定义和USB 传输中断的处理。

USB 描述符是USB 协议定义的一套描述设备功能和属性的固定结构的描述语言。

USB2.0 中的描述符包括设备描述符、配置描述符、接口描述符、端点描述符等8 种标准描述符和其它一些非标准描述符。USB 主机通过USB 描述符完成设备类型的识别和配置,客户端驱动程序通过这些信息来正确访问设备并与其通信。本文在对C8051F320 的配置中除了端点0 外还用到了端点1 和端点2,它们的描述符如表1 所示。

USB 传输中断的处理也是一个重要的部分。传输中断的处理由ISR 和前台主程序共同完成。这两部分的数据交换通过事件标志和数据缓冲区来实现[6]。当C8051F320 的USB 引擎从主机收到一个数据包时,就会产生一个中断请求,C8051F320 立即响应中断,通过读取USB 功能控制器的三个中断CMINT、IN1INT 和OUT1INT 来判断中断来源(USB复位中断、端点0 中断、端点1 输入中断、端点2 输出中断),然后根据不同的中断来源跳入相应的处理模块以进行不同的中断处理,并在处理完毕后返回。其中,端点0 是每个USB设备都必须支持的默认控制传输端点,主要用于主机对USB 设备的配置、状态信息的获取和设备错误的纠正等,它的中断处理模块由控制输出和控制输入两部分组成。每次传输首先由设置事务开始,然后根据设置事务数据不同的中断来源跳入相应的处理模块以进行不同的中断处理,并在处理完毕后返回。同时在ISR 中,固件将数据包从C8051F320 的USB 引擎内部缓冲区移到一个自定义的数据缓冲区,并在随后请求清零其内部缓冲区,以使其能够继续接收新的数据包。然后返回到主循环,检查自定义缓冲区内是否有新的数据并开始其它的任务。由于这种结构,主循环只用检查自定义缓冲区内需要处理的新数据,专注于新数据的处理,而ISR 也能够以最大速度进行数据的传输。这样,程序对USB 的操作更加简单,也便于程序的维护。主程序和端点0 的控制传输程序流程分别如图3、图4 所示。端点1 和端点2 的程序流程与之类似。

4 数据的接收和显示

在主机中安装基于 C8051F320 USB 设备的驱动程序(可以在新华龙网站上下载)之后,该设备就会被默认成该主机的一个串口,因此在主机的处理中可以将它当作一个虚拟的串口进行处理,读取其数据就如读串口数据一样方便,很快就能够建立快速通信平台。

主机软件采用 VC++开发的,串行通信部分采用A 函数直接进行编写。它为应用程序提供了通过串行接口收发数据的方法。主机软件使用API 文件函数进行串口通信的控制。具体函数以及使用,可以查阅MSDN。

5 结束语

本文利用C8051F320 速度快、处理能力强、结构简单等特点,设计了一种基于C8051F320的数据采集系统USB 接口方案,给出了USB 接口电路具体的设计方法,并对主机的数据和显示进行了开发。将设计的USB 接口应用到仓库视频监控系统中,能够实现快速、方便的数据传输,能达到上兆的传输速率,满足了实时、快速传递数据的要求。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 基于C51单片机实现汽车座椅自动控制系统的软硬件设计

    引言 随着人们生活水平的提高,对汽车座椅的舒适性要求也越来越高,要求对汽车座椅地调节能够更加简单、方便、快捷。目前,汽车座椅位置的调节多采用基于手动调节方式的机械和电动控制两种方式。汽车座椅位置的调节...

    前天
  • MCS51单片机程序设计时堆栈的计算方法解析

    用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势。Keil公司的C51编译器支持经典8051和8051派生产品的版本,通称为Cx51。应该说,Cx51是C语言在MCS51单片机上的扩展,既有C语言的共性,又有它自己...

    前天
  • 51单片机定时器工作原理及用法

    TMOD : 控制定时器的工作方式。8个bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因为定时器有4种工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。...

    前天
  • 51单片机学习单片机之路总结

    学习单片机有一学期了,现在也由51转到STM32了。一直想对51的学习做一个总结。也希望对别人有一些启发。也给后学者提供一些建议。当然本文是我对自己学习过程的总结,若有不对的地方,还请高手指出。 我想,再看本...

    前天
  • hot51增强型单片机开发板原理图

    功能要求: 一):绿灯25s倒计时,绿灯过度红灯有5s黄灯时间,红灯25s后直接跳绿灯。 二):按键按下模拟闯红灯输入,产生5s蜂鸣器鸣叫。 开发环境: 软件:Keil uVision4 硬件:HOT51增强型单片机开发板 程序代码:...

    07-01
  • 51单片机的延时子程序

    延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器周期和指令周期的区别,不知道延时程序指令的用法, ,本文就此问题从延时程序的基本概念、机器周期和指令周期的区别和联系...

    07-01
  • 什么是Flash盘?Flash盘的结构是什么样的?

    Flash是大家常使用的存储之一,对于Flash,大家或多或少有所了解。上篇文章中,小编对Flash闪存的类型有所介绍。为继续增进大家对Flash的认识,本文将对Flash盘、Flash盘结构以及Flash读写操作予以介绍。如果你对本...

    07-01
  • 深谈嵌入式系统,嵌入式系统是如何组成的?

    嵌入式系统在生活中有诸多应用,大家对于嵌入式系统或多或少有所耳闻。在前两篇文章中,小编对嵌入式系统进行过详细介绍。为继续增进大家对嵌入式系统的认识,本文将对嵌入式系统的组成加以说明。如果你对嵌入式系...

    06-27
  • 嵌入式系统秘籍共享,最全嵌入式系统解析

    嵌入式系统的应用十分广泛,因此越来越多的人学习嵌入式系统。由此,在学习嵌入式系统之前,我们应当对嵌入式系统具备一些认识。所以在本文余下部分,小编将对嵌入式系统进行全面解析。如果你对嵌入式系统具有兴趣...

    06-27
  • 51单片机超声波测距程序详解

    51单片机超声波测距程序详解 超声波四通道测距:超声波测距实现分为三大块: 其一是12864带字库的液晶驱动程序: 代码如下: /////////////////12864驱动程序/////////////////////////// //1写数据 void WriteDat...

    06-25
  • 51系列单片机的引脚图

    51系列单片机的引脚图 端子介绍 l P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。 l P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。 l P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。 l P3.0~P3.7 P2口8...

    06-25
  • 51单片机串口通信需要加超时中断吗?

    接收数据时,超过一定时间就算出错. 这个超时的时间是单片机自己算出的吗?超时的时间是由编程序的人定的,他定多长就多长从一段程序开始 实现电脑向 单片机发送一些数据,单片机返回Iget +数据 #include #define u...

    06-25
下载排行榜
更多
评测报告
更多
广告