位置:51电子网 » 技术资料 » D S P

DSP的软件UART实现

发布时间:2008/5/27 0:00:00 访问次数:1385

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前言

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倍波特率发送,因此在传送前必须对数据进行处理,除了加上开始位和结束位外,还需将待传数据按

相关IC型号

热门点击

 

推荐技术资料

业余条件下PCM2702
    PGM2702采用SSOP28封装,引脚小而密,EP3... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!