具有相互通信处理器的设备、收音装置及非临时存储介质的制作方法

文档序号:14911105发布日期:2018-07-10 23:26阅读:149来源:国知局

本发明涉及包括多个彼此通信的处理器(例如微处理器)的设备。



背景技术:

许多已知的处理器,例如微处理器,包括一个或多个用于与其他设备通信的接口或端口。通常,端口上可获得的数据速率取决于处理器的类型和速度,端口的类型以及在处理器中可用的通信资源。端口上的数据速率也许因此被限制,例如,端口只有少数处理器引脚可用;处理器的时钟频率低;专用通信电路不可用;这样的通信电路具有低的时钟频率;中断电路不可用和/或处理器中用于通信例程的程序存储器或处理时间受到限制。

现有技术已知的各种端口类型包括并行端口和串行端口。对于相同的数据速率,并行端口比串行端口通常需要更多数量的处理器引脚,而串行端口通常需要更多的其他通信资源。

通用异步接收器/发送器(UART)是众所周知的专用通信电路类型,其通常用于通过串行端口(例如,RS-232、RS-422和RS-485端口)来控制米范围内距离上的串行通信。许多微处理器包括一个或两个带有相应UART电路的端口,这些电路使微处理器能够有效地与其他设备进行通信。UART电路通常被托管(host)在专用集成电路芯片上,或者被托管为更复杂的集成电路芯片的一部分,例如微控制器的一部分。

也是众所周知的,内部集成电路(I2C)是主-从串行通信总线,其典型地用于连接厘米范围内距离上的集成电路,例如微处理器和/或共享印刷电路板上的其他电子设备。许多微处理器以及其他电子设备包括专用I2C电路。

通常,例如,通过处理器中的可编程逻辑电路和/或通过运行在微处理器上的软件可以仿真例如UART电路和I2C电路的专用通信电路。例如,微处理器可以包括定义一组通信例程的程序指令,这些通信例程使它能够以仿真通信电路的方式控制多个所谓的通用输入输出(GPIO)引脚。然而,这样的通信例程可能相对复杂,并且可能因此耗尽程序存储器和/或限制微处理器中的其他例程可用的处理时间。

鉴于以上情况,需要一种具有多个处理器的设备,其中每个处理器上的两个逻辑输出引脚和两个逻辑输入引脚(例如,GPIO引脚)可以满足两个处理器之间的有效的半双工双向通信。



技术实现要素:

所声称的设备提供两个或更多个处理器(例如微处理器)之间的通信,并且能够在两个处理器之间进行有效的半双工双向通信,每个处理器只有两个逻辑输出引脚和两个逻辑输入引脚(例如,GPIO引脚)可用于通信。

所述设备允许每个处理器以随机间隔轮询或其它方式读取输入引脚的状态,并以最快可能的速度更新输出引脚的状态,而同时确保没有数据丢失。

所述设备允许在两个不具有如I2C或UART电路的专用通信硬件的处理器之间的四条逻辑线路上进行快速通信。

所述设备的一个优点是可以与处理器允许的一样快地进行通信,并且由于设备不使用固定时钟,所以所述设备调整数据发送速率以在计算中改变和/或中断处理器上的负载。

如果被用于通信的引脚是可用的,一个或两个处理器可以利用中断,这是另一个优点,但不是要求的。

所声称的设备克服了与诸如可编程集成半导体电路的处理器之间的串行通信有关的问题,其中处理器可能具有专用串行端口,诸如I2C兼容串行端口,其被硬连线以与其他处理器通信,但是其中需要一个或多个附加的串行端口。

所声称的设备克服了与分别以比另一个发送或接收更慢的数据速率接收或发送数据位的处理器之一有关的问题。较慢数据速率的原因可能与具有较少资源的处理器、以较慢的时钟速率运行、忙于执行其他任务和/或由于一个或另一个原因发送或接收的数据位缓冲相对较慢有关。

本发明的这些和其他目的通过在独立权利要求中限定的本发明来实现,并且在下面的描述中进一步解释。本发明的进一步目的通过从属权利要求中限定的实施方式和本发明的详细描述来实现。

在此以及下文中,术语“处理器”是指适合于执行本文所述功能的任何电子电路和/或电子设备。具体而言,这些电路和设备包括通用和/或专用可编程微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、专用电子电路等,以及这些电路或装置的组合。

