8996|6

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

DSP与PC间高速串口通信的实现 [复制链接]

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

    关键词:DSP UART 串行通信 FIFO

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之间接口,实行数据远传。


最新回复

很好的资料,再顶一下。   详情 回复 发表于 2007-6-7 08:41
点赞 关注
 

回复
举报

1284

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 

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

打算dsp的,但是还是放弃搞arm了
个人签名呼呼...在校应届大四学生,代做电子类毕业设计(测量类、仪器类、控制类、无线通信类、电子产品类、界面设计类、纯论文类等等,一一俱全)。涉及各种单片机软硬件设计、电路模拟分析、FPGA、CPLD、ARM7/ARM9、LINUX、VB/VC++/QT界面等等。包过。。。欢迎咨询。Tel:13957160506。QQ:273437087
 
 

回复

137

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

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

好,有用,顶一下。
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

4
 

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

有用的董东
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

5
 

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

谢了
 
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

6
 

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

xiexie ni le
个人签名南京璞晓电子   www.cpx0.com需要
msn:njlianjian@hotmail.com
 
 
 

回复

137

帖子

0

TA的资源

一粒金砂(初级)

7
 

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

很好的资料,再顶一下。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表