基于VC实现MSP430与PC之间的异步串行通信
扫描二维码
随时随地手机看文章
摘 要: 提出了一种基于Visual C++的MSP430单片机与PC之间进行串行通信的实现方法,给出了硬件电路图和通信源程序。调试实验表明,该硬件设计与软件开发达到了预期的功能要求。
关键词: MSP430;串行通信;Visual C++
随着单片机技术的发展,MSP430单片机在工业控制系统中对温度、压力和流量等参数进行监测和控制的应用越来越多。PC具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC的RS-232串行接口与外部设备进行通信是许多测控系统中常用的通信解决方法。它不仅利用了单片机实时控制的特点还充分发挥了PC运算能力强和存储容量大的优势。在日常应用中通常需要进行大量的数据计算,而MSP430运算能力有限,必须借助PC强大的数据处理能力,因此实现MSP430与PC之间的可靠数据传输变得尤为重要[1]。
本文将使用MSP430的同步∕异步串行模块(USART)与计算机进行串口通信。PC的通信软件采用Visual C++6.0编写,具体是利用MSComm控件完成与MSP430单片机的通信。
1 异步串行通信的概念
MSP430与PC之间的异步串行通信采用RS-232串行接口电路实现,利用PC的串行接口进行数据传输。在异步通信中,数据是逐帧传送的,其数据格式如图1所示。
在帧格式中,一个字符由起始位、数据位、奇偶校验位和停止位4部分组成。首先是一个起始位“0”,然后是5~8 bit数据(规定低位在前,高位在后),接下来是奇偶校验位,最后是停止位“1”。起始位“0”信号只占用1 bit,用来通知接收设备一个待接收的字符开始到来,在不传送字符时,线路上应保持为“1”。接收端不断检测线路的状态,若连续为“1”以后又检测到一个“0”,就知道要发来一个新字符,应立即准备接收[2]。
2 接口器件介绍
2.1 电平转换芯片
PC与MSP430通信使用RS-232串行总线标准。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平电压范围为+5 V~+15 V,负电平为-15 V~-5 V。当无数据传输时,线上为TTL电平,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平为+3 V~+12 V与-12 V~-3 V之间。如此高的电压是不能和单片机直接相连的,所以必须进行电平转换。本文利用LTC1385来实现电平转换[3],它是德州仪器推出的一款兼容RS-232标准的芯片。该芯片供电电压为3.3 V,与MSP430的3.3 V供电电压匹配。LTC1385芯片内部亦有两路发送器和两路接收器,本文只用到其中的一组。
2.2 信号接口介绍
PC都有串行接口,一般用RS-232接口。与RS-232相匹配的连接器有DB-25、DB-15和DB-9,其引脚各不相同。本文使用DB-9作为提供I/O卡或主板上COM1和COM2两个串行接口的连接器,提供异步通信的9个信号。
3 硬件电路设计
3.1 PC与MSP430的串行通信原理图
PC与MSP430串行通信原理图如图2所示,整个系统由PC、MSP430和LTC1385 3个部分组成。由于PC与MSP430串行通信时采用RS-232协议,因此不管是单片机向PC发送数据,还是PC向单片机发送数据都必须通过LTC1385进行电平转换[4]。在电路连接时,PC的串口输出应对应MSP430的串口输入。
3.2 系统电路连接图
整个系统电路连接图可分为两个部分:MSP430串口与LTC1385之间的连接以及LTC1385通过DB-9型连接器与PC的串口的连接,如图3所示。将MSP430的“UTXD0”引脚和LTC1385的“TR1IN”引脚相连,MSP430的“URXD0”引脚和LTC1385的“RX1OUT”引脚相连,即将MSP430的输入引脚和LTC1385的输出引脚相连,将MSP430的输出引脚和LTC1385的输入引脚相连。
LTC1385通过DB-9型连接器和PC的串口相连,具体实现要选用标准的串口线将LTC1385同PC的COM1口连接。
4 程序设计
整个程序设计分为PC的通信程序和MSP430的通信程序两部分。由于MSP430的通信程序采用汇编语言编写,其代码在各种环境下都大同小异,因此这里重点介绍PC通信程序的编写。