基于usb接口的单片机与pc机通信学位论文.docx

上传人:b****8 文档编号:9884715 上传时间:2023-05-21 格式:DOCX 页数:31 大小:400.28KB
下载 相关 举报
基于usb接口的单片机与pc机通信学位论文.docx_第1页
第1页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第2页
第2页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第3页
第3页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第4页
第4页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第5页
第5页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第6页
第6页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第7页
第7页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第8页
第8页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第9页
第9页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第10页
第10页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第11页
第11页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第12页
第12页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第13页
第13页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第14页
第14页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第15页
第15页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第16页
第16页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第17页
第17页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第18页
第18页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第19页
第19页 / 共31页
基于usb接口的单片机与pc机通信学位论文.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于usb接口的单片机与pc机通信学位论文.docx

《基于usb接口的单片机与pc机通信学位论文.docx》由会员分享,可在线阅读,更多相关《基于usb接口的单片机与pc机通信学位论文.docx(31页珍藏版)》请在冰点文库上搜索。

基于usb接口的单片机与pc机通信学位论文.docx

基于usb接口的单片机与pc机通信学位论文

基于USB接口的单片机与PC机通信

 

摘要:

安装USB设备不需要用户自己设置硬件与软件的选项,USB接口的传输速度要比计算机传统的串行口和并口快的多,所以USB设备已经广泛应用。

由于协议的复杂性,在系统中实现USB主机功能的实例还不是很多。

因此本文没有从复杂的USB总线协议入手,而是选择了南京沁恒公司出产的USB接口芯片CH375。

其具有内置固件模式和可编程的2311外部固件模式,可以根据需要任意选择工作模式。

关键词:

单片机;CH375;USB;协议

 

TheDesignofthecommunicationbetweenMCUandPCwhichis

basedonUSBinterface

Abstract:

USBdevicedoesnotrequireuserstoinstalltheirownsetofhardwareandsoftwareoptions,andcomputertransmissionspeedfasterthanthetraditionalserialandparallelport,soUSBdeviceshavebeenwidelyused.Becauseofthecomplexityoftheagreement,inthesystemofUSBhostfunctionrealizationexampleisnotalot.ThereforethisarticledoesnotstartingwiththecomplexUSBagreement,butchosetheUSBinterfacechipCH375whichproducedbyNanjingQinHengcompany,theirmodelhasabuilt-infirmwareandfirmwareprogrammableof2311externalmodel,wecanchoosethemodeofoperationwithaneedforarbitrary.

Keywords:

SingleChipMicrocontroller;CH375;USB;Agreement

目录

1前言1

1.1题目的来源与开发意义1

1.2系统功能概述1

2系统硬件设计2

2.1方案论证2

2.2系统硬件总体设计概述2

2.3系统功能概述3

2.4系统各模块的设计4

2.4.1单片机控制系统4

2.4.2USB接口模块6

3系统软件设计11

3.1系统软件总体设计思想11

3.2各功能模块软件程序设计11

4系统调试16

4.1硬件电路调试16

4.2各功能模块软件调试16

5结论18

参考文献19

致谢20

 

1前言

1.1题目的来源与开发意义

USB的低功耗,可靠性,价位低等优点,在人们日常生活中应用越来越广泛,各种各样的USB产品应运而升[1],并且随着技术的发展,USB的版本以发展到了3.0,传输速度也更快,更强,更稳定。

而单片机以其良好的普及性,易用性,稳定的控制性不断的出现在我们生活中的各个角落,并且一发不可收拾[2]。

电子应用中数据传输占了很大一部分。

我把这几项当前技术融合在一起进行开发,实现可携带的支持计算机热插拔的单片机与PC机之间的数据传输。

1.2系统功能概述

单片机与计算机之间的通信功能实现,这里应用了由南京沁恒公司生产的CH375芯片作为单片机与计算机USB接口芯片[3]。

使用10位的AD串行AD芯片TLC1549进行电压采集,使用电位器来模拟传感器。

本次设计主要利用STC89C52RC单片机作为主要核心模块,利用C51语言行控制,以C语言作为整合的开发环境,可大大缩短软件设计时间。

上位机采用的是VC++在VisualStudio2010上编写的一个简单的控制台程序,USB驱动采用了沁恒公司的通用CH375驱动软件。

