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

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

Info

Publication number
CN1195797A
CN1195797A CN98104479A CN98104479A CN1195797A CN 1195797 A CN1195797 A CN 1195797A CN 98104479 A CN98104479 A CN 98104479A CN 98104479 A CN98104479 A CN 98104479A CN 1195797 A CN1195797 A CN 1195797A
Authority
CN
China
Prior art keywords
data
serial
numerical value
reception
transmit queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN98104479A
Other languages
English (en)
Inventor
高镇信
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN1195797A publication Critical patent/CN1195797A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/38Synchronous or start-stop systems, e.g. for Baudot code

Abstract

本发明提供了一种使用数字信号处理器的串行端口发送和接收异步串行数据的方法。该方法包括以下步骤:确定起动位是否被接收;当接收的起动位从高向低降落时起动串行端口;当串行端口被起动时设置接收定时器计数器的初始值为接收脉冲段寄存器中一半的数值;每当接收定时器计数器的数值变为等于接收定时器周期中寄存器的数值时接收一位数据,直到接收到停止信号为止;以及当接收到停止位时禁止串行端口。根据这一方法,能够进行十分可靠的异步串行通信。

Description

数字信号处理器中发送和接收异步串行数据的方法
本发明涉及串行数据通信方法,特别涉及使用数字信号处理器(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的同步串行端口实现。而且,即使在长时间通信期间也不会发生故障,从而能够进行十分可靠的异步串行通信。

Claims (5)

1.一种通过TMS320C30 DSP的串行端口异步接收串行数据的方法,该TMS320C30 DSP包括:用于存储脉冲段信息的接收定时器周期寄存器,该信息表示当发送的串行数据的1位时间段表示为由多个时钟脉冲组成的脉冲段时多少时钟脉冲对应串行数据的一位;以及接收定时器计数器用于对所述时钟脉冲计数到由所述接收定时器周期寄存器确定的数值、复位计数的数值为零、并从零开始重新计数,所述方法包括以下步骤:
确定起动位是否被接收;
当所述接收的起动位从高向低降落时起动所述串行端口;
当所述串行端口被起动时设置所述接收定时器计数器的初始值为所述接收脉冲段寄存器中一半的数值;
每当所述接收定时器计数器的数值变为等于所述接收定时器周期中寄存器的数值时接收一位数据,直到接收到停止信号为止;以及
当接收到所述停止位时禁止所述串行端口。
2.如权利要求1中所述的异步串行数据接收方法,其中当所述起动位从高向低降低时通过产生一中断起动所述串行端口,并当收到所述停止位时通过产生一接收中断而禁止所述串行端口。
3.一种通过TMS320C30 DSP中的串行端口异步发送串行数据的方法,该TMS320C30 DSP包括:用于存储脉冲段信息的发送定时器周期寄存器,该信息表示当发送的串行数据的1位时间段表示为由多个时钟脉冲组成的脉冲段时多少时钟脉冲对应串行数据的一位;以及发送定时器计数器,用于对所述时钟脉冲计数到由所述发送定时器周期寄存器确定的数值、复位计数的数值为零、并从零开始重新计数,所述方法包括以下步骤:
通过向待发送的数据部分的开始和末尾添加起动和停止位形成异步数据而产生数据帧;
在发送所述起动位时的时间点初始化所述发送定时器计数器为零;
每当所述发送定时器计数器的数值变为等于所述发送定时器周期寄存器中的数值时则发送一位数据;以及
重复发送一位的所述步骤直到发送所述停止位为止。
4.如权利要求3中所述的异步串行数据发送方法,其中如果所述DSP还包括用于暂时存储待发送的数据的所述发送队列,则向所述数据帧产生步骤输入的数据首先存储在发送队列,且在所述发送队列存储数据的方法包括以下步骤:
确定所述发送队列数据是否为空;以及
当所述发送队列数据不空时,起动发送中断以便向所述发送队列发送数据,并当所述发送队列数据为空时,禁止所述发送中断以便停止数据发送。
5.如权利要求4中所述的异步串行数据发送方法,其中所述发送队列包括:
第一发送队列,用于存储由所述DSP待发送的数据;以及
第二发送队列,用于存储所述第一发送队列的数据并向所述帧产生步骤提供数据。
CN98104479A 1997-04-08 1998-02-19 数字信号处理器中发送和接收异步串行数据的方法 Pending CN1195797A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1019970012794A KR100230451B1 (ko) 1997-04-08 1997-04-08 디지털 신호처리 프로세서의 비동기방식 직렬데이터 송수신 방법
KR12794/97 1997-04-08

Publications (1)

Publication Number Publication Date
CN1195797A true CN1195797A (zh) 1998-10-14

Family

ID=19502139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN98104479A Pending CN1195797A (zh) 1997-04-08 1998-02-19 数字信号处理器中发送和接收异步串行数据的方法

Country Status (5)

Country Link
US (1) US6240151B1 (zh)
JP (1) JP2971849B2 (zh)
KR (1) KR100230451B1 (zh)
CN (1) CN1195797A (zh)
RU (1) RU2145729C1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101140551B (zh) * 2006-09-07 2010-06-16 中国科学院长春光学精密机械与物理研究所 一种实现数字信号处理器异步串行通讯的装置
CN105871383A (zh) * 2016-03-29 2016-08-17 上海斐讯数据通信技术有限公司 数据截止位提取电路、串并转换电路以及串行点灯电路

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW484101B (en) * 1998-12-17 2002-04-21 Hitachi Ltd Semiconductor device and its manufacturing method
KR100533864B1 (ko) * 1999-03-09 2005-12-07 가부시키가이샤 산요붓산 탄구유기기(彈球遊技機)의 제어장치
US6393502B1 (en) * 1999-08-31 2002-05-21 Advanced Micro Devices, Inc. System and method for initiating a serial data transfer between two clock domains
JP4364041B2 (ja) * 2004-04-01 2009-11-11 Okiセミコンダクタ株式会社 データ転送回路
US7929714B2 (en) * 2004-08-11 2011-04-19 Qualcomm Incorporated Integrated audio codec with silicon audio transducer
CN100338845C (zh) * 2004-12-24 2007-09-19 上海协同科技股份有限公司 用串行同步通信总线进行内部通信的输入输出模块
KR100688516B1 (ko) * 2005-01-11 2007-03-02 삼성전자주식회사 단일 라인을 이용한 직렬 데이터 통신 방법 및 그 장치
US8077625B1 (en) * 2005-06-30 2011-12-13 National Semiconductor Corporation Apparatus and method for using a communication resource for performing a timing operation
US8761324B1 (en) * 2009-07-10 2014-06-24 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for phase signaling
GB2537856A (en) * 2015-04-28 2016-11-02 Nordic Semiconductor Asa Communication between intergrated circuits
CN105005511A (zh) * 2015-06-30 2015-10-28 宁波东海仪表水道有限公司 一种串行通信数据校验方法
KR101921119B1 (ko) 2016-07-19 2018-12-06 주식회사 지엠케이 비동기 디지털 통신 모듈
CN113094305B (zh) * 2021-04-02 2024-03-26 北京黑蚁兄弟科技有限公司 一种异步通信处理方法、装置和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6220451A (ja) 1985-07-19 1987-01-29 Nec Corp 符号変換装置
JPS6281840A (ja) 1985-10-04 1987-04-15 Tsubakimoto Chain Co 同期回路
JPS63238745A (ja) 1987-03-26 1988-10-04 Matsushita Electric Works Ltd デ−タ伝送装置
EP0389696A1 (en) 1989-03-29 1990-10-03 International Business Machines Corporation Serial data receiver
JPH0385043A (ja) 1989-08-29 1991-04-10 Fujitsu Kiden Ltd データ転送装置
JP3466738B2 (ja) * 1994-11-21 2003-11-17 ヤマハ株式会社 非同期シリアルデータ受信装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101140551B (zh) * 2006-09-07 2010-06-16 中国科学院长春光学精密机械与物理研究所 一种实现数字信号处理器异步串行通讯的装置
CN105871383A (zh) * 2016-03-29 2016-08-17 上海斐讯数据通信技术有限公司 数据截止位提取电路、串并转换电路以及串行点灯电路
CN105871383B (zh) * 2016-03-29 2020-02-11 上海斐讯数据通信技术有限公司 数据截止位提取电路、串并转换电路以及串行点灯电路

Also Published As

Publication number Publication date
US6240151B1 (en) 2001-05-29
KR100230451B1 (ko) 1999-11-15
RU2145729C1 (ru) 2000-02-20
JP2971849B2 (ja) 1999-11-08
JPH10303993A (ja) 1998-11-13
KR19980076203A (ko) 1998-11-16

Similar Documents

Publication Publication Date Title
CN1195797A (zh) 数字信号处理器中发送和接收异步串行数据的方法
CN100481043C (zh) 用于处理输入/输出命令的方法、系统和程序
US6463338B1 (en) Industrial controller and network card with buffer negotiation
CN1009893B (zh) 测定数据传输速率的方法和装置
US6167032A (en) System and method for avoiding host transmit underruns in a communication network
US7007119B2 (en) System and method for supporting split transactions on a bus
US5634069A (en) Encoding assertion and de-assertion of interrupt requests and DMA requests in a serial bus I/O system
CN101052938B (zh) 低等待时间的数据分组的接收和处理
CN107153412B (zh) 一种具有发送fifo的can总线控制器电路
EP1223515A2 (en) Bidirectional parallel signal interface
CN113726498A (zh) 基于spi的双全工通信方法、主机、从机及存储介质
CN100470524C (zh) 一种小容量fifo存储器的数据搬移触发装置和方法
CN1705929B (zh) 用于将数据返回给通过总线接收的读请求的方法和系统
CN101052937B (zh) 从数据队列中丢弃部分接收的消息
CN100578971C (zh) 通过通用串行总线通道进行传输的装置及方法
US5774745A (en) Method and apparatus for writing and reading entries in an event status queue of a host memory
CN1184558C (zh) 一种打印设备
CN114610231A (zh) 大位宽数据总线分段存储的控制方法、系统、设备及介质
JP2523874B2 (ja) 非同期式シリアルデ―タ伝送装置
EP0090408A2 (en) Component selection system for a multiple line adapter organization
CN112559052B (zh) 一种指令集调用方法、装置、终端及存储介质
CN1049751C (zh) 虚拟阵列式直接存贮器存取装置
US20020087752A1 (en) Method of real time statistical collection for I/O controllers
CA1174373A (en) Channel adapter for virtual storage system
Cranfield et al. Prototyping hardware for the ATLAS readout buffers

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication