基于USB接口的数据通信演示板的软硬件实现方案

发布者:沈阳阿荣最新更新时间:2012-03-31 来源: 61ic关键字:USB接口  数据通信  程序调试 手机看文章 扫描二维码
随时随地手机看文章

前言

在开发USB设备时最难的就是固件和驱动程序的开发,要想成功的开发这两部分必须完全熟悉USB协议,而这至少需要五到六个月的时间。南京沁恒公司的CH371芯片是一块屏蔽了USB协议的接口芯片,该芯片固化了设备驱动程序和单片机程序中的协议处理部分,因此不需要去了解复杂的设备驱动程序和USB协议,大大减少了开发周期,也降低了开发难度。本文介绍的演示板就是基于该公司的CH371和CH451芯片的一个简单USB外设,通过这块演示板,不仅可以了解基于USB接口的基本结构,而且还可以熟悉基于这种接口的PC和单片机通信的单片机控制程序和计算机应用程序的编写。

芯片介绍

USB接口芯片CH371

CH371是一个USB 总线的通用接口芯片。在本地端,CH371 具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机、DSP、MCU 等控制器的系统总线上;在计算机系统中,CH371 的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写硬盘中的文件。CH371 屏蔽了USB 通讯中的所有协议,在计算机应用层与本地端控制器之间提供端对端的连接。基于CH371,不需要了解任何USB 协议或者固件程序,甚至驱动程序,就可以轻松地将并口、串口的产品升级到USB 接口。

使用时,在本地端CH371具有8位数据总线和读、写、片选控制线以及中断输出,就像操作一般外设芯片一样方便地挂接到DSP、MCU等控制器的系统总线上;在计算机端,CH371的配套软件包括通用驱动程序以及应用软件包,提供了简洁易用的操作接口。

根据不同的工作方式,芯片的接口类型可以有以下几种:被动并行接口、I2C主接口、主控方式接口。按照芯片特点,CH371芯片通过被动并行接口与本地端控制器连接,通过USB接口与计算机连接,如图1所示。


键盘控制和数码管驱动芯片CH451

CH451 是一个多功能外围芯片,通过可以级联的4 线串行接口与单片机、DSP、微处理器等控制器交换数据。CH451 包含三个功能:数码管显示驱动、键盘扫描控制、 P 监控,三个功能之间相互独立,控制器可以通过操作命令分别启用、关闭、设定CH451 的任何一个功能。CH451 的串行接口是由硬件实现的,控制器可以频繁地通过串行接口进行高速操作。CH451主要功能包括动态扫描功能和键盘扫描功能。[page]

在计算机应用层,通过应用程序来演示CH451的各种功能。应用程序把控制命令通过CH371传送给单片机,单片机接收到命令后再来控制CH451。CH451通过四线串行接口与单片机连接,如图2所示。

USB设备配置和数据传输过程描述

USB即插即用的自动配置过程是由CH371 芯片和驱动程序共同完成的。将带有CH371芯片的USB产品插入到计算机的USB插槽中,当PC机检测到USB 插入事件,操作系统有选择地复位USB 产品,并读取USB 产品的设备描述符,在CH371 芯片返回设备描述符后,操作系统根据设备描述符加载CH371 驱动程序;CH371 驱动程序读取CH371 芯片的设备描述符和配置描述符;在CH371 芯片返回设备描述符和配置描述符之后,CH371 驱动程序根据配置描述符请求操作系统对CH371 芯片进行配置。在完成配置后,PC机给CH371 芯片分配一个USB 设备地址,并指定一个USB 配置。以上是CH371 芯片的自动配置过程,在完成自动配置后,CH371 驱动程序向应用层开放操作接口。

数据传输过程是USB 产品的应用层软件与USB 产品的控制器之间的数据进行传输的过程。首先计算机应用层将数据请求发送给CH371 芯片,CH371 芯片以中断方式通知本地端控制器,并使之进入中断程序,查看传输状态信息寄存器中的数据传输方向标志位,如果是上传,则将上传数据长度寄存器置为15,然后退出中断程序;如果是下传,则查看下传数据长度寄存器,从数据下传缓冲区中读取数据块,并分析接收到的数据块,将应答数据和应答数据的长度分别写入数据上传缓冲区和上传数据长度寄存器中,然后退出中断程序。在退出中断程序之后, CH371 芯片将应答数据返回给计算机,此时计算机应用层将会接收到应答数据。

