会员服务
  首页 | 最新采购 | 现货热卖 | IC库存 | 应用资料&程序库 | 单片机销售 | 交流区 | 供应商 | 生产商 | 技术资料
应用资料:  
您现在的位置:首页 >  技术资料   上载库存  

DSP的软件UART实现

1前言

ADSP218X作为16位的定点数字信号处理器,以其低成本、低功耗的特点在实际中有着广泛的应用。它主要面向通信系统等对处理数据精度和动态范围适中、更强调产品成本和功耗的应用领域。ADSP218X系列定点DSP相对于其他定点DSP的突出优点是片内高速存储器容量大,寻址能力强,运算速度快,对于需要较大存储器(40~80kB)的应用,ADSP218X可以构成外围设备最少的系统[4] 。除此之外,ADSP218X还有强大的系统接口,有两个带有自动压扩功能的双缓冲串口。ADSP218X的串口属于同步串口,与标准的异步串行接口不同,要想实现ADSP218X与PC机串口的通信,我们必须在DSP中采用软件模拟通用异步收发器(UART)的方法来实现两者的通信。

2串行通信和DSP串口

目前,大部分PC机上的串口采用RS-232标准。该标准规定采用一个25脚的 DB25连接器,对连接器的每个引脚的信号内容以及各种信号的电平加以规定[1]。在通信距离较近时(<12m),可以用电缆线直接连接标准RS-232端口,若距离较远,需附加调制解调器。实际上RS-232的25条引线中有许多是很少使用的,所以目前较为常用的串口有9针(DB9)和25针串口(DB25)。而在普通电路设计中最为简单且常用的是三线制接法,即在通信中不需要RS-232的控制联络信号,地(GND)、接收数据(RX)和发送数据(TX)三脚相连,便可实现全双工异步串行通信。本文即采用这种方法实现PC与DSP的串口通信。

在典型的RS-232接口中,由于没有时钟信号,所以数据按照设定的固定波特率传送。在一帧信号中通常包括开始位、停止位和数据位,校验位可选。其中数据位为5~8bits;奇偶校验位共有5种方式可选:奇校验、偶校验、始终为1、始终为0以及空;停止位也有3种选择:1位、1 1/2位以及 2位。串口传数时低位优先,由开始位表示数据的传送。

ADSP218X有两个双向双缓冲的同步串口,通过帧信号来控制数据流。每一个串口有5个信号:串行时钟SCLK、接收帧同步(RFS)、发送帧同步 (TFS)、串行数据接收(DR)和串行数据发送(DT)。两个串口都可以使用外部时钟,也可以利用DSP的内部时钟,内部产生串口时钟时频率由串行时钟除法寄存器SCLKDIV确定。帧同步信号也有内外选择,既可以自己产生,也可以由外部设备提供,它用于指示串行数据字的开始。串口数据的字长在 3~16bit之间任意设置,共有4种格式:右对齐高位零填充、右对齐高位符号位填充、 μ率压缩及A率压缩。SPORT在DR上接收数据,在DT上发送数据,可实现双工操作。数据比特利用串口时钟同步。在ADSP218X的两个串口中,SPORT1除了可以作为普通串口,还可以作为外部中断和标志位使用。通过设置系统控制寄存器(0X3FFF)的 bit10,DR1和DT1相应可作为FLAG IN(标志位输入)和FLAG OUT(标志位输出),这两个管脚在软件UART的过程中可以作为数据的输入和输出管脚。ADSP218X的串口在传输时高位优先。

ADSP218X的串口使用主要是通过设置各内存映射控制寄存器来实现,各寄存器的具体含义及设置请参阅文献[2]。

3DSP软件UART的实现

由以上看出,DSP的串口和PC机的串口在数据格式以及传送控制上有区别,但是通过软件模拟以及必要的硬件控制,就可实现DSP与标准串口间的通信。在ADSP218X上软件模拟UART有3种主要的方法:直接利用DSP的串口,通过控制串口的传送模式来实现;利用DSP的定时器,通过标志位管脚的输入输出来实现;利用DSP的外部中断,通过中断处理程序来实现。本文主要介绍前两种方法。

3.1 DSP串口实现的软件UART
通过对DSP的串口控制寄存器进行设置以及对接收和传送数据进行必要的处理,利用图1所示的电路,DSP就可以与PC进行数据交换。

接收数据时,设置DSP串口为内部时钟和外部产生帧同步信号。内部时钟信号用来提取接收数据。由于DSP串口进行数据接收时,只知道数据率而不知道它们与内部时钟的相位关系,因此为了保证数据的正确性,内部时钟频率设为PC串口波特率的奇数倍,本方案中取3,也就是说串口的一位数据DSP接收3次,这样就可以确保在3bit接收数据中至少有2bit是正确的。外部帧同步信号通过硬件来实现,来自RS-232的TX信号同时接到DSP 的DR和RFS信号管脚,因为DSP工作在有帧模式时只在等待新数据时检测RFS信号,传送开始后就忽略RFS信号,所以可以利用RS-232传输时的开始位来实现RFS信号。通常串口信号在无校验位时为10bit,以3倍的速率对其进行抽样就会得到30bit数据,除去第一位作为RFS信号,最后得到29bit 数据。但DSP串口接收缓冲区通常是16bit,所以必须接收两次。在接收第一个16bit时,设置串口为有帧模式,第二次接收时设置串口为无帧模式,这样就可以完全接收32bit数据。

