实现系统运行的最小功耗是现代电子系统的普通取向,也是绿色电子的基本要求。采有最小功耗设计方法既能减少电子设备的使用功耗,又能减少备用状态下的功率消耗。在节省能源的同时还有利于减少电磁污染,有利于电子系统向便携式方向发展,有助于提高系统的可靠性。
现代工业生产和科学研究对数据采集的要求日益提高。在许多场合要求数据采集系统向便携化方向发展,要求系统具有体积小、功耗低、传输速率快、使用方便灵活等特点。在数据采集系统中,如何节省电能以使系统工作时间更长,如何通信才能使系统数据传输速度更快,已经成为系统开发过程中必须加以考虑的主要内容。
微控制器MSP430的超低功耗技术在众多单片机中独树一帜,同时它具有集成高度等特点,因此,选用该控制器作为系统的主控制器,实现数据采集和Flash存储等功能。此外,USB端口与以往的普通端口(串口与并口)相比具有传输速度快、功耗低、支持即插即用、维护方便等优点;因此在通信设计时,结合UART转USB芯片CP2101以实现USB接口通信。上述设计既利用了MSP430的超低功耗特性,又利用了CP2101设计USB接口的简便性,设计得到的数据采集系统可以实现便携化、低功耗、使用方便等目标。
1 MSP430数据采集系统的USB接口设计
1.1 采信系统简介
本系统实现多路数据的采集、Flash存储及USB通信等功能。单片机系统主要完成信息采集、A/D转换、对信号进行放大滤波处理、数据通信、Flash存储等;实时时钟记录采集数据的时间;CP2101实现USB接口,并把单片机采集到的信号传给微机;微机完成数据接收、存入数据库、数据处理、计算、显示等功能。
1.2 超低功耗MSP430微控制器
MSP430是TI公司近几年推出的16位系列单片机。它采用最新的低功耗技术,工作在1.8~3.6V电压下,有正常工作模式(AM)和4种低功耗工作模式(LPM1、LPM2、LPM3、LPM4);在电流电压为3V时,各种模式的工作电流分别为AM:340μA、LPM1:70μA、LPM2:17μA、LPM3:2μA、LPM4:0.1μA,而且可以方便地在各种工作模式之间切换。它的赶低功耗性在实际应用中,尤其是电池供电的便携式设备中表现尤为突出。在系统初始化后进入待机模式,当有允许的中断请求时,CPU将在6μ的时间内被唤醒,进入活动模式,执行中断服务程序。执行完毕,在RETI指令之后,系统返回到中断前的状态,继续低功耗模式。
1.3 USB接口芯片选型
通用串行总线USB是由Intel等厂商制定的连接计算机与具有USB接口的多种外设之间通信的串行总线。传统上,USB接口的开发较为复杂。在同其它USB接口芯片相比较之后,本设计选择了无需外部元件的UART转USB芯片CP2101。选择这种接口芯片,可使USB通信接口设计变得十分容易。与同类产品相比,CP2101具有以下优点:
①具有较小的封装。CP2101为28脚5mm×5mm MLP封装。这在PCB上的尺寸就比竞争对手小30%左右。
②高度成度。片内集成512字节EEOROM(用于存储厂家ID等数据),片内集成收发器、无需外部电阻;片内集成时钟,无需外部晶体。
③低成本,可实现USB转串口的解决方案。CP2101的USB功能无需外部元件,而大多数竞争者的USB器件则需要额外的终端晶体管、上拉电阻、晶振和EEPROM。具有竞争力的器件价格,简化的外围电路,无成本驱动支持使得CP2101在成本上的优势远超过竞争者的解决方案。
④具有低功耗、高速度的特性,符合USB2.0规范,适合于所有的UART接口(波特率为300bps~921.6kbps)。工业级温度范围为-40℃~85℃)。
2 USB通信的硬件接口电路
硬件电路如图1所示。CP2101的SUSPEND与SUSPEND引脚接到MSP430F13X的普通串口上。这两个引脚传送USB挂起和恢复信号,此功能便于CP2101器件以及外部电路的电源管理。当在总线上检测到挂起信号时,CP2101将进入挂起模式,可以节省电能。在进入挂起模式时,CP2101会发出SUSPEND与SUSPEND信号。为了避免SUSPEND与SUSPEND在复位期间处于高电平,使用10kΩ的下拉电阻确保SUSPEND在复位期间处于低电平。
CP2101的USB功能控制器管理USB和UART间所有的数据传输,以及由USB主控制器发出的命令请求以及用于控制UART功能的命令等。CP2101的UART接口处理所有的RS232信号,包括控制和握手信号。CP2101的VBUS与VREGIN引脚必须始终连到USB的VBUS信号上。在VREGIN的输入端加去耦电容(1μF与0.1μF并联)。CP2101与单片机接口是标准UART电平,与计算的USB端口连接是USB标准电路,因此,无论与3V还是5V供电的单片机连接都不需要电平转换。
3 USB通信接口的软件程序设计
USB接口程序设计包括三部分:单片机程序开发、USB设备驱动程序开发、主机应用程序开发。三者互相配置才能完成可靠、快速的数据传输。其中USB设备驱动程序Cygnal公司已经提供。这里所要编写的是剩下的两部分。一部分为单片机MSP430F13X的串行通信程序,即对波特率、数据位、校验位、有无奇偶校验等通信协议的设计及单片机串行通信功能控制器的设置;另一部分为主机对CP2101的通信程序,这部分要在VC++环境中调用API函数实现。
3.1 单片机程序设计
在IAR Embedded Workbench嵌入式集成开发环境中,编写单片机通信程序,可实现在线编辑修改。MSP430的内核CPU结构是按照精简指令集和高透明指令的宗旨来设计的,使用的指令有硬件执行的内核指令和基于现有硬件结构的高效率的仿真指令。以下为系统发送数据的部分应用程序(包括初始化及触发UART端口程序):
#include "msp430x13x.h"
/*************************串口*************************/
void send_byte(char sdata){
TXBUF0=sdata; /*发送数据缓存(UTXBUF0)*/
while(IFG1 & TUXIFG0)==0);/*目的操作数位测试,发送中断标志*/
}
/*************************main*************************/
void main (void){
char a;
uint a=0x0055;
WDTCTL=WDTPW+WDTHOLD;/*停看门狗,WDTCTL看门狗寄存器*/
UCTL0=CHAR;/*8位接收控制寄存器URCTL线路空闲u24322异步u26080无反馈8位1位停止位u26080无校验位*/
UTCTL0=SSEL0;/*发送控制寄存器UTCTL0,UCLK=ACLK时钟*/
UBR00=0x0D;/*32Kb/2400b=13.65,波特率选择寄存器*/
UBR10=0x00;/*高字节*/
UMCTL0=0x6B; /*调节*/
ME1|=UTXE0+URXE0;
/*开USART0 TXD/RXD接收/发送允许*/
IE1|=URXIF0;/*打开USART0 RX接收中断允许位*/
P3SEL|=0x30;/*P3.4,5=USART0 TXD/RXD,选择外围模块功能*/
P3DIR|=0x10;/*目标操作数置位,P3.4=1,输出模式*/
_EINT();/*开中断*/
//主循环
for(;;)
{send_byet(a++);}
}
3.2 USB设备驱动程序的安装
当把开发板接到主机的USB端口时系统会提示发现新硬件,并要求安装驱动程序:
先安装CP2101的驱动程序CP2101_Drivers.exe到C:Filesto RS-232 Bridge Controller.
完成上面两步的安装后,在系统的设备管理器中会看见CP2101虚拟的那个COM口。在以后的设计中就是对这个口进行操作。此时可能应用串口调试助手调试下位机程序,接收发送数据。
3.3 主机应用程序设计
主机应用程序的编写使用VC++编译环境中的API(应用程序设计接口)函数实现。应用程序的设计方法与串口编程类似。首先必须查找设备并打开设备的句柄,然后进行读写和控制操作,最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。具体步骤如下:
①把CP2101的动态链接库CP2101.DLL文件拷贝到,或者路径下。当程序运行时就能调用CP2101.DLL。
②在visual studio6.0中打开CP2101SetIDs.dsw,选择Release或者Debug建立CP2101.EXE工程文件。
③在VC++6.0中链接CP2101.LIB,这时就可以应用CP2101的动态链接库了。
④在VC++里进行编程,用API功能函数对USB堆栈、CP2101的EEPROM及数据传输的通信协议等进行编程。
当数据传输完毕时,应用CP2101_Close()函数关闭设备句柄。可以根据实际应用修改CP2101的VID和PID,并用相应函数写进CP2101的EEPROM中。但须注意的是,修改后要用CP2101_Rest()函数使CP2101复位并重新安装驱动程序。
4 结论
通过试验证明,本设计能够很好地完成USB通信,达到了预期的目的。应用超低功耗MSP430微控制器与CP2101实现USB通信接口设计,具有体积小、功耗低、开发简单、可靠性高、移植性强等特点。在此基础上开发的低功耗数据采集系统具有很大的优越性。这种设计可以加以推广应用到其它便携式设备开发中。