演示板硬件电路设计

本演示板采用USB 总线接口芯片CH371、数码管驱动和键盘控制芯片CH451和通用的MCS51 系列单片机构成,用于演示CH371 的USB 数据通讯功能,CH451 的数码管驱动/键盘扫描功能,以及CH371 与单片机的连接,CH451 与单片机的连接。演示板通过USB 接口与PC 机进行通讯,并由PC 机控制它的执行,演示板电路设计如图所3示。

图3中,元器件说明如下:

晶振X1 为标准的12MHz,晶振的金属外壳应该接地,以减少来自外界的干扰;振荡电容C1、C2 的容量为20pF(可以在5pF 至30pF 之间选择);另外,建议在CH371 的XI引脚(第14 脚)前串接一个阻值为1K 的电阻(可以在200 至3K 之间选择),即X1与C2 相连接后通过1K 电阻连接到CH371 的XI 引脚。[page]

阻抗匹配电阻R1、R2 为100 (可以在80 至150 之间选择),如果CH371 的工作电压略低于5V ,则R1、R2 的阻值可以适当减少。
U4(单片机89C51)用于测试CH371 的USB 数据通信功能,本例中CH371 工作于复用地址方式,U4 的ALE 与CH371 的ALE 相连接,CH371 的INT#与U4 的INT0 相连接,U4通过CH371 的被动并行接口与CH371 进行数据交换。

U3(EEPROM 器件24C02)作为I2C 接口的目标设备,用于测试CH371 的I2C 接口功能,PC 机的应用层程序可以直接对该器件进行读写测试。

L1(发光二极管LED)用于测试CH371 的主控方式的功能,即使CH371 不连接任何单片机(例如在本例中取出单片机U4),PC 机的应用层程序仍然可以直接控制CH371 的A3引脚输出低电平或者高电平,从而点亮LED 或者熄灭LED。

跳线J1 用于测试CH371的片选线CS#的两种用法,在本例中单片机没有其它外围器件,所以CS#引脚可以悬空,作为默认选择,如果单片机还有其它并行接口的外围器件,则CS#应该作为片选控制线,例如由单片机的地址线A15 驱动,从而将CH371 定位于单片机U4 的0000H-7FFFH 地址空间。

跳线J3 用于测试CH371 的USB 带电下线功能,当单片机U4 的P1.4 引脚输出高电平时,可以控制CH371 模拟从USB 总线上断开,当单片机U4 的P1.4 引脚输出低电平时,可以控制CH371 模拟连接到USB 总线。
跳线J2 用于选择单片机U4 上电复位信号的来源,CH371 和CH451 都具有上电复位和看门狗功能,由J2 可以分别测试两个芯片的上电复位功能。电阻R4 用于调节CH451的上电复位门限,阻值为200K 时上电复位门限约为4V,测试时请注意防止干扰。

电阻R5 为数码管的限流电阻,阻值可以在60 至500 之间选择,阻值为200 时限定段电流为13mA 左右;电阻R6 为按键扫描的限流电阻,阻值可以在1K 至10K 之间选择,本例中为2K ,如果不使用CH451 的按键扫描功能,则电阻R6 可以省去。

CH451的SEG0~SEG7引脚和DIG0~ DIG7引脚相互配合,可以最大扩展8个共阴数码管和64个轻触按钮。这部分扩展电路比较容易,由于版面所限,以上电路图省去了这部分。 程序的软件设计一般USB设备的开发,USB接口程序设计包括三部分:单片机程序开发,USB设备驱动程序开发,主机应用程序开发。由于CH371接口芯片固化了设备驱动程序和单片机程序中的协议处理部分,因此软件设计仅仅包括两部分,即单片机中的数据交换部分和主机的应用程序。[page]


单片机控制程序

