基于双C8051F020微控制器的应用系统
0 引言
由于MCU(微控制器)在可靠性、体积、功耗、性价比等方面都具有明显的优势,所以由其组成的上下位机形式的仪器(下位机部分),已经在许多工业控制和数据采集系统中得到广泛应用。在实际应用中,如果一片MCU芯片的功能不能满足实际需求时,就需要进行扩展。在本文中,我们使用两片C8051F020微控制器通过SMBus(System Management Bus)系统管理总线进行扩展,使其满足了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;64KB FlashRom,4KB RAM;有22个中断源和5个定时器/计数器;内部有两个增强型全双工UART、SPI总线和SMBus总线[1]。
CP2101是美国Silicon公司推出的USB-UART桥接电路。该电路的集成度高,内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEPROM及异步串行数据总线(UART),支持调制解调器全功能信号,全部功能集成在一个5mm ′5mm IC中。
图2典型的SMBus配置
在PC机上安装CP2101的驱动程序以后,CP2101就作为PC机的一个虚拟 COM 口 (VCP),对它的操作与对PC机的COM口操作完全一样,因此无需修改现有的 COM 口应用就可以实现通过 USB 向基于CP2101 的器件传输数据,保证了对已有的串口通讯程序的兼容。其数据传输的波特率范围为300b/s~921.6kb/s[2]。
2 SMBus总线
SMBus总线标准最早由Intel公司于1995年发布,它以Philips公司的I2C总线为基础,面向于“不同系统组成芯片与系统其他部分间的通讯”[3]。SMBus接口的工作电压可以在(3.0~5.0)V之间,总线上不同器件的工作电压可以不同。SCL串行时钟线和SDA串行数据线是双向的,因此两条线上都需要上拉电阻或类似电路将它们连到电源电压,在没有数据传输时,两条线都处于高电平。典型的SMBus配置如图2所示。SMBus采用多种线路条件作为器件的握手信号。在一次数据传输过程中,SDA只能在SCL为低电平时改变。在SCL为高电平时,SDA发生改变则开始和停止信号。
图3一次典型的SMBus数据传输过程
SMBus协议有两种可能的数据传输类型:从主发送器到所寻址的从接收器(写)和从被寻址的从发送器到主接收器(读)。这两种数据传输都由主器件启动,主器件还提供串行时钟。一次典型的SMBus数据传输包括一个起始条件(START)、一个地址字节(位7-1:7 位从地址;位0:R/W 方向位)、一个或多个字节的数据和一个停止条件(STOP)。每个接收的字节(由一个主器件或从器件)都必须用SCL高电平期间的SDA低电平来确认(ACK)。如果接收器件不确认,则发送器件将读到一个“非确认”(NACK),这用SCL 高电平期间的SDA高电平表示。
所有的数据传输都由主器件启动,可以寻址一个或多个目标从器件。主器件产生一个起始条件,然后发送地址和方向位。在数据传输结束时,主器件产生一个停止条件,结束数据交换并释放总线。图3示出了一次典型的SMBus数据传输过程[1]。
3 系统通信的设计
系统的任务主要对模拟量进行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通讯协议实现两片芯片之间的数
应用系统 C8051F020 SMBus 串行通信 USB 相关文章:
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 单片机应用系统的主要干扰形式(12-02)
- 单片机应用系统的抗干扰方法(12-02)
- 单片机应用系统设计步骤(12-02)
- 单片机应用系统硬件电路设计参考(11-28)
- ARM应用系统开发详解:第1章 ARM微处理器概述(11-20)