通过键盘给上位机(PC)输入不同的命令可以控制下位机(单片机)的三个不同颜色的LED。

同时单片机向PC发送采集到的电压值。

这里支持计算机热插拔,挟带方便,设备占用空间小,低功耗是本设计的创新之处,而且相应的CH375接口模块成了印刷式电路板,为以后学习和开发计算机与单片机通过U口传输数据的同学提供了便捷的硬件环境。

 

2系统硬件设计

 

2.1方案论证

方案一:

有关USB控制芯片很多但主要有两个来源,一个是CypressSemiconductor,另一个是ScanLogic。

我们可以选择市面比较通用的CypresssenCoRe控制器芯片CY4C63743,此芯片电路设计起来比较容易。

但此芯片需要固件支持。

En指令相对简单,可以使用汇编语言编译器来实现,但固件编程相对繁琐,而且CY4C63743结和了单片机与USB数据传输的功能相对开发需要了解内部的时续与中断控制,类似于嵌入了USB功能的单片机。

方案二:

用南京沁恒公司的CH375芯片,需要外接微控制器,电路稍微麻烦一点,但是我的设计只需要用到USB设备模式一块,而我们可以让CH375工作在内置固件下,我们减轻了单片机方面的固件编写负担,只需按要求让单片机将要发送的数据传给CH375即可,CH375自行与PC进行数据交换,这同样节省了对复杂协议的学习时间。

而单片机更可以选择STC系列的51单片机,这种单片机可以通过串口在线编程,方便开发。

由此可见方案二更有效。

2.2系统硬件总体设计概述

硬件设计相应的分两个模块,一方面是控制模块由宏晶生产的STC系列的51单片机为核心的单片机做控制;另一方面由CH375做为USB的通信接口芯片的接口模块。

控制模块中主要用到了STC89C52单片机,其中的P0口与CH375的数据并口相连,所以P0口必须接10K的上拉电阻,在控制模块上有一个与通信接口模块相连的插座,共16个引脚其具体对应了控制模块与通信接口模块之间的GND,相应的复位引脚,还有与CH375并口模式相对应的控制,数据引脚A0,WR,RD,CS,INT,D0-D7。

TLC1549与单片机通信是串行模式,所以只需占用单片机的三个IO口。

使用LED来显示PC上的命令信息。

通信接口模块分两个部分一个是与PC机相连的CH375部分,一个是单片机控制部分。

为了方便开发,单片机单独供电,而没有与USB模块共用PC上的USB电源。

为了保护AD芯片,设计了AD输入保护。

电路在防止干扰方面,在每个芯片的电源端添加了去耦电容。

如图2.1为硬件实物图

图2.1硬件实物

2.3系统功能概述

如图2.2为系统框图

 

图2.2系统框图

该设计实现单片机端通过AD模块采集数据经USB接口模块发送到PC机的界面上显示,同时PC机端也可通过按键控制单片机端的LED亮灭,实现双向通信。

具体工作流程:

首先进行各个模块初始化,然后在PC机端发送一个数据包,长度为64,单片机端接收到这个数据包,根据数据包的内容来控制LED灯的暗灭,接着AD模块采集数据,这里的数据是电压值,可传送2.50到5.00伏的电压值,单片机端接收到AD模块采集的数据,再通过USB通信接口模块传输到电脑上显示出来。

 

2.4系统各模块的设计

2.4.1单片机控制系统

如图2.3为单片机控制模块

图2.3单片机控制模块

STC89C52RC单片机作为硬件的核心处理器,它的工作电路分为三部分:

晶振电路、复位电路、电源电路。

晶振为CPU提供工作需要的高频率、高精确的时钟;复位电路在芯片在上电复位或者手动复位时引导程序从地址00H开始执行;而电源电路为芯片提供稳定且噪声低的直流电源。

1控制模块原理

由图2.2的系统总框图可以看出,单片机直接控制CH375,向其发送数据或者读取数据。

单片机与CH375采取系统总线接口,数据线为P0口,地址线为P0口(低位)和P2口(高位)。

在电路中P0口连接CH375的8位并行数据接口,P2口只接了P2.0和P2.6,所以在发送地址的时候只有这两位有效,其他的地址线全部无效(这样接主要是为了简化电路)。