应用程序和单片机控制程序之间有这样的协议约定:应用程序发送给单片机的数据中的第一个字节是命令,单片机接收到PC发送过来的数据后,先对第一个字节做出响应,根据命令的不同进入不同的子程序。例如:定义DEMOTESTDATA EQU 90H,这表示90H这个十六进制数据代表测试命令,当单片机接收到来自PC的数据的第一个字节是90H时,就会进入将PC 发来的数据取反的子程序,并将取反后的数据返回。

在整个方案中单片机控制程序的作用主要有:(1)当评估板上的按键按下时,CH451通过中断通知单片机,然后单片机从CH451的缓冲区中读取键码值,单片机再通过中断通知PC机,PC进入相应的中断程序进行处理;2)当PC发送命令时,CH371通过中断通知单片机,单片机对该命令做出响应,或控制CH451,或返回应答数据,流程图如图4所示。

PC端应用程序设计

为了检验硬件设计和单片机控制程序编写的可行性,需要在PC端用VB编写一个测试程序,用以测试硬件电路在数据通信方面是否畅通。程序用到了4个窗体,2个模块。其中两个模块主要是定义一些全局变量、函数,以及API函数的声明(因为这些函数只有在声明以后才能调用),设计4个窗体是为了更好地完成演示板的各项功能。[page]

(1)主界面设计

演示主界面如图5所示。

功能说明:在电路板上有三个按键,对应这三个按键有三个不同的演示程序。根据该界面的提示,每按下一个按键就进入相应的演示程序,而演示完一个程序后可以退回该界面进行另外演示程序的选择。 2)同步可调实时时钟演示程序

界面设计如图6所示。

功能说明:进入该演示程序后,PC会通过命令使数码管上显示当前时间,但时钟不走动。

“启动时钟”:单击该命令按钮时钟开始走动。

“校准时钟”:单击该命令按钮后,文本框下的六个命令按钮会被激活,它们分别对应六个数码管。单击修改时间对应的按钮,会弹出对话框,要求输入要修改的时间。

“校时确定”:当时间校准好以后,单击命令按钮,这时会弹出对话框提示是否已经校准时间,否则可以继续修改。若确定以后,时钟又可以正常走动。

“返回主窗体”:单击该命令按钮回到窗体一,以便继续进行其他程序的演示。

(3)CH451各项功能演示程序
界面设计如图7所示。


功能说明:当进入该演示程序后,会自动在数码管上加在字数据“HELPHELP”。

“右(左)移位”:单击命令按钮,数码管上的字会向右(左)移动,左(右)边移出的空位会加0。[page]

“右(左)循环移位”:单击命令按钮会使数码管的数据分别向右(左)循环移位。

“加载字数据”:单击该命令按钮后,会弹出对话框提示“要加载字数据请单击相应的文本框”。此时文本框会被激活,当单击文本框后,会再次弹出对话框,要求输入要加载的字数据。输入完并确定后,数码管上就会显示加载的字数据了。 “闪烁”:单击该命令按钮后,会弹出对话框提示“要是数码管闪烁请单击对应的单选按钮”,同时8个单选按钮会被激活。每个单选按钮对应一个数码管,选中相应的单选按钮后,对应的数码管就会闪烁。当再选中另外的单选按钮后,前一个就会停止闪烁。

“亮度控制按钮”:单击该命令按钮后,弹出对话框提示“请单击相应的单选按钮进行亮度的选择”,同时,十六个单选按钮会被激活,它们对应控制数码管的十六级亮度显示,当选中第一个按钮时,数码管会变的最暗,当依次选中其他的按钮时,亮度会依次递增。

“DEFAULT”:单击该命令按钮后,会回到默认状态。即:字数据显示为“HELPHELP”;闪烁的数码管会停止闪烁;数码管的亮度会变为16级亮度。

“熄灭数码管”:单击该命令按钮后,数码管会熄灭。

“退出”:单击该命令按钮后,会返回主窗体。


批量数据传输演示程序

界面设计如图8所示。

功能说明:

