您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 基于双C8051F020微控制器的应用系统
基于双C8051F020微控制器的应用系统张厚武,姚凯学(贵州大学计算机科学与技术学院,贵州贵阳550025)摘要:本文使用2片C8051F020微控制器,通过其自身的SMBus总线进行扩展,实现了多路模拟量和数字量的输入与输出的应用系统。应用系统使用了USB-UART桥接电路,实现了虚拟串口的USB传输。文中首先简要介绍了C8051F020MCU与CP2101桥接电路的特点,然后详细阐述了SMBus的总线协议,并说明了上下位机的通信协议以及两片下位机的基于SMBus的数据通信,最后给出了主下位机的程序流程图。关键词:应用系统;C8051F020;SMBus;串行通信;USB中文图书分类号:TP216文献标识码:BAApplicationSystemBasedOnDoubleC8051F020MCUZHANGHou-wu,YAOKai-xue(CollegeofComputerScience&Technology,GuizhouUniversity,Guiyang550025,China)Abstract:ThepaperimplementedaapplicationsystembasedondoubleC8051F020MCUwhosedatacommunicationwerecompletebySMBus,includingofmultiplechannelanaloginputanddigitalinput/output.UsingCP2101USB-UARTelectriccircuit,theapplicationsystemrealizedUSBtransferofvirtualserialport.ThepaperfirstintroducedC8051F020andCP2101’scharactersinbrief,thendetailedprotocolofSMBus,andexplainedcommunicationprotocolofmaster/slavecomputeranddatacommunicationoftwoC8051F020basedonSMBus,finallypresentedprogramflowchartforfirstslavecomputer.KeyWords:ApplicationSystem;C8051F020;SMBus;SerialCommunication;USB0引言由于MCU(微控制器)在可靠性、体积、功耗、性价比等方面都具有明显的优势,所以由其组成的上下位机形式的仪器(下位机部分),已经在许多工业控制和数据采集系统中得到广泛应用。在实际应用中,如果一片MCU芯片的功能不能满足实际需求时,就需要进行扩展。在本文中,我们使用两片C8051F020微控制器通过SMBus(SystemManagementBus)系统管理总线进行扩展,使其满足了15路模拟量输入(AD)、6数字量输入、2路开关量输出以及1路PWM波输出的设计要求。1系统硬件构成整个系统的装置示意图如图1所示。我们选择美国Silicon公司的微控制器(MCU)C8051F020(简称F020)作为应用系统的CPU。F020是一种混合信号SOC型8位单片机,它有一个8通道的、转换速率为100Kbps的12位ADC,以及一个8通道的、转换速率为500Kbps的8位ADC;2个12位DAC;64KBFlashRom,4KBRAM;有22个中断源和5个定时器/计数器;内部有两个增强型全双工UART、SPI总线和SMBus总线[1]。CP2101是美国Silicon公司推出的USB-UART桥接电路。该电路的集成度高,内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEPROM及异步串行数据总线(UART),支持调制解调器全功能信号,全部功能集成在一个5mm5mmIC中。在PC机上安装CP2101的驱动程序以后,CP2101就作为PC机的一个虚拟COM口(VCP),对它的操作与对PC机的COM口操作完全一样,因此无需修改现有的COM口应用就可以实现通过USB向基于CP2101的器件传输数据,保证了对已有的串口通讯程序的兼容。其数据传输的波特率范围为300b/s~921.6kb/s[2]。2SMBus总线SMBus总线标准最早由Intel公司于1995年发布,它以Philips公司的I2C总线为基础,面向于“不同系统组成芯片与系统其他部分间的通讯”[3]。SMBus接口的工作电压可以在(3.0~5.0)V之间,总线上不同器件的工作电压可以不同。SCL串行时钟线和SDA串行数据线是双向的,因此两条线上都需要上拉电阻或类似电路将它们连到电源电压,在没有数据传输时,两条线都处于高电平。典型的SMBus配置如图2所示。SMBus采用多种线路条件作为器件的握手信号。在一次数据传输过程中,SDA只能在SCL为低电平时改变。在SCL为高电平时,SDA发生改变则开始和停止信号。SMBus协议有两种可能的数据传输类型:从主发送器到所寻址的从接收器(写)和从被寻址的从发送器到主接收器(读)。这两种数据传输都由主器件启动,主器件还提供串行时钟。一次典型的SMBus数据传输包括一个起始条件(START)、一个地址字节(位7-1:7位从地址;位0:R/W方向位)、一个或多个字节的数据和一个停止条件(STOP)。每个接收的字节(由一个主器件或从器件)都必须用SCL高电平期间的SDA低电平来确认(ACK)。如果接收器件不确认,则发送器件将读到一个“非确认”(NACK),这用SCL高电平期间的SDA高电平表示。所有的数据传输都由主器件启动,可以寻址一个或多个目标从器件。主器件产生一个起始条件,然后发送地址和方向位。在数据传输结束时,主器件产生一个停止条件,结束数据交换并释放总线。图3示出了一次典型的SMBus数据传输过程[1]。开关量输出模拟量输入C8051F020主下位机(1)C8051F020从下位机(2)模拟量输入数字量输入PC机(上位机)PWM图1系统硬件构成示意图SDASLAVDDCP2101USB口UARTSDASCL主器件从器件1从器件2图2典型的SMBus配置VDD=5VVDD=3VVDD=5VVDD=3V3系统通信的设计系统的任务主要对模拟量进行AD转换,对数字量进行计数,并将这些数据最终要传给上位微机进行显示与数据处理,上位机根据其处理结果控制PWM波的频率及占空比。3.1上下位机的数据通信[4-5]由于我们使用了USB-UART桥接电路CP2101,因而上下位机的程序仍是按照UART形式编写。为保证双方传输的数据准确可靠,程序中使用软件握手:上位机首先给下位机传波特率参数,其值为600H,300H,180H,C0H,60H,0CH之一,下位机对收到波特率参数进行验证,如果为其中之一,则发送字节AAH给上位机,并更新下位机波特率,反之认为是噪声干扰,丢弃此数据,再重新等待接收。上位机收到AAH字节后,就更新新的波特率,然后向下位机发送控制命令子,如采样通道选择,单端方式还是差分方式,开关量的状态,采样周期和采样时间等,以及是否要求从下位机工作,如果要求从下位机工作,还要正确建立主从下位机的通信,之后再向上位机发应答字节55H。协议还采用超时重发功能,可自动连接5次。3.2主从下位机的SMBus通信[6]为使SMBus通信程序便于编写,我们规定第1片为主片,第二片为从片。SMBus的工作由下列寄存器中的内容决定:状态寄存器(SMB0STA)、控制寄存器(SMB0CN)、地址寄存器(SMB0ADR)和数据寄存器(SMB0DAT)。要通过SMBus通讯协议实现两片芯片之间的数据通信,关键在于如何利用单片机中的状态寄存器中的状态码,通过软件编程来实现对状态码的查询。每一个状态码都对应一个当前的通信状态和将要执行的操作,因此,根据所得到的状态码来确定当前的通信状态,以实现相互间的通信。在编程时,SMBus通信协议是利用中断查询状态码的方式实现的,为使双方的通信可靠,也规定了软件握手:初始化后,从片等待主片的命令字节33H,从片收到33H后给主片发CCH应答字节,主片收到CCH字节后,根据上位机要求给从片发送相应的命令字节(采样周期,采样时间,采样通道,开关量状态等),然后发送BBH字节个主片,并启动相应AD转换,主片收到BB后才进行AD转换,保证主片与从片对模拟量的同步采样。4系统软件设计考虑到系统灵活性,我们编程使得通道选择、采样时间、采样周期、数字量输入、开关量的控制、PWM波的频率及占空比、从下位机的工作情况等由用户在上位机上指定,然后以命令字传给下位机,具体为:用4个字节分别表示两片MCU的AD通道是否被选中,每个字节位上为1表示该通道被选中,否则不选该通道。用3个字节存放采样周期,其最小单位为10微妙,5个字节存放采样时间,一个字节用于开关量,2个字节用于存放PWM波的频率,2个字节用于存放占空比值,1个字节用于表示数字量输入是否被选中。对于输入的数字量,输入是涡轮流量计来的脉冲,输入脉冲数的确定是采样引脚电SCLSDASTARTSLA6SLA5-0R/WD7D6-0ACK从地址+R/W数据字节NACKSTOP图3一次典型的SMBus数据传输过程平变化的方法来确定的。为保证小流量时的精度,按4秒钟所计脉冲数,通过其转换关系来确定流量。其中引脚电平采样的时间设为100微妙。为减轻下位机的任务,其采集的原始数据直接送给上位机进行处理,保证下位机有高的采样速率和高的传输速率。图4给出了下位机主片的工作流程图。5结束语我们使用了自身带有AD转换电路及SMBus通信总线接口C8051F020微控制器,实现了两片MCU之间数据的高速可靠的数据通信。而且还使用了USB-UART桥接电路,保证了下位机与上位机有高的数据传输率。并且,在上位机软件设计时考虑到应用系统的通用性,可根据实际需求选用不同的传感器,并在上位机上进行相应的选择,就能得到所需的测量数据及曲线,使得该应用系统有较强的通用性。参考文献:[1]潘琢金,施国君.C8051FXXX高速SOC单片机原理及应用.北京:北京航空航天大学出版社,2002.[2]CP2101数据手册.[3]谢瑞和.串行技术大全.北京:清华大学出版社,2003.4.[4]陈建平,姚凯学,等.通用动态测试系统的设计与实现.贵州大学学报(自然科学版),2004,21(1):79-82.[5]范逸之陈立元.VisualBasic与RS-232串行通信控制[M],北京:中国青年出版社,2002.[6]王力,王开和,等.基于C8051F的SMBus实现多点测温系统.天津科技大学学报,2004,19(3):39-41.本文由教育部“春晖计划”项目资助(编号:Z2005-152014)作者简介:张厚武,(1972-)男,贵州省安顺市人,贵州大学计算机科学与技术学院讲师,硕士,研究方向为计算机智能控制技术,嵌入式应用系统;姚凯学,(1961-)男,贵州省贵阳市人,贵软件复位收到波特率参数?YN以查询方式对所选择通道进行采样采样周期到?把采集的数据送NYYN采集数据传送完?把采集的数据送Y开始、初始化接收命令参数从片工作?主从片通信成功?软件复位NYY设定采样周期、采样时间、采样通道、开关量、PWM等参数、设置从片工作参数有数据要传?上位机(1个字节)以SMBus接受从片采样数据采样时间到?上位机(1个字节)N图3主下位机工作流程图州大学计算机科学与技术学院教授,研究方向为计算机智能控制技术、过程控制、嵌入式应用系统。联系电话:张厚武:13608560545编辑老师,电子文档已通过Email发出,如有问题请直接与我联系:Email:zhanghale163@163.com通信地址:贵州大学计算机科学与技术学院邮政编码:550025
本文标题:基于双C8051F020微控制器的应用系统
链接地址:https://www.777doc.com/doc-2574371 .html