发布: 2009-4-04 21:39 | 作者: 张厚武,姚凯学 | 来源: 贵州大学学报(自然科学版) | 查看: 11次
0 引言
B?ic/b44606由于MCU(微控制器)在可靠性、体积、功耗、性价比等方面都具有明显的优势,所以由其组成的上下位机形式的仪器(下位机部分),已经在许多工业控制和数据采集系统中得到广泛应用。在实际应用中,如果一片MCU芯片的功能不能满足实际需求时,就需要进行扩展。在本文中,我们使用两片C8051F020微控制器通过SMBus(System Management Bus)系统管理总线进行扩展,使其满足了15路模拟量输入(AD)、6数字量输入、2路开关量输出以及1路PWM波输出的设计要求。
Vt;r8y5WL i6]K44606电子园51单片机学习网!vx Do f
1 系统硬件构成
yEd1z V.n6w5{,W44606整个系统的装置示意图如图1所示。我们选择美国Silicon公司的微控制器(MCU)C8051F020(简称F020)作为应用系统的CPU。F020是一种混合信号SOC型8位单片机,它有一个8通道的、转换速率为100Kbps的12位ADC,以及一个8通道的、转换速率为500Kbps的8位ADC;2个12位DAC;64KB FlashRom,4KB RAM;有22个中断源和5个定时器/计数器;内部有两个增强型全双工UART、SPI总线和SMBus总线[1]。
(_"z\C ew{9]W44606CP2101是美国Silicon公司推出的USB-UART桥接电路。该电路的集成度高,内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEPROM及异步串行数据总线(UART),支持调制解调器全功能信号,全部功能集成在一个5mm ′5mm IC中。
4Hc0mzq@Ry44606电子园51单片机学习网r;j9@ h8M#Q
图2 典型的SMBus配置电子园51单片机学习网3X/_rO,b@r
电子园51单片机学习网+Qd2kN:L)Yv
在PC机上安装CP2101的驱动程序以后,CP2101就作为PC机的一个虚拟 COM 口 (VCP),对它的操作与对PC机的COM口操作完全一样,因此无需修改现有的 COM 口应用就可以实现通过 USB 向基于CP2101 的器件传输数据,保证了对已有的串口通讯程序的兼容。其数据传输的波特率范围为300b/s~921.6kb/s[2]。
/c&D(@+IcU3@[44606电子园51单片机学习网 Nsz,H+{1Q
2 SMBus总线
!u#i'e Z5VA U44606SMBus总线标准最早由Intel公司于1995年发布,它以Philips公司的I2C总线为基础,面向于“不同系统组成芯片与系统其他部分间的通讯”[3]。SMBus接口的工作电压可以在(3.0~5.0)V之间,总线上不同器件的工作电压可以不同。SCL串行时钟线和SDA串行数据线是双向的,因此两条线上都需要上拉电阻或类似电路将它们连到电源电压,在没有数据传输时,两条线都处于高电平。典型的SMBus配置如图2所示。SMBus采用多种线路条件作为器件的握手信号。在一次数据传输过程中,SDA只能在SCL为低电平时改变。在SCL为高电平时,SDA发生改变则开始和停止信号。电子园51单片机学习网_K)C@ KZ!xV?
图3 一次典型的SMBus数据传输过程电子园51单片机学习网*Q0I0c2B Q v-QS;re5R
SMBus协议有两种可能的数据传输类型:从主发送器到所寻址的从接收器(写)和从被寻址的从发送器到主接收器(读)。这两种数据传输都由主器件启动,主器件还提供串行时钟。一次典型的SMBus数据传输包括一个起始条件(START)、一个地址字节(位7-1:7 位从地址;位0:R/W 方向位)、一个或多个字节的数据和一个停止条件(STOP)。每个接收的字节(由一个主器件或从器件)都必须用SCL高电平期间的SDA低电平来确认(ACK)。如果接收器件不确认,则发送器件将读到一个“非确认”(NACK),这用SCL 高电平期间的SDA高电平表示。
JM-\B DA+j?#aX44606所有的数据传输都由主器件启动,可以寻址一个或多个目标从器件。主器件产生一个起始条件,然后发送地址和方向位。在数据传输结束时,主器件产生一个停止条件,结束数据交换并释放总线。图3示出了一次典型的SMBus数据传输过程[1]。
%h G,VNge;dp44606
电子园51单片机学习网a#`uK"hNYi
kMb9z*N"{)t-T8UX446063系统通信的设计
F4gM d8x.b)T0\:t44606系统的任务主要对模拟量进行AD转换,对数字量进行计数,并将这些数据最终要传给上位微机进行显示与数据处理,上位机根据其处理结果控制PWM波的频率及占空比。电子园51单片机学习网{@1?3Y T6P;li
5B@'\.@ Rz;h7D446063.1 上下位机的数据通信[4-5]
,T!R%Vu;Uq@9G'o3fI ` }44606电子园51单片机学习网5c h3ye Wm由于我们使用了USB-UART桥接电路CP2101,因而上下位机的程序仍是按照UART形式编写。为保证双方传输的数据准确可靠,程序中使用软件握手:上位机首先给下位机传波特率参数,其值为600H,300H,180H,C0H,60H,0CH之一,下位机对收到波特率参数进行验证,如果为其中之一,则发送字节AAH给上位机,并更新下位机波特率,反之认为是噪声干扰,丢弃此数据,再重新等待接收。上位机收到AAH字节后,就更新新的波特率,然后向下位机发送控制命令子,如采样通道选择,单端方式还是差分方式,开关量的状态,采样周期和采样时间等,以及是否要求从下位机工作,如果要求从下位机工作,还要正确建立主从下位机的通信,之后再向上位机发应答字节55H。协议还采用超时重发功能,可自动连接5次。电子园51单片机学习网k,O0OR/l_w
3.2 主从下位机的SMBus通信[6]
gf3S,m/L U:rQ44606为使SMBus通信程序便于编写,我们规定第1片为主片,第二片为从片。SMBus的工作由下列寄存器中的内容决定:状态寄存器(SMB0STA)、控制寄存器 (SMB0CN)、地址寄存器(SMB0ADR)和数据寄存器(SMB0DAT)。要通过SMBus通讯协议实现两片芯片之间的数据通信,关键在于如何利用单片机中的状态寄存器中的状态码,通过软件编程来实现对状态码的查询。每一个状态码都对应一个当前的通信状态和将要执行的操作,因此,根据所得到的状态码来确定当前的通信状态,以实现相互间的通信。
Yp.CB0a(x SNer(HV44606$v(mKRm x44606在编程时,SMBus通信协议是利用中断查询状态码的方式实现的,为使双方的通信可靠,也规定了软件握手:初始化后,从片等待主片的命令字节33H,从片收到33H后给主片发CCH应答字节,主片收到CCH字节后,根据上位机要求给从片发送相应的命令字节(采样周期,采样时间,采样通道,开关量状态等),然后发送BBH字节个主片,并启动相应AD转换,主片收到BB后才进行AD转换,保证主片与从片对模拟量的同步采样。
9T*W1B;|oS44606电子园51单片机学习网)m0vb-e4o
电子园51单片机学习网+zX;PMR4系统软件设计电子园51单片机学习网8L }yd7u_#N/\X
考虑到系统灵活性,我们编程使得通道选择、采样时间、采样周期、数字量输入、开关量的控制、PWM波的频率及占空比、从下位机的工作情况等由用户在上位机上指定,然后以命令字传给下位机,具体为:用4个字节分别表示两片MCU的AD通道是否被选中,每个字节位上为1表示该通道被选中,否则不选该通道。用3个字节存放采样周期,其最小单位为10微妙,5个字节存放采样时间,一个字节用于开关量,2个字节用于存放PWM波的频率,2个字节用于存放占空比值,1个字节用于表示数字量输入是否被选中。对于输入的数字量,输入是涡轮流量计来的脉冲,输入脉冲数的确定是采样引脚电平变化的方法来确定的。为保证小流量时的精度,按4秒钟所计脉冲数,通过其转换关系来确定流量。其中引脚电平采样的时间设为100微妙。电子园51单片机学习网^wY1dP
为减轻下位机的任务,其采集的原始数据直接送给上位机进行处理,保证下位机有高的采样速率和高的传输速率。图4给出了下位机主片的工作流程图。
3n)nK0Nk|B2k(^~7L44606M;s ioi44606
5 结束语电子园51单片机学习网#yT*{0r"s&\1J(BV_ [
我们使用了自身带有AD转换电路及SMBus通信总线接口C8051F020微控制器,实现了两片MCU之间数据的高速可靠的数据通信。而且还使用了USB-UART桥接电路,保证了下位机与上位机有高的数据传输率。并且,在上位机软件设计时考虑到应用系统的通用性,可根据实际需求选用不同的传感器,并在上位机上进行相应的选择,就能得到所需的测量数据及曲线,使得该应用系统有较强的通用性。
"u3}9gjYr44606电子园51单片机学习网1O6wZ"ia%v r_C参考文献:电子园51单片机学习网lcpF^v6E
SE9@5iL44606[1] 潘琢金,施国君. C8051FXXX高速SOC单片机原理及应用. 北京:北京航空航天大学出版社,2002.电子园51单片机学习网5S4}GhFO)k
SB.^)YED44606[2] CP2101数据手册. http://www.xhl.com.cn电子园51单片机学习网&?F+nUW`,_#I&g&Q'g)~
电子园51单片机学习网$V-CdoO8Mv EA#YH5y8S/xhl/downfile/CP210x.pdf.
*^6D?-]@?F(I `4c;z44606UKFmho44606[3]谢瑞和.串行技术大全.北京:清华大学出版社,2003.4 .
){!` B'u`/E44606[4] 陈建平,姚凯学,等. 通用动态测试系统的设计与实现. 贵州大学学报(自然科学版), 2004,电子园51单片机学习网/tvS1nTt
21(1):79-82.电子园51单片机学习网r2s*l/p\1F_]G _
[5] 范逸之 陈立元. Visual Basic 与RS-232串行通信控制[M],北京:中国青年出版社,2002.电子园51单片机学习网T@aH#[|
[6] 王力,王开和,等. 基于C8051F的SMBus实现多点测温系统. 天津科技大学学报,2004,19(3):电子园51单片机学习网 H} _$`A%y|;WU
39-41.电子园51单片机学习网ZP`e%h$wa,@[ e
文章评论(0条评论)
登录后参与讨论