此外,术语“逻辑信号”是指可以在某些时间呈现断言状态并且在其他时间呈现释放状态的信号。与处理器相关的术语“逻辑输入引脚”是指可以接收来自另一个设备的逻辑信号并区分所接收的逻辑信号的状态的处理器的物理端子。与处理器有关的术语“逻辑输出引脚”是指可以将逻辑信号发送到另一个设备并控制发送的逻辑信号的状态的处理器的物理端子。术语“逻辑引脚”是指任何一个逻辑输入引脚和一个逻辑输出引脚。术语“逻辑线路”是指能够将逻辑信号从一个设备的逻辑输出引脚发送到另一个设备的逻辑输入引脚的连接。

为了便于阅读,上面定义的术语可以缩写如下:例如,标写“引脚”可以用于“逻辑引脚”,“输入引脚”可以用于“逻辑输入引脚”,“输出引脚”可以用于“逻辑输出引脚”,“信号”可以用于“逻辑信号”和“线路”可以用于“逻辑线路”。

在本文件中,除非另有明确说明,否则单数形式“一”、“一个”和“该”旨在也包括复数形式(即具有“至少一个”的含义)。相应地,术语“有”、“包括”、“包含”、“具有”、“包括”和“包含”指明各个特征、操作、元件和/或组件的存在,但不排除其他实体的存在或添加。术语“和/或”通常包括一个或多个相关项目的所有组合。除非明确说明,否则本文公开的任何方法的步骤或操作不必按所公开的确切顺序来执行。术语“那么”和“然后”应该暗示顺序(逐步)执行。在“然后”和“于是”之后的步骤的执行可以取决于在编程领域中已知的先前步骤的成功执行。

附图说明

下面参照附图进行更详细的描述,其中:

图1示出具有第一处理器和第二处理器的设备的框图,其中,第一处理器处于发送模式而第二处理器处于接收模式;

图2示出所述设备的框图,其中,第一处理器处于接收模式而第二处理器处于发送模式;

图3示出说明第一处理器和第二处理器之间的通信的时序图;

图4示出处于发送模式的处理器的流程图;以及

图5示出处于接收模式的处理器的流程图。

具体实施方式

图1示出了具有第一处理器101和第二处理器102的设备的框图。设备109可以例如体现为承载包括第一处理器101的第一集成电路和包括第二处理器102的第二集成电路的印刷电路板。可替换地,集成电路可以例如体现为相应的半导体芯片。设备109可以可选地体现为例如多个印刷电路板,每个印刷电路板包括第一和第二处理器101、102中相应的一个,第一处理器101和第二处理器102通过例如电线或其他连接器(例如通过例如所谓的扁平电缆和/或通过具有多个端子的物理连接器)的物理总线互连。作为进一步的替代,电路板可以包括与刚性部分互连的一个或多个柔性部分,其中,第一处理器101和第二处理器102通过柔性部分互连。

第一处理器101和第二处理器102中的一个或两个都可以是可编程处理器,如本领域中已知的一些标准处理器(例如微控制器),但是也可以来自定制的处理器。

作为说明性示例,第一处理器101包括诸如与相应的装置103和104连接的第一I2C端口108和第二I2C端口107的通信端口。装置103和104可以是诸如可编程处理器的处理器。另外,第一处理器101包括第一和第二逻辑输出引脚11、12以及第一和第二逻辑输入引脚13、14。类似地,第二处理器102包括第一和第二逻辑输出引脚21、22以及第一和第二逻辑输入引脚23,24。第二处理器102还包括用于与相应麦克风106和扬声器105通信模拟信号和/或数字信号的两个端口25和26。

