TMS320VC5402与PC机进行串行通信的两种方案
扫描二维码
随时随地手机看文章
【摘 要】 介绍了TMS320VC5402和PC机进行串行通信的两种方案,分析了两者的特点,并且给出了具体的电路图。
关键词:数字信号处理,通信接口,TMS320VC5402
1 引 言
通用数字信号处理器(DSP)以其很强的数据处理能力在高速数字信号处理方面得到了广泛的应用。TMS320VC5402(以下简称C5402)是为实现低功耗、高性能而专门设计的定点DSP芯片,其主要应用领域是无线通信系统。在实际应用的过程中,我们发现C5402的通信接口控制能力很弱。当C5402独立作为一个系统的处理单元时,与外设进行数据交换是必不可少的,其通信能力弱的特点就会影响应用的效果。
对TI的TMS320系列的DSP来说,设计串口的方法一般有两种:(1)利用通用I/O口线XF和BIO来构成串口,由软件设计波特率,在CPU不繁忙的情况下往往采用这种方法;(2)利用UART(通用异步收发器)来进行串行通信,CPU只需通过UART提供的接口来编程,就可以实现串行通信。接下来将具体介绍这两种方案。
2 基于C5402的软RS232接口
2.1 硬件电路
RS232为低速率应用提供通信接口。利用C5402的XF、BIO,INT0和定时器可以实现一个最简RS232接口,从而达到C5402与PC机进行串行通信的目的。原理如图1所示。
2.2 软件设计
这种设计支持从110到115200各种波特率。C5402通过XF管脚向RS232接口发送串行数据,通过 BIO管脚接收来自RS232接口的串行数据。BIO和INT0相连,可以避免频繁检测接收管脚的电平,当接收端出现第一个低电平,即认为是接收字节的开始位,每次判决电平位置在每个比特的中间位置,可最大限度地防止误判的发生。
RS232接口的主要逻辑都是用C5402汇编语言编写的,减少了硬件成本和系统体积,发送是先将8位原始数据加上1位起始位和2位停止位,然后根据波特率设定时钟间隔,每次时钟中断发生是,发送1位数据,直到包含这8位原始数据的11位数据全部发送完成。
接收时由低电平触发INT0中断,表示有新数据到来,进入INT0中断服务子程序。为防止误判,中断子程序首先检查接收到的第一位是否为开始位,如果不是,说明并未有新数据到来。如果确是开始位,则屏蔽INT0中断,根据波特率设置定时器,开始数据接收。每次接收时钟中断发生,检测BIO值并将检测值依次移入接收寄存器。最后去掉开始位和停止位,将8位数据存入接收缓存,完成1个字节的接收。
3 利用TL16C550实现C5402与PC机的高速串行通信
3.1 异步通信芯片TL16C550
3.1.1 TL16C550管脚介绍
TL16C550C是TI公司的异步通信芯片,它具有以下主要特点:
·管脚与TL16C750兼容;
·最高可达1M的波特率,且波特率发生器可编程设定;
·由软件设定的FIFO以减少CPU中断;
·有可编程的串行数据发送格式:数据位长度为5、6、7、8;
·具有奇、偶校验或无校验模式;停止位长度为1、1.5、2;
·采用44引脚PLCC封装。
TL16C550的引脚如图2所示。
TL16C550各主要引脚的功能说明见表1。
3.1.2 TL16C550片内寄存器介绍
TL16C550内部共有11个寄存器,这些寄存器分别用于实现通信参数的设置、对线路及MODEN的状态访问、数据的发送和接收及中断管理等功能。表2描述了访问这些寄存器时锁存器访问位DLAB和A0、A1、A2的状态。
3.2 C5402与PC机串行通信的硬件电路
C5402与PC机串行通信的硬件电路如图3所示。
图3中,TL16C550的CS0和CS1都接高电平,CS2接C5402的外部I/O空间,选择线IS。
当XIN、XOUT端外接1.8342MHz晶振时,C5402以28400的波特率与PC机通信,所以,波特率因子寄存器的低位设为02H,高位设为00H。
TLC16C550的数据线D0-D7直接与C5402的D0-D7数据线相连,TL16C550的片内寄存器选择线接C5402的A0-A2。
由于RS-232-C电路电平与CMOS电平不同,因此,RS232驱动器与CMOS电平连接时必须经过电平转换。这里,我们采用MAX232完成这一功能,MAX232具有一个专有的低压降发送器输出级,在其以双电荷棒3.0V~5.5V供电时,可以获得真正的RS-232性能。该器件只需4个1μF小型外接电容,可在维持RS-232输出电平的情况下确保运行于120kb/s数据率,因此十分适合高速串行通信场合。
利用RXRDY和TXRDY引入外部中断,从而系统工作在中断方式,RXRDY产生外部0中断(INT0),而TXRDY将产生外部1中断(INT1)。
3.3 软件设计
系统软件设计包括PC机、TMS320VC5402以
及TL16C550的初始化和通信协议等。初始化的主要任务是设置操作所需要的参数。这些参数包括串行通信时数据串的数据位数、停止位数、奇偶校验等。另外,还需要设置发送和接收的波特率及中断方式。
其中需要注意的是由于系统工作在中断方式,应允许接收就绪中断和发送缓冲区空中断,相应地,中断允许寄存器的值应该设置为03H。
4 结束语
利用通用I/O引脚扩展串口时硬件构成简单,
但软件编制较为复杂,而且由于DSP的中断优先级无法通过软件设置,在有其他外部中断的情况下较难适用。相比之下,运用UART来扩展串口增加了硬件,但降低了软件复杂度,并且免去了对时钟中断的依赖,还可引进另外的外部中断,两个通用引脚也可留出,更适合在较复杂的独立系统中使用。在应用时,可根据实际情况进行选择。