DSP与PC机串口的高速数据通信的实现

  • 格式:pdf
  • 大小:188.26 KB
  • 文档页数:4

文章编号:1001-893X(2001)04-0038-04

DSP与PC机串口的高速数据通信的实现①

蔡琳洁,陶 然,王卫江(北京理工大学电子工程系信息系统实验室,北京100081)【摘要】PC16550D是NS公司生产的异步通信芯片,在通信系统的实时性要求较高时,可通过通用异步通信芯片PC16550D来实现系统的高速串行通信,从而增强系统的通信接口控制能力。文中介绍了PC16550D的性能及与通信有关的寄存器,给出了PC16550D在ADSP21060与PC机通信系统中的硬件应用电路及ADSP21060初始化PC16550D的软件编程。关键词:数据通信;信号处理技术;通信接口中图分类号:TN91117 文献标识码:A

通用数字信号处理器(DSP)以其很强的数据处理能力在高速数字信号处理方面得到了广泛的应用,但是它的通信接口控制能力比较弱。如AD2SP21060,它有2个串口,通常用于DSP芯片间的同步串行通信。当ADSP21060独立构成一个处理单元时,往往需要与外设交换一些数据,通信能力弱就会影响DSP的应用。在研制某信号模拟分析仪时,笔者以ADSP21060作为信号处理单元进行实时运算,然后将转换的结果通过串口传送到PC机显示或作进一步处理。由于系统的实时性要求较高,如何实现ADSP21060与PC机高速和可靠的通信问题就显得尤为重要。一、异步通信芯片PC16550D对于ADSP21060数字信号处理器来说,设计串口的方法一般有两种:第一种是利用通用的I/O口线/MS和BIO来构成串口,由软件来设定波特率,在DSP不繁忙的情况下,往往采用这种方法;但是当通信的实时性要求较高时,DSP应该通过通用异步通信芯片来实现高速串行通信。PC16550D是NS公司的异步通信芯片,其主要特点如下:(1)管脚与PC16450兼容;(2)可由软件设定16字节的FIFO以减少CPU中断;

(3)其波特率发生器可编程

;

(4)具有可编程的串行数据发送格式

:

数据位长度为5、6、7、8;具有偶校验、奇校验或无校验模式;停止位长度为1、1.5、2;

(5)采用44引脚PLCC(PlasticLeadedChipCarri2

er)封装。

1.PC16550D的引脚功能PC16550D的引脚如图1所示,各主要引脚的功能说明如下:

A0~A2:片内寄存器的选择信号;D0~D7:双向8位数据线;CS0、CS1、CS2:输入片选信号,当CS0=CS1=1且CS2=0时,PC16550D被选中;

ADS:是地址选通信号,该脚有效时,可将CS0、CS1、CS2及A0、A1、A2锁存在PC16550D内部;XIN、XOUT:外部时钟端,该两脚可接晶振或外部时钟信号;

RXRDY:是接收准备好信号,当PC16550D已经从串行输入端接收了一个字符时,该信号失效,在中断方式时可作为中断请求信号;

TXRDY:是发送准备好信号,当PC16550D允许

・83・①收稿日期:2001-05-22

 作者简介:蔡琳洁(1968-),女,河北石家庄人,硕士研究生.

 电讯技术2001年第4期研究与开发RESEARCH&DEVELOPMENT发送且发送缓冲区为空时,该信号有效,在中断方式时可作为中断请求信号。图1 PC16550D的引脚图21PC16550D的片内寄存器PC16550D内部共有11个寄存器,这些寄存器分别用于实现通信参数的设置、对线路及MODEM的状态访问、数据的发送和接收以及中断管理等功能。编程人员可由A0、A1、A2三条片内寄存器选择线和线路控制寄存器的除法数锁存器访问位DLAB一起通过多路复用进行访问或控制PC16550D的任何一个寄存器。表1给出了访问这些寄存器时DLAB和A0、A1、A2的状态。因为接收/发送缓冲寄存器的DLAB、A0、A1、A2各位都相同,因此还必须通过读/写信号来加以区分。下面对与ADSP21060和PC机通信有关的寄存器做一简单介绍。线路控制寄存器(LCR)用来存放串口传送的二进制位串行数据格式,LCR是一个8位寄存器,各位的定义如下:d0d1是字长选择位,若d0d1=00,传送的字长为5位;d0d1=01时字长为6;d0d1=10时字长为7;d0d1=11时字长为8。d2位是停止位选择,d2=0时停止位为1位,d2=1时停止位为1.5位(所传字长为5位)或2位(所传字长为6,7,8位)。d3位是校验使能位。d4是校验类型位,d4=0时进行奇校验,d4=1时进行偶校验。d7位(DLAB)是锁定波特率发生器位,d7=1时访问波特率因子寄存器,d7=0时访问其它寄存器。