第一处理器101的第一输出引脚11通过第一逻辑线路连接到第二处理器102的第二输入引脚24。类似地,第一处理器101的第二输出引脚12通过第二逻辑线路连接到第二处理器102的第一输入引脚23;第一处理器101的第一输入引脚13通过第三逻辑线路连接到第二处理器102的第二输出引脚22;以及第一处理器101的第二输入引脚14通过第四逻辑线路连接到第二处理器102的第一输出引脚21。在图1中,所示的线路的线路功能CLK、DAT、CTS、ACK对应于设备109的第一模式,其中,第一处理器101处于发送模式301,而第二处理器102处于接收模式302。在设备的第一模式中,第一条线路用作从第一处理器101到第二处理器102的时钟线路CLK,第二条线路用作从第一处理器101到第二处理器102的数据线路DAT,第三条线路用作从第二处理器102到第一处理器101的清除发送线路CTS,以及第四条线路用作从第二处理器102到第一处理器101的数据确认线路ACK。线路功能CLK、DAT、CTS、ACK在图3-5的说明中进一步解释。

在设备的一些实施方式中,引脚11-14、21-24可以体现为电引脚。相应地,互连引脚11-14、21-24的线路可以体现为例如本领域已知的与电信号发送有关的裸导线或隔离导线、体现为电路板的金属层或其他导电层中的路径或线路。在所述设备的其它实施方式中,引脚11-14、21-24中的一个或多个可以体现为光端子,并且,相应地,光端子中的相应的线路或部分可以体现为例如本领域中已知的与光信号的发送有关的光管、光纤等。可替换地或另外地,可以使用其它类型的引脚或端子,并且相应地,可以以任何已知的方式将任何已知类型(例如,磁信号、射频信号或电容信号)的信号中的一些或全部逻辑信号进行编码,并通过适合发送这种信号类型的线路来发送。在需要或合适的情况下,端子和/或线路可以包括用于不同类型的信号之间的转换和/或用于启用或改善这种信号的发送和/或接收的任意数量的转换器、编码器、解码器、中继器、滤波器、缓冲器、放大器等等。

处理器101、102中的一个或两个可以是可编程处理器。在分别加载到第一处理器101和/或第二处理器102的程序存储器中的一个或多个相应的程序110,111控制下,第一处理器101和第二处理器102可以通过引脚11-14、21-24和互连线路进行数据通信。在一些实施方式中,一个或多个处理器101、102可以包括中断电路,该中断电路被配置成监视在输入引脚13、14、23、24上接收到的信号的断言(assertion)和/或释放,以及依赖于检测到该信号的断言和/或释放来转换执行由相应程序110,111包含的中断例程。因此,这样的中断电路可以帮助避免或减少处理器101、102之间的通信所需的轮询操作的量。

实施方式可以包括设备109和处理器101、102的其他配置。图1所示的设备109可以例如形成收音装置的一部分,例如,耳机底座、有线或无线头戴式耳机、助听器等、或其任何部分。

图2示出了说明图1的设备的第二模式的框图,其中,第一处理器101处于接收模式401而第二处理器102处于发送模式301,即,与图1相比,处理器101、102具有被互换的模式。相应地,与图1相比,线路功能CLK、DAT、CTS、ACK具有相反的方向。具体而言,为了允许有效且良好控制的从第一模式到第二模式的改变——反之亦然,第一条线路和第四条线路的功能CLK和ACK相互交换,并且第二条线路和第三条线路的功能DAT和CTS相互交换。因此,在设备109的第二模式中,第一条线路用作从第一处理器101到第二处理器102的数据确认线路ACK,第二条线路用作从第一处理器101到第二处理器102的清除发送线路CTS,第三条路线路用作从第二处理器102到第一处理器101的数据线路DAT,并且第四条路线路用作从第二处理器102到第一处理器101的时钟线路CLK。

图3的a示出了说明图1和图2中所示的第一处理器101和第二处理器102之间的数据发送的时序图。

时序图说明时钟线路CLK、数据线路DAT、数据确认线路ACK和清除发送线路CTS上随时间的信号状态。所有线路CLK、DAT、CTS、ACK被显示为“空闲高”(idle high),使得“高”对应于处于释放状态的相应信号,而“低”对应于处于断言状态(asserted state)的相应信号。注意,信号状态可以以本领域已知的与二进制逻辑相关的、而不偏离本发明范围的任何方式进行编码,例如,作为预定义的电压电平、电流电平、光强度、无线电频率等。时序图示出了包括两个数据字节的数据包的发送,每个数据字节具有8位D7-D0。在该图中,时间向右推进。