“发送数据”:单击该命令按钮后,会弹出对话框,首先要求输入要发送的数据的个数,然后会弹出对话框要求输入要发送的数据。同时发送的数据会在文本框中显示,以便和接收到的数据进行比较,看单片机是否做出了正确的应答。

“接收数据”:单击该命令按钮后,PC会首先发送一个命令给单片机,要求单片机对刚才发送的命令做出响应。单片机接收到此命令后会对接收到的数据按位取反,然后返回给计算机。当计算机接收到返回的数据后会在文本框中显示出来。

“退出”:单击该按钮后会返回主窗体。

程序调试的体会

该演示程序最关键的就是要使得PC和单片机之间能够通过CH371接口芯片进行通信,这必须用到该公司提供的API函数。调试时需要事先理解这些函数的作用以及各个参数的具体意义。PC的命令和数据能够很容易就传给单片机,但单片机得到的按键值却无法传到PC机。后来笔者在查阅了一本关于在Visual Basic中调用API函数的书后终于找到了问题的原因所在,通过修改一下API函数的中的参数,终于使得PC和单片机之间能够进行双向的通信,这一步成功后其余的调试就比较容易进行了。

关键字:USB接口  数据通信  程序调试 引用地址:基于USB接口的数据通信演示板的软硬件实现方案

上一篇:单收/单发RS-232接口芯片ADM101E及其应用
下一篇:SoC系统中实时总线模块的设计理念与应用

推荐阅读最新更新时间:2024-05-02 21:59

单片机的I2C总线与MAX517与数据通信
1 I2C总线的特点及基本通信协议 I2C总线是Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线?串行数据线和串行时钟线?即可使连接于总线上的器件之间实现信息传送,同时可通过对器件进行软件寻址,而不是对硬件进行片选寻址的方式来节约通信线数目,从而减少了硬件所占空间。因为总线已集成在片内,所以大大缩短了设计时间,此外,在从系统中移去或增加集成电路芯片时,对总线上的其它集成芯片没有影响。 1.1 I2C总线的主要特点 I2C总线通常由两根线构成:串行数据线(SDA)和串行时钟线(SCL);总线上所有的器件都可以通过软件寻址,并保持简单的主从关系,其中主器件既可以作为发送器,又可以作为接收器; I
[嵌入式]
基于T89C51CC0X系列的程序下载器与通讯调试器设计
在电子产品的各种通讯方式中,CAN(Controller Area Network)总线以其高可靠性、实时性、传输距离远的特点得到广泛的应用,已经成为许多高档汽车(如奔驰、宝马等)车电系统的总线标准。于是出现了许多内部集成CAN控制器的单片机,如Atmel公司的T89C51CC0X系列单片机就是其中性价比较高的一款,它具有丰富的内部资源,支持CAN方式的在线编程。我们在使用此系列产品的过程中,针对其应用普遍但编程器较少的特点,开发了一款基于T89C51CC01CA芯片的CAN程序下载和CAN节点调试器,它既能对同类单片机进行编程,又能通过CAN总线对具有CAN通讯功能的设备进行调试。 2. 系统结构框图 2.1 系统原理框图。如图1
[单片机]
基于T89C51CC0X系列的<font color='red'>程序</font>下载器与通讯<font color='red'>调试</font>器设计
STM32单片机使用ST-LINK调试程序时不能设断点
我使用的是STM32单片机,昨天使用ST-LINK调试程序时,发现有些语句不能设断点。程序编译时OK的,没有错误,将程序烧录入单片机后程序看着也能正常运行,但是点击keil中debug按钮后程序进入调试状态,程序并没有停留在main函数的第一条语句,而是停留在别处。main函数第一条语句不能设置断点。 经过在网上查阅资料,发现可能是由于keil软件代码优化的问题。经过测试,发现果然是代码优化的问题。关于以上问题的解决方法:点击keil中“options for target”- 点击 C/C++ ,修改其中的 Optimization 一栏,选择“Level 0”即可。重新按keil中debug按钮进入调试状态,语
[单片机]
自制USB接口和RS232串口的1-wire转接线
1-wire也叫one-wire,是美信(MAXIM)公司弄出来的一种连接各设备的串行通信方式。其实和普通的I2C,RS232,USB类似,就是不同设备之间互相传输数据的一种方式。和其他方式不同的是,此方式只需要一根1-wire数据线和一根地线就可以实现两个设备之间的双向数据交换。而我们平常用的最多的USB则有电源,D+,D-和地线四根线,而RS232最少也要TXD,RXD和地线三根线。所以与这些方式比,1-wire可以减少连线数目。而且1-wire也像USB或者I2C一样支持一条线上挂多个设备。其实其他公司也有类似的方式,只不过名字不一样。 我们的电脑不支持1-wire接口,所以为了连接电脑和1-wire设备,只好做一根线了。美信
[嵌入式]
关于USB接口的知识
   当初我在使用电脑的时候已经是属于比较晚的那类,所以刚开始接触和应用USB的时候就只觉得这个小小的东西挺神奇的,方便也简单,但是也许有些朋友并不是很了解关于USB接口的概念,那么我们就来说说。通俗地讲,USB就是一种外围设备与计算机主机相连的接口类型之一。除开USB接口外,还有如并行总线等接口.然而USB接口却有个极大的优点使得它在这个领域非常的普及,那就是具有这种接口的设备可以在电脑上即插即用(即插即用有时也叫热插拨)。   电脑开机的时候要先开外围设备再开主机电源,而关机时候的顺序恰好相反。之所以要遵循这种开机顺序,就是因为在电脑启动之前必须先让所有的外围设备的电源都打开做好准备,然后等待主机对这些设备逐一进行检查并安装相应
