半导体温度控制仪软硬件设计.doc_第1页
半导体温度控制仪软硬件设计.doc_第2页
半导体温度控制仪软硬件设计.doc_第3页
半导体温度控制仪软硬件设计.doc_第4页
半导体温度控制仪软硬件设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

半导体温度控制仪软硬件设计1.1系统的性能要求及特点1.1.1功能要求半导体温度控制仪应能达到以下功能要求:(1)可以人为方便地设定所需控制的温度值,温控仪器能自动将电炉加热至此设定值并能保持,直至重新设定为另一温度值; (2)能够单独实现测量电炉温度的作用;(3)整套仪器可靠性好,设计不易出故障;(4)具有自动加热保护功能的安全性要求。如果实际测得的温度值超过了系统要求的温度范围,单片机就会发出指令,从而进行超温或者降温保护;(5)能够实现系统软件的在线升级,无需对温控仪拆卸即可完成软件的升级及在线调试;(6)尽量采用典型、通用的器件,一旦损坏,易于在市场上买到同样零部件进行替换。1.1.2系统特点基于上述功能要求及智能仪表应具有的体积小、成本低、功能强、抗干扰并尽可能达到更高精度的要求。本系统在硬件设计方面具有如下特点:本温度控制仪的面板设计遵循简洁实用的原则,为便于使用人员的操作,系统采用了非固定键值意义的状态键盘,一键多用。系统软件可根据当前所处状态,自动确定键值的具体含义。以往单片机系统在软件升级及故障调试时,必须将CPU芯片从系统板上拆下来进行软件固化。针对这种弊端,系统硬件设计时预留有程序下载接口,可以在不拆下CPU芯片的情况下直接进行软件升级和在系统调试,以方便日后的软件维护和功能调试。整个系统遵循了冗余原则及以软代硬的原则,并尽可能选用典型、常用、易于替换的芯片和电路,为系统的开放性、标准化和模块化打下良好基础。系统扩展和配置在满足功能要求的基础上留有适当裕量,以利于扩充和修改1718。1.2系统的硬件总体结构 半导体温度控制仪的硬件电路主要由单片机系统、温度采样电路、温度设定电路、比例积分电路、TEC驱动电路、报警电路、键盘显示电路以及接口电路组成。温度采样电路包括温度传感器、信号放大电路以及A/D转换电路。温度传感器采集来的信号经信号放大电路放大后,经过A/D转换后送单片机作处理。经过单片机分析后,进行相应的处理,发出控制信号通过驱动电路控制TEC加热或制冷。蜂鸣器的设置是为了给温度控制仪器增加双保险,当单片机驱动电路升/降温失败,超过预定的温度就将报警提醒。键盘显示是用户与温控仪交互的界面。用户通过键盘对温控仪进行操作,通过显示得到温控仪的状态以及温控结果。整个系统是在单片机的控制下运行的。同时单片机也可以通过接口电路与上位机通讯。系统的原理框图如图3-1所示。 图3-1 系统原理框图1.3 单片机系统 1.3.1单片机的选择在系统的设计中,选择合适的系统核心器件就成为能否成功完成设计任务的关键,而作为控制系统核心的单片机的选择更是重中之重。目前各半导体公司、电气商都向市场上推出了形形色色的单片机,并提供了良好的开发环境。选择好合适的单片机可以最大地简化单片机应用系统,而且功能优异,可靠性好,成本低廉,具有较强的竞争力。目前,市面上的单片机不仅种类繁多,而且在性能方面也各有所长。一般来说,选择单片机需要考虑以下几个方面:(1)单片机的基本性能参数。例如指令执行速度,程序存储器容量,I/O引脚数量等。(2)单片机的增强功能。例如看门狗、多指针、双串口等。(3)单片机的存储介质。对于程序存储器来说,Flash存储器和OTP(一次性可编程)存储器相比较,最好是Flash存储器。(4)芯片的封装形式。如DIP(双列直插)封装,PLCC(PLCC有对应插座)封装及表面贴附等。(5)芯片工作温度范围符合工业级、军工级还是商业级。如果设计户外产品,必须选用工业级。(6)芯片的功耗。比如设计并口加密狗时,信号线取电只能提供几mA的电流,选用STC单片机就是因为它能满足低功耗的要求。(7)供货渠道是否畅通、价格是否低廉。(8)技术支持网站的速度如何,资料是否丰富。包括芯片手册,应用指南,设计方案,范例程序等。(9)芯片保密性能好、单片机的抗干扰性能好。图 3-2 STC89C52芯片引脚及功能STC89系列单片机是MCS-51系列单片机的派生产品。它在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。根据本系统的实际情况,选择STC89C52单片机,引脚见图3-2。1.3.2 存储器芯片的选择本系统需要的存储容量不大,且要求存储器要具有掉电不丢失的特点,增加外部存储器既增加系统的体积,又增大系统的功耗,所以最好能用一片高速的串行存储器来存储数据。综合以上因素,对比国内市场土的非易失性存储器,而24C08EEPROM存储器芯片以其优越的表现进入我们的视线。24C08存储器具有容量较大、功耗低、体积小的突出优点,而且其性价很高,因此我们决定选用24C08 EEPROM存储器芯片做为系统的数据存储器。1.3.3 单片机IO口扩展及外部存储器电路由于液晶显示和USB芯片需要大量的IO口,所以采用一片8255来进行IO口扩展。8255是单片机应用系统中广泛采用的可编程外部IO口,扩展芯片。它有3个8位并行IO口,每个口可以有3种工作方式。其中的WR是写信号输入端,RD是读信号输入端,A1A0用于决定端口的地址。单片机系统及外部存储器电路如图3-3所示19。 图3-3 单片机系统电路图1.4 USB数据传输接口电路USB接口是近年来应用在PC领域的新型接口技术,它基于单一的总线接口技术来满足多种应用领域的需求。它的即插即用、支持热插拔、易于扩展等特性极大的方便了用户的使用,使其成为开发虚拟仪器接口的首选,具有极好的应用前景。图3-4 PDIUSBD12芯片功能方框图在进行任何USB设备开发之前,首先应选择适合的USB控制器芯片。目前市场上供应的USB控制器主要有两种:带USB接口的单片机和纯粹的USB接口芯片。带USB接口的单片机从应用上可分为两类:一类是从底层设计专用于USB控制的单片机;另一类是增加了USB接口的普通单片机,选择这类USB控制器的最大好处是开发者对系统结构和指令集非常熟悉,开发工具简单,但对于简单或低成本系统,价格高将会是最大的障碍。纯粹的USB接口芯片仅处理USB通信,必须有个外部微处理器来进行协议处理和数据交换。纯粹的USB接口芯片主要特点是价格便宜、接口方便、可靠性强,尤其适用于产品的改型设计。典型的产品有Philips公司的PDIUSBD11/12、NS公司的USBN9603/9604(并行接口)、NetChip公司的NET2888。这里选择功能强大、支持总线供电和设备自供电两种方式的PDIUSBD12作为接口芯片来设计USBS设备接口,功能模块见图3-4。PDIUSBD12是PHILIPS在USB1.1协议设备端使用最多的芯片之一,此芯片是带有并行总线和局部DMA传输能力的全速USB接口器件。片内集成了高性能的USB接口器件、SIE、FIFO存储器以及电压调整器等,可与任何外部微控制器/微处理器实现高速并行接口。图3-5 USB接口电路图PDIUSBD12是一款性价比很高的USB器件,它采用28PIN脚模式,有SO28和TSSOP28封装,SIE实现了全部的USB协议层,且完全由硬件实现而不需要固件的参与。其具体功能如下:同步方式识别、并/串转换、比特填充/解填充、CRC校验/生成、PID确认/生成、地址识别和握手信号的鉴定/生成、批处理数据传输可达1MB/s,30.3V双极性输入范围,可接受4.55.5V工作电压、工业级标准工作环境温度范围为-40+85。利用该芯片可以高效地完成微控制器所送出的信号到USB规范的信号的转换。而本设计所需要的USB接口芯片需要纯粹的USB接口芯片,而且要求带有并行总线,价格便宜、接口方便以适合做课题设计用,而PDIUSBD12芯片正是一款合适的USB接口芯片,则本系统选择了PDIUSBD12芯片进行设计。图3-5为USB接口电路图。1.5 温度获取与采样电路3.5.1温度传感器信号采集放大电路 图3-6 信号放大电路图当受控对象温度发生变化时,铂电阻的阻值随之发生变化。在电路中表现为铂电阻两端的电压发生变化。因此,我们只需采集铂电阻两端的电压变化情况即可推算出温度的变化。但由于铂电阻的温度系数比较小,铂电阻两端的电压变化情况不会很明显。所以在电路中我们使用放大电路将铂电阻两端电压放大后进行处理。温度传感器信号采集放大电路如图3-6所示。电路中,铂电阻两端的电压 (3-1) 把公式(2-7)代入得 (3-2)1.5.2 A/D的选择传感器信号经采集放大后,仍是模拟信号,单片机不能直接处理。因此需要A/D转换电路将模拟信号转换成数字信号,以便单片机对温度采样值进行显示和存储。半导体温度控制仪温控精度为0.2,因此采样温度的分辨率不能低于0.2,对应的电压为0.0008V。因此所选用的A/D位数n应该满足2.5/2n0.0008,即n11.6。在本系统A/D转换芯片选用ADS8321。ADS8321是一种高速、低功耗的16位串行逐次逼近型A/D转换芯片。其转换速率最大可达到100KHz。其电路连接简单,由于采用串行结构,可以较少地占用单片机资源。A/D转换的电路原理图如图3-7所示。 图3-7 ADC8321转换电路图其中,基准电压使用的是2.5V基准电压源,片选和时钟信号由单片机给出。输出数字信号与输入模拟信号的关系如表3-1所示。表中的输入指的是+IN和-IN两管脚之间的电压差。由于电路采用的是单端输入,其负输入端接固定电压2.5V,所以其输入电压范围为0-5V。1.6 温度设定电路1.6.1 D/A转换电路根据资源合理利用的原则,D/A芯片选择8571,它为宽工作电压,单输出通道,串行接口16位D/A转换器,性能稳定,价格便宜。D/A转换电路的作用是将设定的温度值转换成模拟电压。电路原理图如图3-8所示。在本系统中使用16位串行D/A转换器。其输出电压可由下式确定 图3-8 DA8571电路图 (3-4)其中D为数字量输入,N为16。1.6.2差分放大电路在本系统中,对温度的控制不是根据设定的温度值,而是根据设定值与采样值的偏差,当偏差大于0时加热,反之制冷。因此需要一个差分放大电路来求出这个偏差。差分放大电路的原理图如图3-9所示22。根据基本的电路分析理论,我们可知输入与输出之间存在如下的关系 (3-5)理想情况下,若电路对称,即满足R4/R1=R2/R3时,有:UOUT=USET-UTH。可见,此时输出电压取决于两个输入电压之差,与输入电压的大小无关。通常为了减小失调,要求从集成运放的正负端看到的外界电路平衡对称,即R1/R4=R2/R3,通常取R1=R2=R3=R4。但在实际应用中,由于电路不完全对称或运算放大器有一定的共模增益,其输出含有一部分的共模增益。为了减少温度比较电路受共模增益的影响,在电路设计和调试中,应使用共模抑制比(Common-Mode Rejection Radio简称CMRR)较大的运算放大器;此外,在选择4个电阻时,应通过手工筛选的方法找出电阻值相近的电阻器来构成温度比较电路。 图3-9 差分放大电路1.6.3 比例积分控制电路经过第2章的分析,本系统采用PID控制方法。对于实际温控系统而言,给定值r(t)指用户设定的预置温度;c(t)被控量的输出值,即温控仪温控面的温度;u(t)为控制信号量;被控对象是指半导体致冷器及其驱动部分;反馈部件指温度采样部分。由温度是相对变化较缓慢的物理量,因此只采用比例积分控制环节。本文中使用了运算放大器和分立式元件构成了比例积分控制系统。比例控制的实现由两种方法,一种是串联负反馈法,一种是并联负反馈法。我们采用了并联反馈的方法,反馈信号为电流量。电路由比例、积分电路组合而成,见图3-10。这种组合方式避免了误差级间放大,保证了温控系统的精度。 图3-10 比例控制电路我们可以将温控系统的比例积分控制器看作是具有粗调的比例作用与微调的积分作用的组合。比例控制部分可以实现对大的偏差信号的快速响应,积分控制部分可以实现对系统静差的消除,以保持系统良好的静态精度。通过比例积分控制可以实现对温度的高精度稳恒控制。1.7半导体制冷器驱动电路要想半导体制冷器能够正常工作,首先必须保证驱动电路能够提供足够大的功率。这就需要功率放大电路。常用的功率放大电路主要有OCL(Output Capacitorless)、OTL(Output Transformerless)和BTL(Balanced Transformerless)三种形式。OCL和OTL两种功放电路的效率很高,但是他们的缺点就是电源的利用率都不高,其主要原因是在一个周期内每只三集管只工作半个周期,使电源也只能在半个周期内供电,从而造成能量的闲置。在这里我们采用BTL功率放大电路。BTL和OCL、OTL相比电路的理想转换效率不变,仍为78.5%,但是电源利用率却提高了4倍,即在使用较低电源电压供电情况下,使负载获得较大功率20。此外由第二章我们对半导体制冷器工作原理的分析可知,对半导体制冷器的驱动需要为半导体制冷器提供一个大小、方向可调节的电流,通过调整电流的大小来调整半导体制冷器制冷制热的强度,通过调整电流的方向实现加热和制冷的转换。在BTL功放电路前面加上一个由同相放大器和反相放大器并联组成的电压转换电路就可以方便的实现上述要求。电路图如图3-11所示。整个电路采用的是对称的结构,U11A和U11B分别接成同相放大器和反向放大器,放大倍数均为;Q1Q4选用相同参数的场效应管,跨导为gm;电阻的阻值均为R;ZD1、ZD2为稳压管,其稳压值为Uz,正向导通时压降为UD。图3-11 驱动电路图当输入端的信号为正时,运放U3A的输出为正,U3B的输出为负,场效应管Q1、Q3导通,Q2、Q4截止,电流从TEC的“+”端流向“-”端;当输入端信号为负时,运放U3A的输出为负,U3B的输出为正,场效应管Q2、Q4导通,Q1、Q3截止,电流从TEC的“-”端流向“+”端。实现了对通过TEC电流方向的控制。通过电路理论可以推导出通过半导体制冷器的电流I与输入电压Utw的关系 (3-6)其中,RTEC为TEC的电阻。由式(3-6)可以看出,I与Utw呈线性关系,实现了通过调节输入信号来改变TEC电流大小的功能。1.8显示键盘电路及其它电路图3-12 按键电路图键盘是人机对话的设备,借助键盘可向系统设置参数,发出控制指令等。在本系统中,键盘由六个按键组成,即上、下、左、右、ENTER键及驱动键。其中前五个键用于设定温度和温度上下限,后一个键为驱动键,按下一次时温控仪开始驱动TEC工作,再按一次时停止驱动。由于键的数量不是很多,而且系统采用了8255进行IO扩展,故采用按键与单片机的I/0口线直接连接的方法构成,其连接电路见图3-12。 图3-13 液晶显示电路系统的显示采用1602液晶,显示温度采样值和温度设定值,连接如图3-13。同时,还有两个个发光二极管作为指示灯用来指示温控仪的工作状态。在整个系统中,各个元件都有各自的工作电压范围,考虑到系统的成本和易于管理,在本系统中采用9V转成各个芯片都可以正常工作的5V供电,见图3-14。 图3-14 电源及状态显示电路 第2章 半导体温度控制仪软件设计软件设计中一个重要的思想就是采用模块化设计,把一个大的任务分解成若干个小任务,分别编制实现这些小任务的子程序,然后将子程序按照总体要求组装起来,就可以实现这个大任务了。这种思路对于可重复使用的子程序显得尤为优越,因为不仅程序结构清晰,而节约程序存储空间。根据系统设计要求,软件设计采用了结构程序模块化设计。半导体温度控制仪的软件系统包括下位机程序和上位机程序两部分。下位机程序又包括主程序、液晶显示子程序、报警程序、状态显示程序、按键扫描程序、AD转换子程序和DA转换子程序等几个模块。系统采用了三个LED指示灯来对系统状态进行显示。同时,在AD采样过程中还加入了报警功能,当采样温度连续超出设定的温度范围时就报警并停止对TEC的驱动,增强了对被控元件的保护。上位机程序主要是通过USB口实现对温控仪的控制,并且可以接收下位机的数据并显示温度曲线。 2.1 下位机程序图4-1所示的是系统总流程图。系统启动后,首先系统初始化,然后液晶初始化 ,进入主程序后进行按键扫描,液晶显示,USB通信等程序。2.1.1主程序单片机上电或复位时,首先进入主程序。主程序包括对系统的初始化,调用AD子程序,和判断是否有异常报警等。初始化程序主要是对I/O口、定时器、串行口以及全局变量的初始化。经过初始化程序之后,系统的各个部分准备就绪,可以进入工作状态。对AD子程序的调用是根据AD采样标志位进行的,AD采样标志位的设置在定时器中断中完成,即每隔一段时间进行一次AD采样。异常报警也是根据报警标志位进行的,对报警标志位的设置在AD采样子程序中完成。2.1.2中断服务及按键程序在本系统中,用到了4个中断,即定时器中断,串行口中断,外部中断0和外部中断1。定时器中断实现了AD转换的定时采样、光标闪烁、显示刷新等功能。其中AD转换时间间隔为200ms;光标一秒钟闪烁一次。这样做的目的是为了节省硬件资源。 图4-1 程序流程图串行口中断实现了与上位机的通讯,包括接收中断和发送中断。接收中断主要是接收上位机的命令,然后调用相应的程序,命令的意义如表4-1所示。发送中断是向上位机发送当前温度采样值,每个温度值包括3个字节,按高位、地位、符号位顺序发送。表4-1 双机通讯命令及含义命令含义0xb0接收上位机的设定温度值,开始驱动TEC工作0xc0停止驱动TEC0xd0开始向上位机发送数据0xe0停止发送数据按键扫描用于实现上下左右键及ENTER键的功能。当上述任何一个按键被按下时,都将产生低电平。此时程序首先进行防抖动处理,然后判断是哪一个按键。如果是左移右移键,则将光标向相应的方向移动。如果是上下键,则将光标所在位相应的加1或减1。若是enter键,则相应的改变温控仪的设定状态并输入保存数据。第一次按下enter键,系统进入设定温度状态,光标闪烁;第二次按下enter键,保存设定的温度值,并调用DA转换子程序进行DA转换,系统进入设定温度上限状态;第三次按下enter键,保存温度上限,进入设定温度下限状态;第四次按下enter键,光标停止闪烁,系统恢复工作状态。外部中断1实现了驱动键的功能。按下一次驱动键时,驱动指示灯亮,系统驱动TEC加热或制冷;再次按下驱动键时,停止驱动,指示灯灭。2.1.3显示子程序 1602液晶模块内部的控制器共有11条控制指令,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 ,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表4-2是1602的内部显示地址,显示的时候为该地址加0X80。 表4-2 1602内部地址 LCD16字*2行000102030405060708090A0B0C0D0E0F404142434445464748494A4B4C4D4E4F 程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY,然后输入显示位置的地址,最后输入要显示的字符和数据,液晶显示程序见附录。2.1.4 A/D转换子程序 图4-2 ADS8321时序图在A/D转换子程序中,首先完成的是对A/D转换芯片的驱动,将模拟电压转换成数字量。ADS8321是串行AD,它的采样是按照时钟进行的。片选被选通时,前六个时钟周期是A/D芯片的启动位,没有数字信号输出;接下来一个时钟周期输出一位数字信号,总共是16位;最后是3位停止位,一次采样结束。A/D转换的时序关系如图4-2所示。在采样过程中,为了防止脉冲干扰和随机干扰,对采样结果进行了数字滤波,采集N个数据,去掉最小值和最大值然后求余下的N-2个数的平均值。这种方法计算方便、速度快、需要的存储量小,适合单片机系统。经过上述处理之后,我们得到了一个与电压值对应的数字量D,根据ADS8321的输入输出关系可以得到数字量D与温度采样值t的对应关系见式子4-1。(4-1)2.1.5 D/A转换子程序DAC8571采取IC总线完成规定的数据传送操作。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器,又是发送器,这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。 I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。图4-3为I2C总线时序图。D/A转换子程序的功能是将温度设定值转换成与电压值对应的数字量,然后驱动DA将此数字量转换成模拟量。可以得到与的关系 (4-2) 图4-3 I2C总线时序图2.2 上位机程序 上位机通过USB与下位机通讯的程序界面如图4-4所示。设定好温度值后,选择开始驱动,上位机将温度值和命令发送给下位机,下位机便进行相应的操作。驱动程序的开发使用的是WDM设备驱动程序开发平台。WDM(Windows driver model)是微软为开发人员提供的一种编写运行在Windows平台下新硬件驱动程序的有效方法,即所谓的Windows驱动程序模型。WDM提供了设备类(device classes),由此形成的源代码可以运行在各类Windows平台:Win XP/2000/Me/98。 图4-4 上位机软件对温度曲线的实时显示是通过程序中的画图模块实现的。该模块将采集的数据描绘成曲线,同时每采一组新的数据就将曲线平移一次,实现了动态显示的效果。由于采样数据的精度以及采样速率的影响,使用描点法描绘出来曲线经常有阶梯式的跳跃变化。而实际上温度的变化应该是连续平缓的。为了使曲线更平滑更接近真实的温度曲线,在模块中对图像进行了滤波,即每画一个点时,采用相邻的三个点的平均值代替。经处理后的曲线变得平滑22。2.3 USB通信子程序2.3.1 USB固件编程描述图4-5 PDIUSBD12固件编程循环结构要实现单片机和上位机的通信,就要对芯片PDIUSBD12进行固件编程,固件设计的目标就是使PDIUSBD12在USB上达到最大的传输速率。PDIUSBD12的固件设计成完全的中断驱动,当CPU 处理前台任务时USB 的传输可在后台进行,这就确保了最佳的传输速率和更好的软件结构同时简化了编程和调试。后台ISR 中断服务程序和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现,例如PDIUSBD12的批量输出端点可使用循环的数据缓冲区。当PDIUSBD12从USB收到一个数据包,那么就对CPU 产生一个中断请求CPU立即响应中断,在ISR中固件将数据包从PDIUSBD12 内部缓冲区移到循环数据缓冲区,并在随后清零PDIUSBD12 的内部缓冲区以使能接收新的数据包。CPU可以继续它当前的前台任务然后返回到主循环检查循环缓冲区内是否有新的数据并开始其它的前台任务。由于这种结构主循环不关心数据是来自USB串口还是并口,它只检查循环缓冲区内需要处理的新数据,这个概念很重要。这样主循环程序专注于数据的处理而ISR 能够以最大可能的速度进行数据的传输。相似的,控制端点在数据包处理时采用了同样的概念。ISR接收和保存数据缓冲区中的控制传输并设置相应的标志寄存器,主循环向协议处理程序发出请求。由于所有的标准器件,级别和厂商请求都是在协议处理程序中进行处理,ISR得以保持它的效率,而且一旦增加新的请求只需要在协议层进行修改。2.3.2 USB固件结构PDIUSBD12的固件结构为积木式如下23:图4-6 PDIUSBD12的积木式固件结构各模块程序的分工如下: 硬件提取层:对单片机的I/O口、数据总线等硬件接口进行操作。 PDIUSBD12命令接口:对PDIUSBD12器件进行操作的模块子程序集。 中断服务程序:当PDIUSBD12向单片机发出中断请求时,读取PDIUSBD12的中传输来的数据,并设定事件标志“EPPFLAGS”和Setup包数据缓冲“CONROL_XFER”传输给主循环程序。标准请求处理程序:对USB的标准设备请求进行处理。厂商请求处理程序:对用户添加的厂商请求进行处理。主循环程序:发送USB请求、处理USB总线事件和用户功能处理等。USB单片机控制程序通常由三部分组成:第一、初始化单片机和所有的外围电路,包括PDIUSBD12 ;第二、主循环部分,其任务是可以中断的;第三、中断服务程序,其任务是对时间敏感的,必须马上执行。根据USB协议,任何传输都是由主机host开始的,这样单片机作它的前台工作等待中断主机。首先要发令牌包给USB设备,这里是PDIUSBD12。PDIUSBD12接收到令牌包后就给单片机发中断,单片机进入中断服务程序,首先读PDIUSBD12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作。因此,USB单片机程序要就是中断服务程序的编写。在USB单片机程序中要完成对各种令牌包的响应,其中比较难处理的是SETUP包,主要是端口0的编程。单片机与PDIUSBD12 的通信主要是靠单片机给PDIUSBD12发命令和数据来实现的。PDIUSBD12的命令字分为三种:初始化命令字、数据流命令字和通用命令字。PDIUSBD12给出了各种命令的代码和地址。单片机先给PDIUSBD12的命令地址发命令,根据不同命令的要求再发送或读出不同的数据。因此可以将每种命令做成函数,用函数实现各个命令以后直接调用函数即可26。在编写USB 的单片机程序时需要注意1、单片机的中断应设置为电平触发中断后,一定要读上次传输状态寄存器命令(40-45H),以清除中断寄存器中的中断标志。这样PDIUSBD12的中断输出才能变回高电平。这一点非常重要。2、在接收到Setup包后,一定要调用ACK setup命令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论