在没有数据传输的时段中,所述设备处于第三模式,在第三模式中,第一处理器101和第二处理器102都处于接收模式401。在第三模式中,每个处理器101、102呈现对应于其相应的接收模式401的线路功能CLK、DAT、CTS、ACK。因此,第一处理器101呈现如图2(其中,第一处理器101被显示为接收模式401)所示的线路功能CLK、DAT、CTS、ACK,并且第二处理器102呈现如图1(其中第二处理器102被显示为接收模式401)所示的线路功能CLK、DAT、CTS、ACK。在下文中,设备的第三模式将被称为“空闲模式”。在空闲模式下,所有线路CLK、DAT、CTS、ACK上的信号都处于释放状态,在时序图中显示为“高”,并且在数据发送前和后均出现在时序图中。

在设备的空闲模式中,处理器101、102可以通过断言在相应的时钟线路CLK上的信号(呈现对应于启动处理器的发送模式301的线路功能)启动发送,即,向相应的其他处理器101、102表明“请求发送”。因此,每个处理器101、102监控来自相应另一个的处理器101、102的时钟线路CLK。第一处理器101通过第二输入引脚14监控第四条线路上的信号,并且第二处理器102通过第四输入引脚24监控第一条线路上的信号。当处理器101、102检测到时钟信号CLK的断言(即,时钟线路CLK上的信号)时,它将按照下面所描述的作为接收者角色进行响应,除非它自己启动了发送,在这种情况下,解决了如下面进一步描述的冲突请求(也被称为“争用”)。通常,处理器101、102可以通过轮询相应的输入引脚13、14、23、24和/或通过响应由用于这种引脚的中断电路产生的一个和多个中断来监控线路。

在下文中,诸如“断言信号”、“释放信号”和“监视信号”之类的短语被用于分别控制输出引脚以断言相应的信号、用于控制输出引脚以释放相应的信号以及用于通过输入引脚确定相应信号的状态的简写。另外,诸如“转换信号”(toggling a signal)之类的短语被用于控制输出引脚以转换相应信号的状态的简写,即引起信号的状态转换到断言状态和释放状态中的相应另一个状态。此外,命名的信号,例如,“时钟信号CLK”是指具有对应于信号名称的线路功能的特定线路上的信号。注意,上述短语指向哪条特定线路通常取决于控制或确定信号状态的处理器101、102的模式。

第一处理器101和第二处理器102中的任何一个可以在确定所有线路CLK、DAT、CTS、ACK处于释放状态并且设备因此处于空闲模式时在任何时刻启动发送。除非在启动发送时检测到争用(参见下文),则启动处理器101、102因此担当发送器的角色,并且相应的另一个处理器101、102担当接收器的角色。当启动发送时,相应的发送器呈现对应于其发送模式301的线路功能CLK、DAT、CTS、ACK。因此,在第一处理器101启动发送的情况下,它呈现如图1所示的线路功能CLK、DAT、CTS、ACK,其中第一处理器101被示出为发送模式301,并且在第二处理器102启动发送的情况下,其呈现如图2所示的线路功能CLK、DAT、CTS、ACK,其中第二处理器102被示出为发送模式301。相应的接收器像在空闲模式中那样保持线路功能,使得对于数据发送的其余部分,第一处理器和第二处理器101、102根据设备109的第一模式和第二模式中的相同模式呈现线路函数CLK、DAT、CTS、ACK。

下面将图3的a中所示的数据发送描述为发生在具有发送器角色的第一处理器101和具有接收器角色的第二处理器102,即如图1所示,第一处理器101处于发送模式301,而第二处理器102处于接收模式302。然而,由于上述线路功能的交换和它们的方向的固有反转,下面的描述适用于设备的第一和第二模式,并且只有提及的项的具体编号需要改变以适应图2所示设备的第二种模式的描述。

发送器101通过断言时钟信号CLK来启动发送,即通过控制第一输出引脚11来断言第一条线路上的信号,该第一条线路在设备的第一模式下用作时钟线路CLK。在时序图中,这是第一个或最左边的事件,并且由CLK线路为“低”表示。之后,发送器101监控接收器102断言的清除发送信号CTS。为了能够检测争用,发送器101还监控接收器102断言的数据确认信号ACK。注意,发送器101的确认线路ACK对应于另一个处理器102(当处于发送模式301时)的时钟线路CLK。因此,在第二处理器102同时启动数据发送的情况下,发送器101将看到确认信号ACK的断言而不是清除发送信号CTS的断言。这将表明如图3的b所示的争用。争用的解决方法在下面进一步描述。

图3的a显示没有争用的数据发送的启动、结束、执行。在这种情况下,基于检测到时钟信号CLK的断言,接收器102通过断言清除发送信号CTS进行响应,以便发信号来通知发送器101接收器102准备好接收数据。随后,根据检测到来自接收器102的清除发送信号CTS的断言,发送器101发送要发送的数据的第一位。

发送器101根据数据位D7的值,通过断言或释放数据信号DAT来发送第一数据位D7,并随后转换时钟信号CLK。发送器101可以在转换时钟信号CLK之前使用短延迟以允许例如在涉及的线路或引脚上的信号传播时间的不同。没有这个延迟,可能存在传播时间差异可能导致在接收器102处数据位误检测的风险。延迟可以例如由程序指令和/或由硬件(例如在两者都用作时钟线路CLK的第一和/或第四条线路中的一个或多个信号缓冲器)提供。基于检测到CLK时钟信号的转换,接收器102读取数据信号DAT的状态以确定数据位D7的值,并且随后通过转换数据确认信号ACK来响应,以便发信号来通知发送器101接收器102已经成功读取发送的数据位D7。基于检测到数据确认信号ACK的转换,发送器101以与第一数据位D7的发送相同的方式继续发送第二数据位D6,并且接收器102以与读取第一数据位D7相同的方式读取第二数据位D6。

继续上述数据位的交换或发送直到所有数据位D7-D0被发送。接收器102记录接收到的数据位的数量,并且基于确定已经接收到整个数据包(在这种情况下,两个字节分别具有8个数据位D7-D0),通过释放清除发送CTS信号进行响应。这将发信号通知发送器101发送的结束,基于检测到清除发送CTS信号的释放,发送器101恢复到接收模式401。为了确保设备109在完成数据发送之后恢复到空闲模式,发送器101应该释放时钟信号CLK和/或数据信号DAT,尤其如果这些中的任何一个(基于发送最末数据位D0)是断言状态。相应地,在检测到发送器已经释放时钟信号CLK和数据信号DAT之前,接收器102不应该释放清除发送信号CTS。如图3的a所示,发送器101可以记录发送的数据位的数量,并且,在检测到最末数据位D0的数据确认信号ACK的转换后并基于确认整个数据包已经因此被发送,可以恢复到接收模式,和/或释放时钟信号CLK,和/或数据信号DAT,即,不等待来自接收器102的清除发送信号CTS的释放。作为一种选择,在发送偶数个数据位的情况下,接收器102可以基于读取最末数据位D0来抑制转换数据确认信号ACK,并且因此可以在最后一次转换后,无论什么情况都释放数据确认信号ACK。因此所述设备允许发送器101和接收器102以一种仅需要最少处理资源的快速并可靠的方式结束数据发送。

图3的b示出在争用的情况下数据发送的启动,即同时尝试通过处理器101、102启动发送。如上所述,启动发送的处理器101、102通过检测ACK而不是清除发送CTS信号来检测争用,数据确认信号ACK由处理器101、102中的相应另一个断言。争用可以以本领域已知的方式解决,也就是,处理器101、102中的一个最终承担成功者角色,而相应的另一个承担失败者角色。在下文中,争用的解决方案被描述为发生在具有获胜者角色的第一处理器101和具有失败角色的第二处理器102。

在图3的b中,从失败者(即第二处理器102)的角度显示信号CLK、DAT、CTS、ACK,然而,根据设备的第二模式却具有线路功能CLK、DAT、CTS、ACK,其中,第二处理器102处于如图3所示的发送模式301。失败者102通过断言时钟信号CLK来启动发送。同时,获胜者101也是如此(但是,呈现根据图1的线路功能)。失败者102将其检测为确认信号ACK而不是清除发送信号CTS的断言,并且因此检测争用。响应于此,并且由于具有失败者的角色,失败者102释放时钟信号CLK,恢复到接收模式401并断言清除发送信号CTS(呈现如图1所示的线路功能)。因此,失败者102通过在第二条线路上断言信号来断言清除发送信号CTS,其在失败者102的发送模式301中用作数据线DAT,并且在失败者102的接收模式401中用作清除发送线路CTS。注意,在图3的b中,像图2中的那样设定线路功能,并且,所显示的线路功能的设定仅适用于之前,即在时钟信号CLK的释放的左边。