[嵌入式]
USB接口的光电隔离保护方案及其实现
  目前计算机的USB接口已经大量使用,一般每台电脑都有2到4个USB口。当一台电脑同时接多个USB外部设备时,如果这些外部设备介入了高电压干扰,就可能会烧坏电脑的USB口甚至电脑以及外设。目前电脑的几种通信接口中,MODEM口以及以太网接口由于本身具有变压器隔离所以不容易损坏,而RS-232串口也可以选用波仕的RS-232光电隔离器来进行有效的保护,只有USB以及类似的1394接口目前还没有方便的隔离保护方案。   实现原理   本文提供了一种对USB信号进行光电隔离的电路,可以使USB的接口得到保护。 图1为将USB信号(D+、D—)转换为光信号的原理框图。   USB信号检测电路   (1)将D+和D—变
[嵌入式]
汇编手记之数据通信
1,数的表示 在微型计算机中,运算分两类:一类是算术运算:包括加,减,乘,除。还有是逻辑运算:与,或,非,异或。事实上,计算机只懂加法运算,其它的都是在其基础上进行的。乘法是类似于累加,倍加一类概念的运算,同理,除法类似于累减,倍减。而对于更高级的运算,其本质还是量的增,减问题。这一点涉及哲学,牛顿在《自然哲学的数学原理》一书中详细的阐述了这一点的指导意义,就其本人,也是在几条哲学原理下开展他对自然科学的研究的。 群芳你说的原码,反码,补码,事实上是为了把减法引入微机运算做的一些概念而已。有些问题你可以试着和胡叶枫讨论,他对《自然哲学的数学原理》有一套自己研究。 要做运算,必须要有数,那么,计算机中的数是怎样表示的呢? 二,数
[单片机]
高速串行数据通信发送芯片CY7B923的原理及应用
    摘要: 文章介绍了CYPRESS半导体公司推出的一种用于点对点之间高速串行数据通信的发送芯片CY7B923的原理及应用。较详细的介绍了CY7B923的管脚功能、内部组成、工作原理及工作方式。同时给出了一个实际电路来说明其具体的应用方法。     关键词: 串行数据通信 CY7B923 IDT7200 基带传输 差分PECL输出 1 概述 CY7B923是CYPRESS半导体公司推出的一种用于点对点之间高速串行数据通信的发送芯片。CY7B923采用的是基带传输通信方式,并支持带电插拔(热接插)。其内部电路主要包括时钟产生器、输入寄存器、编码器、移位寄存器、三对差分PECL输出对以及测试逻辑等。该芯片
[网络通信]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved