本申请与申请号为US07/917497、07/917489、07/917488、07/917503、07/918627、07/918626、07/918625、07/918631、07/918632、07/918622和07/918621的美国专利申请有关。
这些相关的申请与本申请同一日期提交,并转让给本发明的受让人。
本发明涉及在微控制器和其它设备间进行通信的系统,尤其涉及用于在单片微控制器和外部设备间进行通信的、实现串行接口功能的系统。
串行和并行接口是该领域技术人员所熟知的。串行接口包含对整体的各部分例如字符的各位,词的各字符等使用相同的设备进行时序处理。另一方面,并行接口包含对整体的各部分使用不同的设备进行同时处理。
本发明涉及串行接口,它例如能允许一个单片微控制器与许多工业标准外部设备例如串行电可擦可编程只读存储器(EEPROM)进行对话。通常,这类接口的构成强烈地依赖用软件来控制微控制器的各个端口。已经作了某些努力以制作带有专用硬件的串行接口,但这些努力并没有产生简单、低成本以及灵活的方案,来替代大量依靠软件的串行接口。
基于上述,显然,现有技术的缺陷和不足在于:没有对于集成电路(IC)发展一种简单、低成本及灵活的接口模块,该接口主要是由硬件构成的且该接口允许在单片微控制器和接收用外部设备之间进行串行通讯。
为了克服上述现有技术的缺陷和不足,本发明提供一种串行通讯系统,它包括用于启动和停止内部时钟的串行通讯端口结构。该内部时钟被设计成,在运行中将产生的时钟输出信号传输至系统外的、与串行通讯口配合工作的设备。通过把该时钟输出信号与预定长度的数据输出信号相“与”,串行通讯口能有效地控制由外部设备所感知的那个时间通道。
因而,本发明可理解为为微控制器提供串行输入/输出口,该串行输入/输出口在运行时输送数据和时钟信号至外部设备。由本发明提供的串行输入/输出口包括:用于确定传送至外部设备的数据位的选定数量的装置;用于刚好产生能传送选定数量的数据位所需的时钟脉冲的装置;用于启动产生时钟脉冲以传送所选定的数据位数的装置;和一旦传送选定的数据位数所需的时钟脉冲产生,立即停止时钟脉冲产生的装置。
本发明也为微控制器提供一种串行输入/输出口模块,该串行输入/输出口模块可在运行中传送数据和时钟信号至外部设备。按照本发明的揭示,该串行输入/输出口模块包括:一内部时钟;用于启动内部时钟的装置;当该时钟运行时,用于发送预定数据位数至外部设备的装置;和当预定位数的发送一旦完成,立即停止内部时钟的装置。
进而,本发明提供一种经串行输入/输出口,从微控制器向外部设备发送数据的方法。由本发明提供的方法包括:与时钟信号同时地发送预定量的数据至外部设备的步骤,和当预定量的数据的末尾一旦发送,立即停止时钟信号的步骤。
于是,本发明的一个目的是提供一种简单、低成本且灵活的串行接口。
本发明的另一个目的在于为集成电路提供一种主要由硬件构成的接口模块,它允许在单片微控制器的接收用外部设备间进行串行通讯。
为了更完全地理解本发明及其进一步的目的和优点,现在结合附图作如下详细叙述,其中:
图1是本发明的串行接口的框图。
图2是包括图1的串行接口的集成电路的框图。
图3是其中包括图2集成电路的无绳电话终端单元的框图。
图4是其中包括图2集成电路的无绳电话基站的框图。
图5是可用于本发明实施例地串行口工作模式寄存器的框图。
图6是可用于本发明实施例的SI/O发送缓冲器的框图。
图7是可应用于本发明实施例的SI/O接收缓冲器的框图。
图8是可应用于本发明实施例的SI/O发送长度寄存器的框图。
图9是可应用于本发明实施例的SI/O状态寄存器的框图。
图10是可应用于本发明实施例的串行口中断屏蔽寄存器的框图。
图11是可应用于本发明实施例的串行口中断源寄存器的框图。
为了便于理解本发明,这里将以一个在微控制器系统中执行系统控制功能的模块的形式加以叙述,包括无绳电话的特定应用也将叙述。这样的讨论是特别有利的,因为如所叙述的本发明的实施例已经实际构成并在使用中产生显著效果。但是应该记住,这时所描述的发明并不限于无绳电话应用。相反,本发明的实施例实际上可用于任何需要串行接口的应用,或通过配置串行接口可得到改进的应用。这里所叙述的本发明的特定实施例仅仅是示范性的。
现在,参照图1,它表示一个串行接口框图。这个特定的串行接口是设计成可供与频率合成器(如Fujitsu的MB1501频率合成器)通讯的四个串行通道、一个LCD控制器(如NEC的micro P.D7225LCD控制器)、一个EEPROM(如S2914 AR/1EEPROM)和PCM编码译码器测试设备的组合。在示于图1的本发明的实施例中,一组共同的发射、接收和时钟逻辑用于支持合成器、LCD、EEP-ROM和PCM接口。以后,这个组合的硬件组称为串行I/O或SI/O接口。
在说明上述的用于完成各种需求的SI/O硬件以前、由需要与SI/O接口进行通讯的各种外部设备加于该接口的操作要求将首先进行讨论。这些操作要求是基于合成器接口、LCD接口,EEPROM接口和PCM测试口接口而产生的。每个接口即将在下面讨论。另外,对于本发明的实际构造和使用的实施例的异常条件的测试情况也将讨论。
关于合成器接口,应该明白IC和合成器芯片之间的通讯是单向的即从IC至合成器。需要三个接口信号:Tx数据,移位时钟,和合成器锁存器。Tx数据信号用于串行数据输出。在实际操作中,数据在时钟下降沿首先发送最高有效位(MSB)。对于移位时钟信号可使用50%占空度的周期时钟。这允许编程速率为例如288Kbps(千比特/秒),144Kbps,72Kbps和36Kbps,在实际操作中,时钟仅当数据正在发送时被选通,并在模块“使能”的其余时间保持高电位。关于合成器锁存器信号,“锁存”脉冲在最后的一位发送后在专用的引脚上被发送。在本发明的实际构造的实施例中,这个功能由一个通用的并行口插脚所支持。
关于LCD接口,串行接口提供用于单片微控制器和LCD控制器集成电路间的通讯。类似于合成器接口,这个接口是单向的即从IC至LCD控制器。在这个接口上有五个接口信号。Tx数据信号用于发送每字8位、最高位在前的串行数据输出。其余四个信号是移位时钟信号,片选信号,命令/数据信号和“忙”信号。关于移位时钟信号,在本发明的实际构造的实施例中,数据与占空度为50%的周期时钟信号的下降沿同步地被发送(在上升沿被接收入LCD控制器,建立和保持时间为1微秒)。时钟速率可编程以选择288Kbps,144Kbps,72Kbps和36Kbps。时钟仅当数据发送时被选通,对发送数据的每个字节输出8个周期。当数据不发送时,时钟信号保持高电位。片选插脚是受软件控制的一个端口插脚。在这个插脚上的低电平有效的输出信号,表示在Tx数据输出插脚上的数据要送给LCD控制器。命令/数据和“忙”插脚也是受软件控制的。命令/数据插脚提供地址线至LCD控制器。“忙”插脚与LCD控制器一起产生“忙”选通信号,用于指示LCD控制器已经空闲,可接收下一数据字节。
在本发明的实际构造的实施例中,EEPROM接口是双向的,并与支持松下(National)、通用仪器公司(General Instruments)和埃克赛尔(Exel)接口的8位和16位设备兼容。另外,对在时钟下降沿输出数据的设备也提供支持。这样,为了与众多设备兼容,可在端口编程以在上升沿或下降沿接收数据。四个接口插脚用于支持Tx数据,Rx数据,移位时钟和片选信号。Tx数据插脚用于串行数据输出。在本发明实际构造的实施例中,在时钟的下降沿发送数据,首先发送最高有效位。字长从5至28位。字长大于8位的字可在二个或更多的单元中发送。例如,11比特的字可作为一字节后随3比特字或7比特和4比特字或11个1比特字发送。Rx数据插脚则用于串行数据输入(在这里叙述的系统中,它指MSB在前的8或16位字)。当数据在时钟的上升沿被接收时,第一个数据位在上一个比特发送时间的末尾,即输出该比特的下降沿以后的一个半时钟周期之后的第一个时钟上升沿被接收。当数据在下降沿接收时,第一个数据位在输出上一个发送比特的下降沿后的第二个边沿被接收。在这种情况下,“空”位(“dummy”bit)是不接收的。关于移位时钟插脚,在本发明的实际构造的实施例中,数据与占空度为50%的周期时钟信号的下降沿同步地被发送。当多字节字被发送时,时钟输出在发送同一字的各部分时均保持高电平。数据在同一时钟的上升或下降沿从EEPROM接收。时钟速率可通过编程选择288kbps、144Kbps、72Kbps和36Kbps。对于写操作,时钟仅在数据正被发送时有效。当数据发送停止时它保持高电位。对于读操作,时钟在序列中的发送信息结束后继续运行,直到在SI/O方式寄存器中规定的8比特或16比特信息(将在下文讨论)被接收为止。片选插脚是受软件控制的端口插脚,它的低电平有效的输出表示EEPROM正被访问。
现在说明PCM测试端口的接口。在本发明的实际构造的实施例中,可由软件调用两种特定的工作模式,即把串行口转换成编码译码器或ADPCM代码转换机测试端口。在编码译码测试方式中“数据输入”插脚成为64Kbps的发送输出,而“时钟”插脚成为选通的512KHZ PCM数据时钟输出,即帧速率为8KHZ的8周期脉冲串。在ADPCM测试方式,“数据输入”插脚成为64Kbps AD-PCM发送输入(或PCM数据输入),“输出数据”插脚成为64Kbps ADPCM接收输出(或PCM数据输出),时钟插脚成为512KHZ PCM数据时钟输出,即帧速率为8KHZ的8比特脉冲串。B/D通道端口提供8KHZ帧同步时钟。64KHZ数据时钟必须与8KHZ帧同步时钟同步。
进一步叙述关于PCM测试端口接口。PCM测试端口不使用串行I/O端口发送缓冲器、接收缓冲器或时钟产生器。由声频路径逻辑(audio path logic)提供时钟和串行发送的比特流,并以串行方式接收接收数据。换句话说,PCM测试功能使用串行I/O端口插脚,而支援时钟操作、时钟同步、串行至并行和并行转换的逻辑则在声频路径逻辑内处理。
作为上述示于图1的本发明的实施例一般性问题,还可以说明异常条件的测试情况。
关于异常条件,如果软件发送一个读命令至EEPROM,但未在串行端口方式寄存器中将读位置“1”,则EEPROM在下次串行端口时钟有效且EEPROM片选有效时将试图完成读操作。在本发明的实施例中,接收器将忽略任何在这种时刻返回的数据。
在本发明的实施例中,约有七个方面可通过测试情况被校验。首先,可校验每个被校SI/O外部设备的发送情况。包括:对发送的1至8位的时钟数是否正确,时钟是否停在正确状态,当发送和时钟重新开始时其建立时间是否适当,对在上升和下降沿接收的空位是否已适当处理等。其次,校验当接口禁用时时钟是否在合适状态被关闭。进而,可校验SI/O接收和发送缓冲器的缓冲器状态以验证SI/O数据并未在错误时间被接收。PCM方式的操作,包括插脚多路复用也可校验。还可校验中断状态报告,包括双缓冲的接收缓冲器的异步读。最后,还可以校验所有寄存器的缺陷。
再参见图1,从图中可见,本发明的实施例包括:发送缓冲器2,接收缓冲器4,时钟产生器6,可编程字长计数器8和一个方式寄存器(也以标号6表示)。这些部件中的每一个讨论如下:
关于发送缓冲器移位寄存器2,从图1可见,8位长的发送移位寄存器构成本发明的实施例的一部分。在该实施例中,这个寄存器2由软件装入数据的1至8位。实际装入的位数与在SI/O发送长度寄存器中编程的位数相应。数据首先从最高有效位发送,把移位寄存器的最高有效位装入数据总线的位“7”。当装入少于8位时,由软件确定在移位寄存器最低有效位中将被发送的各位的位置。如果不进行接收,当写入缓冲器时,发送就开始,否则发送在读操作完成后自动开始。
在本发明的实施例中,当发送不进行时,软件仅输入数据至缓冲器。如果在发送期间,微控制器试图写入缓冲器,无错误指示产生。数据在移位时钟的下降沿移出缓冲器。在SI/O接口启动及数据不发送时,输出插脚保持高电位。如果接收装置需要一个高的“起动”位,软件发送一个低电位的“空”位。
也是在本发明的实施例中,每当发送移位寄存器为空时,SI/O状态寄存器中的状态位置“1”。当在移位寄存器中有数据时,状态位便清零。每当该位置“1”时,产生一个可屏蔽中断。在正常情况下,仅当数据已经装入移位寄存器2且将被传输的字多于1个时,软件才允许中断。这使得当最后一位一移出移位寄存器,在最后一位时间的末尾才能产生中断,以表示新的字可被装入。
在本发明的实际构造的实施例中,将被发送的位数(1至8位)可在SI/O发送长度寄存器中规定。
接收缓冲器4是单字节双缓冲的寄存器。当数据串行地移入缓冲器对的一半时,如果另一半是空的,则数据自动地传输至另一半。这允许在8位宽的EEPROM中用作双缓冲器,而使用16位宽EEPROM时用作单缓冲器。数据由微控制器从缓冲器对的另一半读出。
数据可在时钟信号的上升或下降沿可编程地接收。如果数据在时钟的上升沿接收,则第一位在输出上一个传输位的下降沿后的第二个上升沿,即1.5个时钟周期后被接收。如果数据在下降沿接收,则数据在输出上一个传输位后的第二个下降沿,即2个时钟周期后被接收。
每当缓冲器中有至少一个字节数据时,SI/O状态寄存器中的状态位置“1”。当寄存器为空时,该位被清零。每当该位置“1”时即产生可屏蔽中断。
继续参照图1,具体参见时钟产生器6,时钟产生器6为各种操作方式产生正确的时钟输出。送至SI/O时钟产生器的主输入时钟来自时钟产生器模块(参见图2a)。数据速率可在位于时钟产生器模块中的串行口定时控制寄存器中编程。可能的数据速率包括288KHZ、144KHZ,72KHZ和36KHZ。时钟信号仅当串行口模块启动时才能输入,当串行口模块被禁止时便保持低电位。当串行口被禁止或当IC被复位时,SI/O时钟输出插脚保持低电平。如下面将要讨论的,当时钟有效时,它的输出波形和周期数取决于串行口的工作方式。
关于发送方式,时钟输出是时钟分配器输出与来自发送长度计数器的控制信号相“与”的结果。因此对每一将被发送的字仅产生所需的时钟脉冲数。当发送多字节字时,该字各部分的发送用时钟输出相连。若未进行接收,写入发送缓冲器时,发送即开始,否则等读操作完成后发送自动开始。
关于接收方式,时钟输出除以下一点外均与发送方式相同。即,如果SI/O方式寄存器中的读/写位在发送操作完成时被采样为“读”,则时钟输出保持运行直至编程的位数已经全部移入。
继续参照图1,尤其是其中的发送长度计数器8,可以注意到每次发送可为从1至8位的一个段。每段的位数在发送缓冲器装入数据前通过编程送入SI/O发送长度寄存器。如果连续的区段有相同的长度,长度寄存器不需重编程。
关于接收字长度计数器,被接收的字的字长可是8或16位,希望的长度通过软件编程送入SI/O方式寄存器。
根据上述,应该清楚,软件规定了SI/O方式寄存器中各种接口格式和时钟速率。也应清楚,被接收的字长(即,8或16位)和该数据接收的边沿在这个寄存器中也可编程。
仍参照图1,从图中可见,串行口有SI/O数据输出插脚10,SI/O数据输入插脚12和SI/O时钟输出插脚14。SI/O数据输出插脚10用于SI/O数据输出。在本发明的实际构造的实施例中,MSB在前的数据在时钟下降沿发送,当模块禁止即停止运转时或IC复位时,插脚保持低电平。SI/O数据输入插脚12用于SI/O数据输入。在本发明的实际构造的实施例中,数据在SI/O时钟的上升沿或下降沿用编程的时钟信号打入。SI/O时钟输出插脚14用于SI/O时钟输出。在本发明的实施例中,这一选通的时钟按编程操作产生正确的时钟数。也就是说,它不是自由运行的。当模块禁用即停止运转或IC复位时,该插脚保持低电平。
进一步参照图1,从图中可见,串行口模块包含七个用户可视寄存器(visible register)。这些寄存器包括:串行口方式寄存器6,SI/O发送缓冲器2,SI/O接收缓冲器4,SI/O发送长度寄存器8以及一个SI/O状态寄存器、一个SI/O中断屏蔽寄存器和一个SI/O中断源寄存器。
现在参照图2,它表示包括按照本发明的串行口的集成电路(IC)的框图。因为示于图2的IC在相关部分中作了详细讨论,图2中的各部件不再详细讨论。但,注意到串行口(图2的部件16)如何连结到集成电路中对该领域技术人员来说是有用的。
从图2中可见,根据本发明的串行口模块16可以这样结合到IC中,使它的SI/O时钟输出、SI/O数据输出、SI/O数据输入和输出1用作IC的外部接口。从图2还可看出,串行口模块接收来自IC的、记为out 0和out 1的信号输入。又,按照本发明的串行口模块也接收512K脉冲串时钟输入信号。它来自图2所示IC的RxFIFO部分。
从图2中可见,根据本发明的串行口模块也传输一个串行口中断信号输出给IC。
最后,从图2中可见,有两路测试信号将示于图2的IC的编码译码器部分和根据本发明的串行口连接在一起。
现在参照图3和图4,图3和图4分别表示无绳电话的终端或送受话器(handset)部分以及该无绳电话的基站部分。从图3和图4可见,示于图2的IC在所述的无绳电话的终端和基站部分起重要作用。从图3和图4还可看出,根据本发明的串行口模块的各种输入和输出信号如何与IC的外部部件在无绳电话内相接。
下面仅通过举例,详细说明本发明的实际构造的实施例中的各种用户可视寄存器。下面将分别讨论示于图5-11的串行口方式寄存器,SI/O发送缓冲器,SI/O接收缓冲器,SI/O发送长度寄存器,SI/O状态寄存器,串行口中断屏蔽寄存器和串行口中断源寄存器。
串行口方式寄存器
地址:FF30
容量:3比特
默认值:XXXXX000
访问方式:读/写
置定方式:软件
清零方式:软件,复位
这个寄存器规定串行口模块的操作方式。注意:SI/O启动及数据速率控制位在时钟产生器模块中确定。该寄存器示于图5。
位7-4 保留位-写操作必须写零。读时返回一个不确定的值。用读-修改-写操作能写回该读出值。
位3 时钟电平选择-当SI/O口启动且时钟无效时用于选择时钟插脚的状态。当该位置位时,时钟保持低电位。当该位清零时,时钟保持高电位。这在便于与不同部分工作这一点上增加了适应性。
位2 接收时钟边沿选择-当置位时,数据在SI/O时钟的上升沿接收。当清零时,数据在SI/O时钟下降沿接收。
位1 接收长度选择-当置位时,接收8位字。当清零时,接收16位字。
位0 读/写选择-这位在每次发送操作末尾被采样。如果它置位,硬件将保持时钟运行并接收一个字。如果它清零,时钟停止。注意数据能在任一状态用该位发送(但数据发送与接收不能重叠)。
SI/O发送缓冲器
地址:FF31
容量:8位
默认值:任意
存取方式:写
设置方式:软件
清零方式:N.A.
该SI/O接口发送数据寄存器示于图6。
位7-0 发送数据-写入该寄存器的数据首先发送MSB(寄存器位“7”相应于数据总线的位“7”)。当少于8位的字长在SI/O发送长度寄存器中被传输时,这些传输的位必须装入该寄存器的最低有效位位置。
SI/O接收缓冲器
地址:FF32
容量:8位
默认值:任意
存取方式:读
设置方式:硬件
清零方式:软件读
该SI/O接口接收数据寄存器示于图7。
位7-0 接收数据-被接收的数据通过软件从该寄存器读取。接收的第一位在位“7”位置上。注意:这是由接收移位寄存器和本寄存器组成的双缓冲器中可由用户存取的部分
SI/O发送长度寄存器
地址:FF33
容量:3位
默认值:XXXXX000
存取方式:读/写
置位方式:软件
清零方式:软件,复位
本寄存器示于图8,它规定发送字的长度。
位7-3 保留位-写操作时必须写零。读时返回一个不确定的值。用读-修改-写操作能写回该读出值。
位2-0 字长-用软件把将要发送的字的字长以代码形式写入这些位。如果发送相同字长的多个字,软件不需要重写该寄存器。
比物210字长
0008
0011
0102
0113
1004
1015
1106
1117
SI/O状态寄存器
地址:FF37
容量:2位
默认值:00(十六进制)
存取方式:读
置位方式:硬件
清零方式:硬件,复位
该寄存器示于图9,它包含SI/O接口的状态位。
位7-2 保留位-对于本改进型的IC,读时返回零。将来进一步改进的IC将在这些位的1到若干位中读出“1”。编写软件时应考虑到这些情况。
位1 SI/O发送缓冲器空-该位每当SI/O发送缓冲器为空时被置位。当数据在缓冲器中出现时它被清零。
位0 SI/O接收数据有效-当在SI/O接收数据寄存器(双缓冲的)的用户可访问部分中有数据的满字节时,该位置位。当缓冲器的用户可访问部分空且在将被传递给用户可访问部分的缓冲器的移位寄存器部分中没有完整字节时,该位清零。
串行口中断屏蔽寄存器
地址:FF38
容量:2位
默认值:XXXXXX00
存取方式:读/写
置位方式:软件
清零方式:软件,复位
示于图10的该寄存器包含与SI/O状态寄存器中的位相应的中断允许位。
位7-2 保留位-写操作时必须写零。读时返回一个不确定的值。用读-修改-写操作能写回该读取值
位1 SI/O发送缓冲器空-当置位时允许中断。当清零时,中断被屏蔽。
位0 SI/O接收数据有效-当置位时允许中断。当清零时,中断被屏蔽。
串行口中断源寄存器
地址:FF39
容量:2位
默认:00(十六进制)
存取方式:读
置位方式:硬件
清零方式:硬件,复位
示于图11中该寄存器报告对微控制器请求中断的SI/O中断源。以下对这些位的叙述假设中断未受屏蔽。
位7-2 保留位-对于本改进型的IC读时返回零。将来进一步改进的IC将在这些位的一到若干位中读出“1”。编写软件时应考虑到这些情况。
位1 SI/O发送缓冲器空-每当SI/O发送缓冲器变空时该位置位。当数据装入缓冲器时该位清零。一旦数据已装入移位寄存器且另有一个字节的数据需要发送时,软件应仅允许这个中断。
位0 SI/O接收数据有效-当一个数据字节已转移至SI/O接收数据寄存器(双缓冲的)的用户可访问部分时,该位置位,当缓冲器的用户可访问部分变空时且在将转移至用户可访问部分的缓冲器的移位寄存器部分中无完整的字节时,该位清零。
现在,本领域的技术人员应完全理解和赞赏本发明的结构,操作和优点。实质上,本发明提供包括用于启动和停止内部时钟的串行通讯口结构的串行通讯系统。该内部时钟设计成能在运行中产生时钟输出信号,发送到系统以外与串行通讯口配合工作的设备。通过把时钟输出信号与预定长度的数据输出信号相“与”,串行通讯口能有效地控制由外部设备所感知的信号通过时间。因而,本发明提供一种简单、低成本且灵活的、主要由硬件组成的串行接口。
显然,根据上述揭示,可能作出种种修改和变换。因而,在所附权利要求的范围内,本发明的实际应用不限于上面所具体叙述的内容。