获胜者101也可以如上面描述那样检测争用。然而,由于具有获胜者的角色,获胜者101保持其模式301并等待争用的解决。获胜者101因此等待释放确认信号ACK,即来自处于发射模式301的失败者102的CLK信号,并且等待来自处于接收模式401的失败者102的清除发送信号的断言。注意,获胜者101并不需要监控这些信号ACK、CTS两者,因为失败者102可以被编程或另外配置为分别以预定的顺序释放CLK信号和断言清除发送信号CTS,例如在断言清除发送信号CTS之前释放CLK信号。在这种情况下,获胜者101可以被配置为对争用是无知的,因为,如上面关于图3的a所描述的,在检测到清除发送信号CTS的断言之前,无论如何,它都不会启动数据位D7-D0的发送。

获胜者和失败者的角色可以通过设计来给定,例如,第一处理器101总是具有获胜者的角色而第二处理器102总是具有失败者的角色。或者,可以动态地分配获胜者和失败者角色,例如,依靠设备和/或处理器101、102的任意状态。设备109可以例如取决于从设备的另一个组件和/或从设备的外部装置接收的一个或多个输入信号而包括分配获胜者和失败者角色的争用控制器(未示出)。可替代地,或附加地,处理器101、102中的一个或两个可以被配置为在检测到争用的持续时间已经超过预定时间段和/或随机确定的时间段之后承担失败者的角色,使得获胜者和失败者的角色可以或多或少随机分配。

图4示出了处理器(例如图1和2中所示的处理器101、102中的一个或两个)的发送模式301的流程图。从图1中可以看出,其中,第一处理器101处于发送模式301并且因此具有发送器的角色,第一条线路CLK和第二条线路DAT是来自发送器的输出,而第三条线路CTS和第四条线路ACK是到发送器的输入。可以从关于第二处理器102的图2得出类似的观察结果。通常,信号如图3的a所示,即“空闲高”,使得“高”对应于处于释放状态的相应信号,而“低”对应于处于断言状态的相应信号。在流程图中,释放的信号“高”由单个数字“1”表示,并且断言的信号“低”由单个数字“0”表示。

发送器在第一步骤302中通过断言时钟信号CLK来启动与接收器的通信,这里显示为将相应的引脚“值”设置为“0”,以表明请求发送。然后,在步骤303和304中,发送器等待由接收器断言清除发送信号CTS和数据确认信号ACK中的一个。因此,发送器在步骤303中确定接收清除发送信号CTS的输入引脚的值,并且在该值等于“0”的情况下(这里代表断言信号),继续进行步骤307中的数据发送,而另外,即在值等于“1”的情况下(这里代表释放的信号),继续进行步骤304。在步骤304中,发送器确定来自接收器的数据确认信号ACK的状态,并且在其被断言的情况下,继续进行步骤305。否则,发送器在步骤303中继续等待。在步骤305中,发送器确定是否它具有获胜者的角色,并且这种情况下在步骤303中继续等待,或者确定是否它具有失败者的角色,并且这种情况下继续进行步骤306,步骤306中它释放时钟信号CLK并返回到接收模式(见图5)。

在步骤307中,取决于下一个要发送的数据位的值,发送器断言或释放数据信号DAT。数据位被命名为“下一位”,以表明通常的数据位序列,例如将数据位的数据包从第一个数据位逐位发送到最后一个数据位。例如,数据位可以从本领域众所周知的输出缓冲器获取。发送器然后继续进行到步骤308,在步骤308中,它转换时钟信号CLK以表明下一个数据位已准备好被接收器读取。然后,发送器在步骤309中等待接收器转换数据确认信号ACK。基于检测到数据确认信号ACK的转换,发送器继续进行步骤310,在步骤310中确定数据包中的最后一个数据位是否已经发送,并且在这种情况下继续进行到步骤311,否则继续步骤307以重复下一个后续数据位的发送。在步骤311中,发送器释放数据信号DAT和时钟信号CLK。注意,接收器通常不能够从正常的数据位发送中区分这两种信号释放。因此,接收器必须能够以其他方式确认数据包的结束,例如,通过计算接收到的数据位的数量和/或通过在接收到的数据位中检测预定义的终止方式。然后发送器在步骤312中等待接收器释放清除发送信号CTS,并且基于检测到清除发送信号CTS的释放,发送器进入空闲模式,在空闲模式下发送器是闲置的;否则它在步骤312中继续等待。空闲模式最好等于接收模式。当发送器处于空闲模式时,设备通常也将处于其空闲模式,直到启动后续的数据发送。