发送数据时,设置串口为内部时钟,内部产生帧同步信号,传送时可按照实际的波特率发送数据。但是由于接收时需要设置DSP串口速率为波特率的3倍,所以发送时仍然按3倍波特率发送,因此在传送前必须对数据进行处理,除了加上开始位和结束位外,还需将待传数据按位扩展,即将1和0分别扩展为111和000,10bit数据因此变为30bit,而DSP串口发送寄存器同样为16bit,所以发送要分上下字进行两次。

需要注意的是DSP串口工作时高位优先,而 RS-232传输时低位优先,因此我们必须通过软件调整接收和发送数据的顺序。图2所示是DSP在接收数据时的中断处理程序流程图[3]。
3.2 用定时器实现的软件UART
用定时器来实现DSP的软件UART主要是利用定时器中断来处理数据,用标志位输入和输出管脚来传送数据。ADSP218X共有13个可编程标志位管脚,在本例中以SPORT1的FLAG IN和FLAG OUT作为输入和输出管脚,所以在初始化时首先要配置SPORT 1工作在中断和标志位状态,使用其他标志位管脚时需要相应设置可编程标志位控制寄存器。 ADSP218X的定时器控制主要通过TPERIOD(定时器周期)、TCOUNT(定时器计数)和TSCALE (定时器定标)寄存器完成。同串口UART一样,为了保证数据的正确性,设置定时器工作在3倍的波特率,每个数据位接收3次,仅在中间一位判断接收数据。相应的在发送时必须通过软件控制来实现3次中断发送一位数据。采用定时器实现软件UART的硬件连接如下:

DSP FO → 电平转换 → RS232 RX

DSP FI ← 电平转换 ← RS232 TX

中断服务程序分接收和发送两个部分。进入中断后,程序首先判断是否有数据要发送,若没有则直接进入接收状态;若有就继续判断是否应该在这次中断发送数据位。因定时器工作于3倍的波特率,所以此定义参数TIMER_CENTREL为3,每次中断TIMER_CENTREL减1,当其为0时发送待传比特位。在接收服务程序中,首先应判断上一个接收字的停止位是否已经收到,收到就等待全部停止位接收完毕后,返回主程序;若没有收到就表明DSP正在接收数据或者等待接收新的数据。当DSP 等待接收新的数据时,不断抽样FLAG IN管脚检测数据的开始位,检测到开始位后,就在每3次中断后检测一次FLAG IN管脚,根据管脚电平高低判断接收为1为0,并根据此值构造接收数据。需要注意的是在刚刚检测到开始位的时候,为了在数据位的中间取样,应该等到第4次中断时再判断,而此后就只需等待3次中断。图3和图4分别是调用UART传送数据和中断处理时发送部分的程序流程图。发送一组数据时,为了判断前一数据字是否传送完成,在图3中每一次调用传送程序时我们加入标志位进行查询,若有数据正在处理则等待,没有则初始化相应变量,置标志位为0,表示有数据要发送,然后等待中断。在图4的发送程序中,同样先判断是否有数据要发送,若没有则直接进入接收部分[3]。4调试结果

为了验证上述方法的正确性,在ADSP2189系统中,以DSP压缩系统为硬件环境,以Visual DSP++2.0为软件环境分别采用串口和定时器的方法测试了数据传输。以定时器方式为例,设定波特率为9600,则TPERIOD和TCOUNT等于2603,TSCALE等于0。测试时将压缩结果缓冲区 DATA_OUT内数据通过RS-232接口传入PC机,然后再由PC传回DSP的接收缓冲区DATA_IN,通过在Visual DSP++编译环境下设定PLOT选项,得到如图5所示的结果。图中以输出DATA_OUT为横轴,以输入DATA_IN为纵轴,如果输入和输出之间呈线性关系,则表明DSP和PC间通信无误。由图可以看出我们的数据传输完全正确。

这两种方式都可以实现软件的UART,但不同方法对系统资源占用要求不同。采用定时器方法时,DSP必须时时检测标志位输入管脚,每发送和接收一位数据就要调用3次中断服务程序,导致处理器效率降低;采用DSP串口方法的好处是接收发送单独处理,没有定时器中断,减少了不必要的中断服务开销,同时解放了定时器,它的缺点是控制寄存器的设置以及硬件连接相对复杂。在具体应用中应该从系统的角度出发,选取合适的传送方式。

5结论

主要讨论了ADSP218X的同步串口在与计算机的异步串口通信过程中的软件设计。本方法具有一定的普遍意义,基本思想可以同样适用于其他同步串口与异步串口之间的通信。


参考文献:

[1] 李建华,等. RS-232和调制解调器高级通信编程[M].人民邮电出版社.

[2] ADSP-218X DSP Hardware Reference ,First Edition,Analog Device[M],2001.

[3] ADSP-218X DSP Instruction Set Reference ,First Edition,Analog Device[M],2001.

[4] 苏涛,等.高性能数字信号处理器与高速实时信号处理[M]. 西安:西安电子科技大学出版社.


关于我们 | 会员服务 | 广告服务 | 支付方式 | 联系我们 | 友情链接

会员服务热线:

深圳矽通科技版权所有 © Copyright 2005-2007, ic-cn.com.cn All Right Reserved.  
深  圳13410210660             QQ : 317143513   点击这里与电子元件采购网联系
客服联系: MSN:CaiZH01@hotmail.com       E-mail:CaiZH01@163.com