DSP与PC间高速串口通信的实现

2006-05-07 15:50:11来源: 电子产品世界

DSP与PC机间通信时速率匹配问题,并给出了具体实现电路。

DSP是一种专门用来实现信号处理算法的微处理器芯片,主要优点有:硬件乘法器,哈佛总线结构,多种寻址方式,零耗循环(zero overhead loop),程序执行时间可预测等。

    正是由于DSP的诸多优点能够满足密集的数学计算,而且DSP应用的另一个突出特点是实时性,使其在通信、雷达、数字电视等领域得到了广泛的应用,而且日益渗透到人们的日常生活的各个方面。

    在实时信号处理中已经离不开DSP,这些处理系统中包含了各种数据通信,例如DSP与DSP间数据通信,DSP与PC机间数据通信等。如何能够快速、准确的完成通信是每个硬件工程师所关心的问题。由于DSP的工作频率较高,如TMS320C6201时钟频率为200MHz,ADSP21060时钟频率为40MHz,故其数据读写周期很短,然而PC机串口读写速度较低,最大数据吞吐量约为115kbps,尽管DSP在与这些慢速外设进行数据交换时可以加入额外的等待周期,但是在实时性要求苛刻,算法复杂的场合,将DSP从这些冗长的等待周期中解放出来,将其时间重点放在处理关键的实时任务中去,有着重要的实际意义。故DSP与PC机之间串口通信的速度匹配是保证快速、准确通信的关键。

    PC机一般带有一个或两个内置串口,每个端口的机箱背后有一个9针或25针的公插口。串口是以bit来传输数据的,传输速率取决于UART芯片。该芯片将PC总线上的并行数据(单字节或多字节)分割成以比特为单位的串行数据流,从而实现在串口线缆中的数据传输。

    现在几乎所有的PC机都带有16550UART用以实现并行数据和串行数据的格式转换,它的最大数据吞吐量为115kbps,这已经能够满足大多数串行设备的需要了。

    PC16550是国家半导体公司生产的通用异步接收/发送器(UART)芯片,它不仅能把从CPU接收的数据进行并-串转换,还能够把从外围设备或MODEM接收到的数据进行串-并转换。

    该UART包括一个可编程的波特率产生器,可将输入的时钟信号进行分频,并可产生16倍的时钟来驱动内部的传输逻辑单元。同时它内部集成了中断逻辑,另外通过对其内部的寄存器的设置可以完成相应功能,这些寄存器主要有:线路控制寄存器、FIFO控制寄存器、中断使能寄存器、MODEM控制寄存器、线路状态寄存器等。因而它可以与大多数的CPU实现无缝接口,使用很方便。PC16550的功能主要包括:

    * 工作在FIFO模式时,接收器/发送器自带16字节的FIFO存储器,减少了中断CPU的次数;

    * 串行数据位数可编程,起始位、停止位的长度,奇偶校验位的有无可以分别控制;

    * 可分别产生数据的接收/发送、线路状态等中断,各中断的优先级可设定;

    * 可编程波特率产生器;

    * 芯片全部工作状态报告功能;

    * 内部自诊断功能;

    其典型应用电路如图1所示。

DSP与PC机间串口通信的实现

   
在许多DSP的应用中需要与PC机进行数据交换,使用户通过PC机上友好的程序界面来控制DSP系统的工作、显示DSP的运行结果等。在数据传输过程中,传输的速度的快慢、误码率的大小、效率的高低等都影响到整个系统的性能指标,因此如何高速高效的进行数据传输是不容小视的。前面已经叙述了由于DSP工作频率较高,它的读写时钟的脉宽较窄,使数据在总线上的锁存时间较短。我们开始是使用8251芯片来完成与ADI公司的ADSP21060串行通信,但在实际应用中测得数据传输误码率较高,系统工作可靠性大受影响。主要是因为8251的响应时间较长,不能保证在DSP的读写周期内准确的将数据进行锁存。后来改用PC16550芯片,就能很好的与DSP匹配,问题得到了彻底解决。另外该芯片内置FIFO(First-In, First-Out,先进先出),能存储一定量的数据后再给DSP中断,从而节省了DSP中断服务程序的时间,提高了DSP的工作效率。具体电路如图2。

    DSP通过外存选择信号/MS00来片选PC16550,通过信号对其进行读写操作,PC16550占用DSP的外部存储器空间。其它一些信号,如cs0,cs1,rd,wr等可根据典型应用电路所示的连接方式进行连接。与MODEM通信的引脚在本系统中没有使用,故相应引脚悬空即可。在DSP与PC机串口通信时先要对16550进行设置,见下面DSP的汇编程序。

    .segment/dm ms0data; /*串口UART*/

    .var okdata[512]; /*okdata起始地址为0主00000*/

.endseg;

………

main:

………

/*将line control register的DLABwulf1*/

r0=0x80;b6=okdata;m6=3;l6=0;

dm(m6,i6)=r0;

/*设置波特率为9600*/

r0=0xc;b6=okdata;m6=1;l6=0;

dm(i6,m6)=r0;

/*设置line control register,数据8位,停止位1,其他无*/

r0=0x3;b6=okdata;m6=3;l6=0;

dm(m6,i6)=r0;

/*设置FIFO control register,接收4Bytes数据后产生中断,将接收/发送FIFO清零*/

r0=0x47;b6=okdata;m6=2;l6=0;

dm(m6,i6)=r0;

/*中断允许*/

r0=0xl;b6=okdata;m6=1;l6=0;

dm(m6,i6)=r0;

/*向UART写一个数据0X光5*/

r0=0x55;b6=okdata;m6=0;l6=0;

dm(i6,m6)=r0;

………
    本电路硬件和汇编程序都调试通过,并成功地应用于某毫米波侦察雷达信号处理机中。总之,PC16550能够方便、灵活并且高效的完成DSP与PC机间串口的数据通信,而且可使用户实现与标准MODEM之间接口,实行数据远传。

关键字:高速  串口通信  通信  实现

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200605/2440.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
高速
串口通信
通信
实现

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved