数字信号处理器中发送和接收异步串行数据的方法

文档序号:7576740阅读:278来源:国知局
专利名称:数字信号处理器中发送和接收异步串行数据的方法
技术领域
本发明涉及串行数据通信方法,特别涉及使用数字信号处理器(DSP)的串行端口用来异步发送和接收数据的方法。
TMS320C30 DSP(由德克萨斯仪器公司制造的数字信号处理器)是现已广泛用于伺服控制器中及图象处理的专用数字处理器。一般的数字信号处理器具有串行端口或并行端口以便向另一处理器发送数据并从其接收数据。TMS320C30 DSP具有异步串行通信端口,并与另一TMS320C30 DSP通过串行通信端口高速进行异步串行通信。
一般来说,如果DSP串行端口能够连接到诸如个人计算机(PC)或笔记本计算机这样的通用系统,则使用起来非常方便。例如,例如在PC上编码的程序可以下载到DSP,或者在DSP系统工作期间DSP的数据可通过PC连续被登录。如果使用DSP的伺服系统的控制器的输出值被登录并然后由PC进行分析,则易于实现一种优化的控制器。而且,笔记本计算机能够向DSP系统发出操作命令,使得DSP系统能够作出特定的操作,由此能够进行简单的仿真。这就是说,如果DSP串行端口能够连接到通用系统上,则不论工作场所和设备如何而能够对外部系统进行检测。
然而,在使用DSP的串行端口的串行通信方法中DSP不能与诸如PC或笔记本PC的通用计算机系统进行数据通信。因而,需要一种特别的异步通信方法以实现与通用计算机系统的串行通信。然而,由于异步数据是以非实际数据部分的起动位开始的这一事实,异步通信需要某些硬件和软件。这就是说,数据接收的起动是使用起动位被识别的,并根据

图1B所示接收定时器计数器寄存器读取后继的位。类似地,在发送数据时,也是使用发送定时器计数器寄存器逐一发送位。
然而,通过通信实验我们能够发现,不论是否进行串行通信,TMS320C30 DSP中的发送/接收定时器计数器都与处理器的时钟脉冲同步地进行连续计数操作。于是,发送/接收定时器计数器的值在起动位被发送或接收的时间点不一致,这将引起在冗长通信期间的通信故障。
本发明的目的是要提供一种使用DSP的串行端口用于发送和接收数据的方法,由此,当接收通过串行端口发送的异步数据时,能够通过复位接收定时器计数器的数值为预定数值而防止每当接收起动位时的通信差错,以便在每一数据信号位脉冲段的中间点读取数据,并在数据发送期间通过在起动位的发送开始点复位发送定时器计数器为零而调节并发送发送信号的每一位的脉冲段。
为了实现以上目的,本发明提供了一种通过TMS320C30 DSP的串行端口异步接收串行数据的方法,该TMS320C30 DSP包括用于存储脉冲段信息的接收定时器周期寄存器,该信息表示当发送的串行数据的1位时间段表示为由多个时钟脉冲组成的脉冲段时多少时钟脉冲对应串行数据的一位;以及用于对时钟脉冲计数到由接收定时器周期寄存器确定的数值、复位计数的数值为零、并从零开始重新计数的接收定时器计数器,上述方法包括以下步骤确定起动位是否被接收;当接收的起动位从高向低降落时起动串行端口;当串行端口被起动时设置接收定时器计数器的初始值为接收脉冲段寄存器中一半的数值;每当接收定时器计数器的数值变为等于接收定时器周期中寄存器的数值时接收一位数据,直到接收到停止信号为止;以及当接收到停止位时禁止串行端口。
为了实现以上目的,本发明还提供了一种通过TMS320C30 DSP中的串行端口异步发送串行数据的方法,该TMS320C30 DSP包括用于存储脉冲段信息的发送定时器周期寄存器,该信息表示当发送的串行数据的1位时间段表示为由多个时钟脉冲组成的脉冲段时多少时钟脉冲对应串行数据的一位;以及用于对时钟脉冲计数到由发送定时器周期寄存器确定的数值、复位计数的数值为零、并从零开始重新计数的发送定时器计数器,上述方法包括以下步骤通过向待发送的数据部分的开始和末尾添加起动和停止位形成异步数据而产生发送数据;在发送起动位时的时间点初始化发送定时器计数器为零;每当发送定时器计数器的数值变为等于发送定时器周期寄存器中的数值时发送一位数据;以及重复发送一位的步骤直到发送停止位为止。
以下通过参照附图详细说明本发明的优选实施例,本发明的上述目的和优点将更为明显,这些附图是
图1A到1B表示使用TMS320C30 DSP的串行通信端口用于异步数据发送和接收的寄存器;图2表示根据本发明当接收串行数据时通过复位接收定时器计数器为预定数值,能够在脉冲的中间部分稳定地接收数据的的概念;图3是简略表示异步数据接收过程的流程图;图4表示根据本发明在异步数据发送期间复位发送定时器计数器时的时间点;图5是简略表示串行数据发送过程的流程图。
RS232C串行数据由一个起动位、八个数据位和一个停止位组成。可以添加一个附加位用于检测通信差错,例如奇偶校验位。然而,通常RS232C串行数据简单地总共由10位组成。一般的串行通信控制器通过识别起动和停止位接收数据。然而,DSP串行通信端口设计为只要有数据输入就能依靠接收计数器的数值简单地接收数据。
这里,起动位不是用户需要的信息,而是指示数据接收起动的位。在异步传输中,只有使用起动位识别数据的开始,才能接收数据。起动位在数据流的开始,于是不难找到起动位。
图1A和1B表示使用TMS320C30的串行通信端口用于异步数据发送和接收的寄存器。图1A表示存储脉冲段信息的接收/发送定时器周期寄存器,当串行发送期间发送的1个位的数据段由多个时钟脉冲组成的脉冲段表示时,脉冲段信息表示多少个时钟脉冲对应于一个数据位。接收/发送定时器周期寄存器为32位规格,以便定义串行发送的1位脉冲段。低16位(位0到15)表示发送1位脉冲段,而高16位(16位到31)表示接收1位脉冲段。
图1B示出表示接收/发送定时器计数器输出的接收/发送定时器计数器寄存器。该接收/发送定时器计数器对时钟脉冲进行计数直到达到接收/发送定时器周期寄存器中设置的数值为止,复位计数数值回零,并重新存储重复寄存器中的计数操作的接收/发送定时器计数器的输出数值。接收/发送定时器计数器寄存器为32位的寄存器,其低16位(0位到15位)用于发送定时器计数器,而高16位(16位到31位)用于接收定时器计数器。
首先,将说明使用寄存器用于接收异步串行数据的方法。参见图2,在串行数据接收期间通过设置接收定时器计数器的初始值在脉冲中间部分而稳定地接收数据。在起动位从高向低降落时的时间点处设置接收定时器计数器的数值为接收定时器周期寄存器数值的一半,以便当确定其位数值时读取表示每一位的脉冲段的中间点。
参见图3,DSP通过安装在DSP中的串行端口接收异步串行数据。一个普通的DSP识别数据是否通过接收寄存器被接收。于是,在接收了数据之后,在步骤300该DSP检测起动位是否被接收,以便得知数据是否为异步的。在串行数据从高向低降落时检测起动位的存在或不存在。如果检测到起动位被接收,则在步骤310起动串行端口。即当数据流信号连接到DSP的中断信号线时,当检测到起动位时产生一中断。然后,通知DSP串行数据待接收并起动串行端口。
然后在起动串行端口之后,在步骤320初始化接收定时器计数器。这是由于不论是否进行串行通信,TMS320C30 DSP的计数器由DSP的时钟连续增加。而且,另一个原因要使得位数值能够在表示每一数据位的脉冲段的中间点被读取。初始化是这样完成的。首先,读取接收/发送定时器周期寄存器的数值并存储在称为“sett”的临时变量寄存器中。然后sett被向右移动16位,因为接收的数据每位的脉冲段数值对应于接收/发送定时器周期寄存器的高16位。此后,临时变量寄存器(sett)以二分除,向左移动16位,并存储在表示接收定时器计数器输出数值的寄存器中。执行以上步骤的原因在于,如果接收定时器计数器数值设置为当起动位开始被接收时的时间点处每接收的数据位脉冲段的一半,则计数操作以该数值开始,使得能够精确读取表示一位的脉冲段的中间点。在此期间,在步骤320完成了接收定时器计数器的初始化之后,在步骤330计数器保持与DSP时钟脉冲的同步计数。然后,在步骤340确定计数器的增加值是否等于接收定时器寄存器中定义的1个数据位的脉冲段的数值。当检测到增加了的计数器数值与1位脉冲段数值相同时,这一时间对应于表示一位的脉冲段一半的时间,于是在步骤350数据的一位被接收。接收定时器计数器再次清零,并在步骤360确定是否收到停止位。重复步骤330,340,350和360直到收到停止位。当通过TMS320C30 DSP的同步串行端口所有八位数据已经收到并收到停止位时,在步骤370通过产生DSP的接收中断而禁止串行端口。这样,就完成了异步串行数据接收。
现在,将说明使用寄存器的异步发送串行数据的方法。为了实时发送数据,DSP安装了发送队列以存储待发送的数据,并使用实时计数器中断监视发送队列。如果检测到发送队列非空,则起动发送中断以抽取并发送发送队列中的数据。如果发送队列为空,则禁止发送中断,从而执行中断握手。
由于实时处理系统形成中断受控发送,故必须管理好队列以便实时地向其它部分发送数据。队列的基本操作是向头地址部分写数据以及从尾地址部分读数据。当使用实时中断向队列发送数据时,发送中断发送队列中的所有的数据,并然后通过按发送的数据量调节尾地址而重新指定当前的尾数据。
然而,在操作期间系统增加向队列输入数据的速率时,可能出现头地址越过尾地址的现象。这种情形下,由于队列的破坏而不能正确执行数据管理,于是将发送错误的数据。为了防止这一问题,不能简单地扩大队列。为了解决这一问题,把预定大小的队列分为两个级。第一级队列存储由系统要发送的数据。如果在第一级队列找到数据,则数据被放入第二级队列。这时,更新第一队列的尾指针。于是防止了该队列在长发送时间期间溢出。当第一级队列变为满时(“待命”状态),通过读取存储器进行存储在队列中的数据的抽取,使得队列被清空。这样减少了等待时间。
而且,当DSP使用中断受控串行通信控制器发送数据时,产生大量的中断。当中断产生时,就向DSP施加了服务于中断的很大的负担。而且,在起动和禁止中断的处理过程中,DSP的操作变得复杂。于是可能发生操作失败。为了解决以上问题,DSP在其中安装了直接存储器访问(DMA)模块。DMA能够与串行端口结合。当存储器的发送缓存器被定址时,DMA自动地把数据片写入到串行端口。当串行端口完成传输数据时,DMA自动地写入其它数据,以减少DSP的负担。
图4表示当根据本发明对数据进行异步发送时发送定时器计数器被清除的时间点,以便使得一位被发送的脉冲段标准化成为由发送定时器周期寄存器定义的数值。
图5是简略表示DSP通过串行端口异步发送串行数据的处理过程的流程图。首先,对于异步通信,起动和停止位添加到存储在队列缓存器中的八位数据的开始和末尾,由此在步骤500产生发送数据帧。然后,在步骤510初始化发送定时器计数器。即,在发送起动位的时刻把发送定时器计数器的数值复位为零。在发送定时器计数器初始化之后,在步骤520计数器保持与DSP时钟脉冲同步计数。然后在步骤530,确定计数器的增加值是否等于发送定时器周期寄存器中定义的1位脉冲段的数值。在步骤540,当两个数值相同时,发送一位。然后在步骤550发送定时器计数器重新被复位为零,并确定是否发送了停止位。重复步骤520,530,540和550直到发送了停止位。由此,完成了通过TMS320C30 DSP的同步串行端口进行异步串行数据的发送。
其间,异步串行数据发送和接收方法添加了简单的硬件,于是它能够适用于对应于异步通信国际标准的RS232C和RS422两种方法。
根据如上所述的本发明,异步数据发送和接收能够通过TMS320C30 DSP的同步串行端口实现。而且,即使在长时间通信期间也不会发生故障,从而能够进行十分可靠的异步串行通信。
权利要求
1.一种通过TMS320C30 DSP的串行端口异步接收串行数据的方法,该TMS320C30 DSP包括用于存储脉冲段信息的接收定时器周期寄存器,该信息表示当发送的串行数据的1位时间段表示为由多个时钟脉冲组成的脉冲段时多少时钟脉冲对应串行数据的一位;以及接收定时器计数器用于对所述时钟脉冲计数到由所述接收定时器周期寄存器确定的数值、复位计数的数值为零、并从零开始重新计数,所述方法包括以下步骤确定起动位是否被接收;当所述接收的起动位从高向低降落时起动所述串行端口;当所述串行端口被起动时设置所述接收定时器计数器的初始值为所述接收脉冲段寄存器中一半的数值;每当所述接收定时器计数器的数值变为等于所述接收定时器周期中寄存器的数值时接收一位数据,直到接收到停止信号为止;以及当接收到所述停止位时禁止所述串行端口。
2.如权利要求1中所述的异步串行数据接收方法,其中当所述起动位从高向低降低时通过产生一中断起动所述串行端口,并当收到所述停止位时通过产生一接收中断而禁止所述串行端口。
3.一种通过TMS320C30 DSP中的串行端口异步发送串行数据的方法,该TMS320C30 DSP包括用于存储脉冲段信息的发送定时器周期寄存器,该信息表示当发送的串行数据的1位时间段表示为由多个时钟脉冲组成的脉冲段时多少时钟脉冲对应串行数据的一位;以及发送定时器计数器,用于对所述时钟脉冲计数到由所述发送定时器周期寄存器确定的数值、复位计数的数值为零、并从零开始重新计数,所述方法包括以下步骤通过向待发送的数据部分的开始和末尾添加起动和停止位形成异步数据而产生数据帧;在发送所述起动位时的时间点初始化所述发送定时器计数器为零;每当所述发送定时器计数器的数值变为等于所述发送定时器周期寄存器中的数值时则发送一位数据;以及重复发送一位的所述步骤直到发送所述停止位为止。
4.如权利要求3中所述的异步串行数据发送方法,其中如果所述DSP还包括用于暂时存储待发送的数据的所述发送队列,则向所述数据帧产生步骤输入的数据首先存储在发送队列,且在所述发送队列存储数据的方法包括以下步骤确定所述发送队列数据是否为空;以及当所述发送队列数据不空时,起动发送中断以便向所述发送队列发送数据,并当所述发送队列数据为空时,禁止所述发送中断以便停止数据发送。
5.如权利要求4中所述的异步串行数据发送方法,其中所述发送队列包括第一发送队列,用于存储由所述DSP待发送的数据;以及第二发送队列,用于存储所述第一发送队列的数据并向所述帧产生步骤提供数据。
全文摘要
本发明提供了一种使用数字信号处理器的串行端口发送和接收异步串行数据的方法。该方法包括以下步骤:确定起动位是否被接收;当接收的起动位从高向低降落时起动串行端口;当串行端口被起动时设置接收定时器计数器的初始值为接收脉冲段寄存器中一半的数值;每当接收定时器计数器的数值变为等于接收定时器周期中寄存器的数值时接收一位数据,直到接收到停止信号为止;以及当接收到停止位时禁止串行端口。根据这一方法,能够进行十分可靠的异步串行通信。
文档编号H04L25/38GK1195797SQ98104479
公开日1998年10月14日 申请日期1998年2月19日 优先权日1997年4月8日
发明者高镇信 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1