通信前需要对USB初始化,具体过程如下:

单片机通过上面的数据总线,先CMD_CHECK_EXIST这个测试命令,然后发送0x55再读取数据,若读取的数据是~0x55则说明芯片正常工作,否则将对CH375进行多次重复发命令(80次),执行硬件复位。

确定芯片正常工作后就对芯片设置USB工作模式,这里的02H表示启用的设备方式并且使用内置固件模式。

设置模式成功后,单片机将在10到20us内读取到CMD_RET_SUCCESS信号以确定CH375已经就绪。

最后,单片机进行外部中断0的初始化,以保证CH375收到数据后能向单片机发送中断信号。

单片机的对CH375进行读写数据都是在外部中断0的中断服务程序里面执行的。

进入中断后,首先关闭总中断,防止在中断重入。

然后发送CMD_GET_STATUS命令来读取中断状态,然后分别对三种不同的中断状态进行处理。

其中在USB_INT_EP2_OUT状态下先读取数据包,然后AD采集数据并发送数据包。

最后重新开启外部中断0,退出中断服务,等待下一次中断。

P0口作为与CH375交流数据,命令的通信并口,INT0作为中断服务程序中断接口其他端口如图接,也可以选择其他单片机端口。

2高速串行AD芯片TLC1549

TLC1549是美国德州仪器公司(以下简称TI)的一款高速串行的10位AD芯片。

它采用简单的S通信,只使占用单片机的三根IO口,如图2.4

图2.4AD模块

从图2.4可以看出,TLC1549工作电路非常简单,而不像一般AD芯片需要接上配对的电阻、电容以及晶振才能保证稳定的工作,只需接上电源和一个103的去耦电容即能工作。

在此基础上,本设计添加了AD输入保护电路。

保护电路是由两个二极管构成,如图所示,在AD输入电压超出5V或者低于0V的时候,二极管导通,使电压调整到正常范围,这样就保护了AD输入,防止芯片因此损坏。

 

2.4.2USB接口模块

CH375与USB连接及自身管脚连接具体如图2.5所示。

图2.5USB接口模块图

J2是一个USB接口,与电脑相连接,J1是一个双排针左边是通信的端口与单片机的P0口连接,通过这个排针可以和单片机的各个引脚相连。

1USB的简介

USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。

不过直到近期,它才得到广泛地应用。

从1994年11月11日发表了USBV0.7版本以后,USB版本经历了多年的发展,到现在已经发展为2.0版本,成为目前电脑中的标准扩展接口。

USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。

USB接口支持设备的即插即用和热插拔功能。

USB接口可用于连接多达127种外设,如鼠标、调制解调器和键盘等。

USB自从1996年推出后,已成功替代串口和并口,并成为当今个人电脑和大量智能设备的必配的接口之一。

USB2.0有高速、全速和低速三种工作速度,高速是480Mbit/s,全速是12Mbit/s,低速是1.5Mbit/s。

其中全速和低速是为兼容USB1.1而设计的,因此选购USB产品时不能只听商家宣传USB2.0,还要搞清楚是高速、全速还是低速设备。

USB总线是一种单向总线,主控制器在PC机上,USB设备不能主动与PC机通信。

 

2CH375芯片简介

CH375是一个USB总线的通用接口芯片,支持USB-HOST主机和DEVICE/SLAVE从机两种工作模式。

本设计使用的是从机模式与PC进修双向通行。

USB-DEVICE/SLAVE设备方式。

在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。

CH375的USB设备方式与CH372芯片完全兼容,CH375包含了CH372的全部功能。

CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备通讯。

CH375还内置了处理Mass-Storage海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。

CH375硬件连接大致框如图2.6

图2.6系统总体框图

CH375芯片特点:

1.低速和全速USB-HOST主机接口,兼容USBV2.0,外围元器件只需要晶体和电容。

2.低速和全速USB设备接口,完全兼容CH372芯片,支持动态切换主机与设备方式。

3.主机端点输入和输出缓冲区各64字节,支持12Mbps全速USB设备和1.5Mbps低速设备。

4.支持USB设备的控制传输、批量传输、中断传输。

5.自动检测USB设备的连接和断开,提供设备连接和断开的事件通知。