图5示出了处理器(例如,图1和图2中所示的处理器101、102中的一个或两个)的接收模式401的流程图。从图1中可以看出,其中,第二处理器102处于接收模式401并且因此具有接收器的角色,第一条线路CLK和第二条线路DAT是至接收器的输入,而第三条线路CTS和第四条线路ACK是来自接收器的输出。关于第一处理器101,相似的观察结果可以从图2得出。

在第一步骤402中,接收器等待发送器断言时钟信号CLK,由此表明发送数据的请求。基于检测到时钟信号CLK的断言,接收器在步骤403中继续接收数据,否则在步骤402中继续等待。在步骤403中,接收器断言清除发送信号CTS以向发送器表明接收器准备好接收数据。接收器然后继续进行步骤404以等待发送器转换时钟信号CLK。基于检测时钟信号CLK的转换,接收器在步骤405中继续读取下一个数据位,否则在步骤404中继续等待。在步骤405中,接收器通过解码数据信号DAT的状态来读取表明下一位的数据位,然后继续进行到步骤406,在步骤406中接收器转换数据确认信号ACK以确认成功读取数据位。数据位可以被写入到输入缓冲器以进行进一步的处理,这在本领域中是众所周知的。接收器然后继续进行步骤407。

接收器追踪数据包中最后一位是否已经收到。在一些实施方式中,发送器可以对数据位的一部分进行编码,例如,它的第一字节,以表明数据包的长度。在其他实施方式中,数据包的长度可以是固定的。在其他实施方式中,数据包的结尾可以由数据位中预定义的终止方式来表明。因此,在步骤407中,接收器确定是否已经接收到最后的位,并且在这种情况下继续进行步骤408,否则重复在步骤404中接收另外的数据位。在步骤408中,接收器等待发送器释放时钟信号CLK。基于检测到时钟信号CLK的释放,接收器继续进行步骤409,在步骤409中,它释放清除发送信号CTS以表明到发送器的数据发送结束,否则在步骤408中继续等待。为了防止死锁,接收器可以使用超时计数器来确定在步骤408中花费的等待时间,并且在等待时间超过预定的时间限制的情况下继续进行步骤409。类似地,发送器和/或接收器可以实施超时以防止争用中的死锁。从步骤409,接收器在步骤410中进入空闲模式。空闲模式最好等同于接收模式。当接收器处于空闲模式时,设备通常也会处于空闲模式,直到后续的数据发送启动。

如图4和图5的流程图所示,由于所需的状态和转换相对较少,发送模式301和接收模式401中的任何一个可以优选地被实现为状态机或有限自动机,其能够使得设备109中控制数据通信的控制逻辑的有效实施。

第一处理器101和第二处理器102可以同时执行多个过程,并且仅偶尔执行与发送器和接收器的角色有关的操作。就此而言,在处理器中的一个或两个忙于执行除了与彼此的串行通信有关的处理之外的其他处理的情况下,构成数据包的数据位序列也可以以尽可能快的速度可靠地发送。处理器可以将其他处理和与彼此串行通信相关的那些处理按优先顺序排好。

除此之外,发送器和接收器角色和相关功能可以通过非常紧凑的硬件装置和软件装置来执行。从而,处理器可以分别配备有串行端口,例如,一个额外的串行端口,代价是只有非常有限的硬件和/或软件资源。

可以理解的是,有时设备109处于第一模式,其中第一处理器101是发送器,而第二处理器102是接收器,其相互作用以使用上面列出的线路将数据位交互从发送器发送到接收器。在其他时间,角色被交换,第一处理器101是接收器,而第二处理器102是发送器,其相互作用以在相反方向上发送数据位。为了实现这一点,所述设备将线路功能重新分配到连接引脚11-14、21-24的线路,并由此保持被配置为输入的引脚和被配置为输出的引脚,而与数据位的发送方向无关。