表1 PC16550D的片内寄存器DLAB3A2A1A0寄 存 器

0000接收缓存(读),发送保持寄存器(写)

0001中断使能寄存器X33010中断鉴别寄存器(读)

X010FIFO控制寄存器(写)X011线路控制寄存器X100MODEM控制寄存器X101线路状态寄存器X110MODEM状态寄存器X111临时寄存器1000波特率因子寄存器低位1001波特率因子寄存器高位3DLAB-theDivisorLatchAccessBit;

33X-“0”或“1”;

线路状态寄存器(LSR)用于记录串行数据发送和接收过程的状态信息。该寄存器的状态位如表2

所列。

表2 线路状态寄存器(LSR)的状态位LSR的各位状 态10

D0接收完成标志接收完毕读后复位D1接收重叠标志发生重叠读后复位D2奇偶校验错标志奇偶校验错读后复位D3格式错标志接收有错接收无误D4间断标志连续收到0未间断D5发缓冲器空标志THR已空写THR复位D6发移位寄存器空标志已空未空D7接收器FIFO出错FIFO有错FIFO无错

2个8位波特率因子寄存器可构成一个16位的波特率因子寄存器。PC16550D的内部波特率发生器可产生发送数据的时钟信号。波特率因子可以通过下列算式求出:

波特率因子=基准时钟频率/(16×波特率)

这个波特率发生器可以利用比较通用的3种不同频率产生标准的波特率。这3种不同的频率为1.8432MHz、3.072MHz和18.432MHz。可以任意选择写入波特率因子的高字节和低字节的顺序,但写入前必须置线路控制寄存器(LCR)的d7(DLAB

)

位为1。写入波特率因子后应将线路控制寄存器的・93・

 电讯技术2001年第4期研究与开发RESEARCH&DEVELOPMENTd7恢复为0,以便访问其他寄存器。在外接晶振为1.8432MHz时,几种常用的波特率所对应的波特率因子寄存器的值如表3所列。

表3 波特率因子对应的波特率因子寄存器的值

波 特 率3600480096001920038400

波特率因子寄存器的值32241263

二、ADSP21060与PC机串行通信的硬件电路

ADSP21060与PC机串口通信的硬件电路框图如图2所示。

图2 ADSP21060与PC机通信的硬件电路 AD公司的ADSP21060,其时钟频率是40MHz,

能以40MHz的速度读写数据,其读写信号的脉宽很窄,使用一般的串口芯片误码率较高,而PC16550D

就能很好的与DSP匹配。同时,为了增加系统的灵活性,还使用了ALTERA公司的EPLD(可擦除可编程逻辑器件)来控制系统的一些控制管脚,使整个系统成为完全可编程系统。图中,PC16550D的CS2接ADSP21060的/MS2。/

MS是ADSP21060的外部I/O空间选择线,它可确定CPU所访问的空间。当ADSP21060的/MS2为低时,PC16550D被选中。当XIN、XOUT端外接1.8432MHz晶振时,AD2SP21060以38400的波特率与PC机通信,所以波特率因子寄存器的低位的值应为03H,高位值为00H。PC16550D的数据线D0~D7直接与ADSP21060的D0~D7数据线相连,PC16550D的片内寄存器选择线接ADSP21060的A0~A2。由于PC16550D的读信号和写信号保持时间的典型值均为25ns,因此可以将ADSP21060的/WR和

/RD经EPLD连到PC16550D的/WR和/RD。由于RS-232-C电路电平与CMOS电平不同,

因此RS232驱动器与CMOS电平连接时必须经过电平转换,本系统采用MAX232完成这一功能。MAX232具有一个专有的低压降发送器输出级,以5V供电。该器件只需4个0.1μF小型外接电容,可

在维持RS-232输出电平的情况下确保运行于120

kb/s数据率,因此十分适合高速串行数据通信的场合。PC16550D的串行输入线(SIN)和串行输出线(SOUT)分别接MAX232的R1OUT和T1IN,经电平转

换后由MAX232的T1OUT和R1IN连接到PC机的串口。

三、软件设计该系统软件设计包括PC机、ADSP21060及PC16550D的初始化和通信协议等。下面将结合本系统的硬件给出ADSP21060初始化PC16550D的程序。初始化的主要任务是设置操作所需要的参数,

这些参数包括串行通信时数据串的数据位数、停止位数、奇偶校验等。另外,还需要设置发送和接收的・04・

 电讯技术2001年第4期研究与开发RESEARCH&DEVELOPMENT