6.内置控制传输的协议处理器,简化常用的控制传输。

7.内置固件处理海量存储设备的专用通讯协议,支持Bulk-Only传输协议和SCSI、UFI、RBC或等效命令集的USB存储设备(包括USB硬盘/USB闪存盘/U盘/USB读卡器)。

8.通过U盘文件级子程序库实现单片机读写USB存储设备中的文件。

9.并行接口包含8位数据总线,4线控制:

读选通、写选通、片选输入、中断输出。

10.串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。

引脚如图2.7

图2.7引脚图

引脚含义如表2.2

表2.2引脚含义表

引脚号

引脚名称

类型

引脚说明

28

VCC

电源

正电源输入端,需要外接0.1uF电源退耦电容

12-23

GND

电源

公共接地端,需要连接USB总线的地线

9

V3

电源

在3.3V电源电压时连接VCC输入外部电源,

在5V电源电压时外接容量为0.01uF退耦电容

13

XI

输入

晶体振荡的输入端,需要外接晶体及振荡电容

14

XO

输出

晶体振荡的反相输出端,需要外接晶体及振荡电容

10

UD+

双向三态

USB总线的D+数据线,内置可控的上拉电阻

11

UD-

双向三态

USB总线的D-数据线

22~15

D7~D0

双向三态

8位双向数据总线,内置上拉电阻

4

RD#

输入

读选通输入,低电平有效,内置上拉电

3

WR#

输入

写选通输入,低电平有效,内置上拉电阻

27

CS#

输入

片选控制输入,低电平有效,内置上拉电阻

1

INT#

输出

在复位完成后为中断请求输出,低电平有效

8

A0

输入

地址线输入,区分命令口与数据口,内置上拉电阻,

当A0=1时可以写命令,当A0=0时可以读写数据

24

ACT#

输出

在内置固件的USB设备方式下是USB设备配置完成状态输出,低电平有效。

对于CH375A芯片,在USB主机方式下是USB设备连接状态输出,低电平有效

5

TXD

输出

仅用于USB主机方式,设备方式只支持并口,在复位期间为输入引脚,内置上拉电阻,如果在复位期间输入低电平那么使能并口,否则使能串口,复位完成后为串行数据输出

6

RXD

输入

串行数据输入,内置上拉电阻

2

RSTI

输入

外部复位输入,高电平有效,内置下拉电阻

25

RST

输出

电源上电复位和外部复位输出,高电平有效

26

RST#

输出

电源上电复位和外部复位输出,低电平有效

7

NC.

空脚

空脚,必须悬空

命令

命令是CH375与单片机进行联络的核心,芯片内部的USB通行协议都要通过命令来实现,所以了解了CH375的命令就如同在8051中的C51语言,所以这部分很重要。

代码

命令名称

输入数据

输出数据

命令用途

06H

RESET_ALL

(等40mS)

执行硬件复位

06H

CHECK_EXIST

任意数

按位取反

测试工作状态

15H

SET_USB_MODE

模式代码

(等20uS)操作状态

设置USB工作模式

22H

GET_STATUS

中断状态

获取中断状态并取消请求

02H

SET_BAUDRATE

分频系数

(等1mS)

操作状态

设置串口通讯波特率

分频常数

28H

RD_USB_DATA

数据长度

从当前USB中断的

端点缓冲区读取数据块

数据流

2BH

WR_USB_DATA7

数据长度

向USB主机端点的

输出缓冲区写入数据块

数据流

各命令意义如表2.3

表2.3命令含义表

中断原因如表2.4

表2.4中断状态表

中断状态字节

名称

中断状态分析说明

位7~位4

位3~位2

位1~位0

(保留位)

当前事务

当前端点

总是0000

00=OUT事务

00=端点0

10=IN事务

01=端点1

11=SETUP事务

10=端点2

11=USB总线复位

表2.5是中断状态的分析说明。

在内置固件模式的USB设备方式下,单片机只需要处理表中标注为灰色的中断状态,CH372内部自动处理了其它中断状态。

表2.5中断状态表

中断状态值

状态名称

中断原因分析说明

01H

USB_INT_EP1_OUT

辅助端点/端点1接收到数据,OUT成功

09H

USB_INT_EP1_IN

中断端点/端点1发送完数据,IN成功