处理器101、102之间的数据位的发送可以通过数字输入/输出引脚来进行,例如GPIO引脚。当在一个或两个处理器上没有用于串行数据通信的专用硬件接口(例如I2C)时,这是有利的,例如,因为这样的接口被占用(用于其他目的),或者因为一个或两个处理器没有配置这样的硬件接口。与例如I2C端口的串行端口相比,GPIO引脚需要极少的硬件资源,并且通常在处理器上相对较多地可用。

另一个优点是,在处理器101、102中的一个以比另一个发送端或接收端较慢的数据速率接收或发送数据位的情况下,可以可靠地并以相对高的数据速率执行数据发送。由于较慢的处理器完全控制了数据发送的速率,将(过度)耗尽较慢的处理器的风险保持为较低水平,而数据速率与较慢的处理器能够保持一样快。这使设备工作更可靠和稳定。

所公开的设备109允许发送器和接收器以需要最少处理资源的快速和可靠的方式启动和结束数据位序列的发送。

所公开的设备和握手方案提供了将数据位序列从一个处理器传递到另一个处理器的可靠确认。然后,第一处理器和第二处理器可以继续进行其他计算任务,而不花另外的计算资源来等待发送的完成。

发送器可以简单地通过断言时钟信号CLK来请求数据发送,直到接收器检测到发送器有资源要被接收,接收器然后可以通过断言清除发送信号CTS来确认。这允许接收器具有响应时间,直到它释放可能暂时被例如其他任务或处理占用的适当资源。

为了调解,在请求发送冲突的情况下(即,两个处理器101、102通过断言它们相应的时钟信号CLK来同时请求发送),可能会指定胜出的成功处理器或成功者。在一些实施方式中,指定的成功者可以是具有用于数据位的通信和数据位的相关的缓冲的可用资源最少的处理器,从而可以实现处理器的平稳工作。

发送器可以通知接收器期望多少数据位。如上所述,接收器可以追踪接收到的数据位的数量以检测最后数据位和/或检测在数据位中的表明数据位序列的发送已经完成的编码模式。

在一些实施方式中,预分配的数据位可以位于数据包的包头部分或数据位的序列中。数据位序列还可以包括紧随包头部分的有效载荷部分。包头部分可以具有由发送器和接收器都已知的固定长度,并且有效载荷部分可以具有可变长度,并且实际长度可以由预先分配的数据位来表示。

第一处理器101和第二处理器102中的一个或多个可以执行检测,即通过硬件中断来断言、释放和/或转换信号。可以连接硬件中断电路来检测配置成输入的引脚上的信号变化。硬件中断电路只需要有限的硬件资源,然而,完整的I2C或UART硬件接口额外地需要例如稳定的硬件时钟电路。

处理器101、102中的一个或两个可以装载有相应的程序以实现如上定义的接收器和发送器角色,例如,使用轮询和/或响应中断来检测输入引脚上的信号状态的变化。考虑到数据发送可以通过例如GPIO引脚的输入/输出引脚进行,所述设备的优点在于可以可靠地并且以相对高的数据速率执行数据发送。

在一些实施方式中,所述设备可以包括用于交换数据信号的两条,三条,四条或更多条线路。在这样的实施方式中,处理器101、102可以以与上述单个数据位的交换相同的方式并行地交换多个数据位。设备109和处理器101、102优选地被配置为当设备在第一模式和第二模式之间改变时,反转附加数据线以及用来控制和读取这些线路上信号的所需的附加处理器引脚的发送方向。以这种方式,使用与上述单比特通信相同的简单握手并使用最少的处理器引脚和互连线,通信的数据速率可以被两倍、三倍、四倍或者其它成倍地增加。注意,在这种附加线路上的信号不需要在设备的空闲模式中具有任何特定的状态。

本发明不限于在此公开的实施方式,并且本发明可以在下面权利要求限定的主旨内以其他方式实施。作为例子,例如,为了适应设备,根据发明的具体要求,所描述的实施方式的特征可以任意组合。

权利要求中的任何附图标记和名称旨在对其范围没有限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1