02H

USB_INT_EP2_OUT

批量端点/端点2接收到数据,OUT成功

0AH

USB_INT_EP2_IN

批量端点/端点2发送完数据,IN成功

05H

USB_INT_USB_SUSPEND

USB总线挂起事件(如果已CHK_SUSPEND)

06H

USB_INT_WAKE_UP

从睡眠中被唤醒事件(如果已ENTER_SLEEP)

功能说明

CH375芯片可以工作于USB-HOST主机方式或者USB设备方式。

CH375的USB设备方式与CH372芯片完全兼容,CH375的USB主机方式支持并行接口和串行接口,本设计使用的是并行接口。

在USB主机方式下,CH375支持各种常用的USB全速设备,外部单片机需要编写固件程序按照相应的USB协议与USB设备通讯。

但是对于USB存储设备,CH375内置了相关协议,通常情况下,外部单片机不需要编写固件程序,就可以直接通讯。

CH375工作在并口,设备模式下(毕业设计相应的主要应用就是这类模式,就稍详细介绍这部分,而串口模式只工作在主机模式下不详细介绍了)

硬件连接

CH375芯片占用两个地址位,当A0引脚为高电平时选择命令端口,可以写入新的命令,或者读出中断标志;当A0引脚为低电平时选择数据端口,可以读写数据。

下表为并口I/O操作的真值表(表中X代表不关心此位,Z代表CH372三态禁止)。

表2.6并口I/O操作的真值表

CS#

WR#

RD#

A0

D7-D0

对CH372芯片的实际操作

1

X

X

X

X/Z

未选中CH372,不进行任何操作

0

1

1

X

X/Z

虽然选中但无操作,不进行任何操作

0

0

1/X

1

输入

向CH372的命令端口写入命令码

0

0

1/X

0

输入

向CH372的数据端口写入数据

0

1

0

0

输出

从CH372的数据端口读出数据

0

1

0

1

输出

从CH372B的命令端口读取中断标志,

位7等效于INT#引脚

3上位机功能介绍

设置发送的第一个字节为0X21为约定命令,若接收方收到的不是0X21,则为错误数据,从新请求发送。

在通信的过程中,采取了半双工的通信模式。

上位机、下位机轮流发送64个字节的数据。

在本设计的实际使用中,只使用了3到5个字节,其他的字节都为无效信息。

在上位机上实现了显示下位机采集的数据信息,同时,上位机发送控制信息,下位机使用了LED来模拟控制。

上位机界面如图2.8

图2.8上位机软件界面

3系统软件设计

3.1系统软件总体设计思想

本系统软件设计分两部分,下位机部分和上位机部分。

下位机部分应用的是C51语言。

上位机界面图形编辑用的是VC++。

单片机负责通过CH375上传数据,PC通过VC++程序调用USB驱动程序,查询动态链接库的数据信息,上传的数据存储在动态链接库中。

这样最终的上传数据经VC++显示在PC上。

3.2各功能模块软件程序设计

下位机模块软件程序设计

AD采集数据的流程图3.1

 

图3.1AD采集数据的流程图

具体程序如下:

/*********************************************************************/

unsignedintAD_Change(void)//TLC549驱动程序

{

unsignedinti,temp=0;

AD_In=0;

_nop_();

_nop_();

CS=0;

_nop_();

_nop_();

_nop_();

_nop_();

if(AD_Out==1)

temp+=1;

for(i=0;i<10;i++)

{

AD_In=1;

_nop_();

_nop_();

AD_In=0;

_nop_();

_nop_();

if(i!

=9)

{

temp=temp<<1;

if(AD_Out==1)temp+=1;

}

}

CS=1;

returntemp;

}

 

CH375发送数据部分流程如图3.2

图3.2CH375发送数据流程图

中断程序如下:

/*****************************************************************************************/

voidmCh375Interrupt()interrupt0using1//CH375中断服务程序,使用寄存器组1

{

unsignedcharInterruptStatus;

unsignedchari,length;

unsignedcharxdatabuffer[64];//64字节的缓冲区存放数据

EA=0;

CH375_WR_CMD_PORT(CMD_GET_STATUS);//获取中断状态并取消中断请求

InterruptStatus=CH375_RD_DAT_PORT();//

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2