掌桥专利:专业的专利平台
掌桥专利
首页

处理系统、相关集成电路、系统和方法

文献发布时间:2024-04-18 19:58:53


处理系统、相关集成电路、系统和方法

相关申请的交叉引用

本申请要求2022年3月3日提交的第102022000004055号意大利专利申请的优先权,其内容在法律允许的最大范围内通过引用整体结合于此。

技术领域

本公开的实施例涉及包括通用异步接收器-发送器(UART)的微控制器。

背景技术

图1示出了数字处理系统10,特别是微控制器的框图。

在所考虑的示例中,处理系统10包括微处理器(MP)102,通常是经由软件指令编程的中央处理单元(CPU)。通常,由微处理器102执行的软件存储在非易失性程序存储器(Mem)104中,例如闪存或EEPROM。因此,存储器104被配置为存储处理单元102的固件,其中固件包括要由微处理器102执行的软件指令。通常,非易失性存储器104也可用于存储其他数据,例如配置数据,例如校准数据。微处理器102通常还具有相关联的易失性存储器(Vmem)104b,例如随机存取存储器(RAM)。例如,存储器104b可用于存储临时数据。如图2所示,通常经由一个或多个存储器控制器(MC)100来执行与存储器104和/或104b的通信。存储器控制器100可以集成在微处理器102中,或者经由通信信道(例如处理系统10的系统总线)连接到微处理器102。例如,系统总线可以包括例如基于高级可扩展接口(AXI)总线体系结构的一个或多个总线系统和/或片上网络(NoC)。类似地,存储器104和/或104b可以与微处理器102集成在单个集成电路中,或者存储器104和/或104b可以是单独集成电路的形式,并且例如通过印刷电路板的迹线连接到微处理器102。

在所考虑的示例中,微处理器102可以具有从以下组中选择的相关联的一个或多个(硬件)资源/外围设备106:

-一个或多个通信接口,如果被配置为例如经由通信系统20交换数据,例如通用异步接收器/发送器(UART)、串行外围接口总线(SPI)、内部集成电路(I

-一个或多个模数转换器AD和/或数模转换器DA;和/或

-一个或多个专用数字组件DC,例如硬件定时器和/或计数器,或密码协处理器;和/或

-一个或多个模拟组件AC,例如比较器、传感器,例如温度传感器等;和/或

-一个或多个混合信号分量MSC,例如PWM(脉宽调制)驱动器。

例如,为此目的,系统总线实际上可以包括高级微控制器总线架构(AMBA)高性能总线(AHB),以及用于将资源/外围设备106连接到AMBA AHB总线的高级外围总线(APB)。

因此,数字处理系统10可以支持不同的功能。例如,微处理器102的行为由存储在存储器104中的固件确定,例如,由微控制器10的微处理器102执行的软件指令确定。因此,通过安装不同的固件,相同的硬件(微控制器)可以用于不同的应用。

已知用于更新存储在程序存储器104中的固件的各种解决方案。例如,在本文中可以引用美国专利申请号US20200319876 A1,其为此目的通过引用并入本文。

例如,如图2所示,处理系统10可以从例如在服务中心中使用的可拆卸程序/诊断工具(T)30和/或另一处理系统(PS)40接收新固件。通常,程序/诊断工具30和/或处理系统40可以以任何合适的方式连接到待更新的处理系统10,例如通信系统20。

例如,处理系统40可以被配置为经由一个或多个无线通信模块(WCM)402与一个或多个远程服务器(RS)50交换数据。例如,这种处理系统40通常用于向服务器50提供状态和/或诊断信息。因此,处理系统40还可以经由通信接口402从远程服务器50接收给定处理系统10的新固件。例如,通信接口402和远程服务器50可以经由互联网交换数据。

例如,图3示出了固件更新过程的示例。

例如,一旦包含处理系统10的产品已经交付,就可以激活更新过程。更新过程可以由处理系统的专用硬件资源和/或由处理单元102的适当编程来处理。例如,当专用硬件资源被用于更新过程时,处理单元102也可以在更新过程期间被关闭。相反,当使用处理单元102时,处理单元102执行也包含更新功能的给定固件。通常,该固件可以直接是处理系统10的旧固件,即,旧固件包含用于实现更新过程的指令。可选地或另外地,更新功能可以在单独的固件映像中实现,诸如单独的系统固件。例如,一旦接收到更新请求,处理系统10可以激活这样的单独固件映像,以便处理更新请求。

在步骤1000开始之后,处理系统10在步骤1002经由处理系统10的通信接口接收新固件,并在步骤1006将接收到的固件存储到处理系统的程序存储器104。

例如,程序存储器104通常被分割成多个可更新固件存储器区域,例如,两个存储器区域,其中在步骤1006,相应的固件映像可以被存储到每个可更新固件存储器区域。例如,旧固件(当前由处理系统10使用)因此可以被存储到第一存储器区域,并且处理系统10被配置为将接收到的新固件存储到第二存储器区域,即,不覆盖旧固件。

通常,在将固件存储到存储器104之前或之后,处理系统10可以在步骤1004验证接收到的固件。例如,处理系统10可以接收固件的加密版本。在这种情况下,处理系统10可以通过验证接收到的固件(的至少一部分)是否可以被解密来验证固件。此外,当发送固件的加密版本时,处理系统10可以将解密版本或加密版本存储到存储器104。例如,当存储器104的存储器控制器100还支持从程序存储器104读取的固件的实时解密操作时,可以存储加密版本。

在处理系统10支持多个固件存储器区域的情况下,一旦固件已经被存储到程序存储器104并且可选地已经被验证和/或确认,处理系统10可以在步骤1008将固件标识数据存储到非易失性存储器,以便指示应该使用哪个可更新固件映像。通常,该存储器可以是处理系统10的任何非易失性存储器,包括程序存储器104或另一非易失性存储器。因此,响应于某个事件(例如,复位),在步骤1010,处理系统10可以读取固件标识数据,决定应该使用哪个可更新固件映像,并执行相应的固件映像。

最后,更新过程在步骤1012的停止处终止。

例如,在许多处理系统10中,处理系统10的固件可以经由诸如JTAG(联合测试动作组)接口的调试接口来更新,该调试接口例如可以用于将数据直接写入非易失性存储器104。

通常,通信系统20也基于UART通信。例如,在这种情况下,处理系统10可以包括UART通信接口,并且微处理器102或专用硬件电路可以被配置为经由UART通信接口接收固件。例如,在这方面,这些也是已知的UART-JTAG转换器电路,其被配置为将经由UART交换的通信转换成用于连接JTAG接口的通信。通常,这种UART-JTAG转换器电路可以直接集成在处理系统10的集成电路内,或者集成在单独的集成电路内,该集成电路例如经由集成电路板的迹线连接到处理系统10的JTAG接口。

通常,UART使用两个独立的信号:发送信号TX和接收信号RX,即,UART接口被配置为生成发送信号TX并接收接收信号。因此,两个UART接口可以通过将第一UART接口的发送信号TX连接到第二UART接口的接收信号RX来交换数据。同样的。第二UART接口的发送信号TX连接到第一UART接口的接收信号RX。本领域技术人员将理解,UART还可以与诸如RS-232(推荐标准232)收发器的附加收发器组合使用,其也可以允许例如通过使用RS-485(推荐标准485)(也称为TIA-485(-A)或EIA-485)收发器来实现总线系统。

由于UART是串行异步传输协议的事实,发送器电路(例如电路30或40)和接收器电路(例如电路10)都使用给定的传输速度来交换UART帧。具体地,典型的UART接口被配置为发送和接收仅包括少数数据位的固定长度UART帧,例如1字节(8位)或2字节(16位)。典型的UART帧还包括:-初始开始位,其被设置为“0”(低),用于指示UART帧的开始;-一个或多个最终停止位,设置为“1”(高),用于指示UART帧的结束;以及可选地,数据位和停止位之间的一个或多个奇偶校验位。

例如,操作模式8N1的描述符指示发送或接收八个数据位(8)、无奇偶校验(N)和一(1)个停止位。因此,UART帧具有固定长度的位,例如,对于格式8N1的10位(包括起始位)。

经由这种UART接口的通信通常是低速通信。例如,通常支持的波特率为9600、14400、19200、38400、57600位/秒。这尤其适用于当长电缆用于处理系统10和可拆卸编程工具30或处理系统40之间的UART通信时,因为这种电缆受到寄生电容和电感的影响。例如,UART接口可以被配置为使用固定或预定的波特率。然而,在这种情况下,传输速度通常不是针对当前应用场景优化的,例如,因为当电缆较短时可以使用较高的波特率。因此,已经提出了例如在调制解调器的背景下的解决方案,其允许例如通过确定仍允许可靠数据传输的最大波特率来协商在发送UART接口和接收UART接口之间的波特率。然而,特别是在较长电缆和危险环境的情况下,寄生电容和电感可能会发生变化,这意味着初始条件可能不再有效。因此,在这种情况下,数据可能不被可靠地传输,这例如在固件更新过程期间可能是特别关键的。

鉴于以上所述,本领域需要提供用于调整用于在UART发送器和UART接收器之间传输数据的波特率的更稳健的解决方案。

发明内容

一个或多个实施例涉及处理系统。实施例还涉及相关的集成电路、系统和方法。

如前所述,本公开的各种实施例涉及能够自动调整UART通信的波特率的处理系统。具体地,处理系统包括被配置为提供发送信号的发送终端、被配置为接收接收信号的接收终端和UART通信接口。在各种实施例中,UART通信接口包括时钟管理电路,时钟管理电路被配置为接收时钟信号并根据时钟缩放因子生成缩减的时钟信号。UART通信接口的发送电路被配置为响应于缩减的时钟信号并经由发送信号,顺序地发送存储到UART通信接口的发送数据寄存器的给定数目的位。类似地,接收电路被配置为响应于缩减的时钟信号并经由接收信号顺序地接收给定数目的位,并将接收的位存储到UART通信接口的接收数据寄存器。

在各种实施例中,处理系统还包括波特率检测电路。具体地,在各种实施例中,波特率检测电路包括另一时钟管理电路、边沿检测器、数字计数器电路、验证电路和寄存器。

具体地,另一时钟管理电路被配置为接收时钟信号并生成另一时钟信号。边沿检测器被配置为生成指示接收信号中的上升沿和下降沿的第一控制信号。数字计数器电路被配置为监测第一控制信号,并且响应于确定第一控制信号发信号通知接收信号中的边沿,重置计数值。相反地,响应于确定第一控制信号没有发信号通知接收信号中的边沿,数字计数器增加计数值。

在各种实施例中,验证电路被配置为监控第一控制信号和计数值。响应于确定第一控制信号发信号通知接收信号中的边沿,并且当计数值小于最大值时,验证电路断言第二控制信号。相反,响应于确定第一控制信号没有发信号通知接收信号中的边沿,或者当计数值等于或大于最大值时,验证电路解除第二控制信号的断言。

具体地,寄存器被配置为当第二控制信号被断言时通过存储计数值来提供阈值信号,其中时钟缩放因子是从阈值信号导出的。

例如,在各种实施例中,时钟管理电路包括第一缩减电路,该第一缩减电路被配置为经由第一计数器生成缩减的时钟信号,该第一计数器被配置为响应于时钟信号增加第一计数值,直到第一计数值达到第一阈值。在这种情况下,第一阈值可以对应于存储到寄存器的阈值信号。

相反,在其他实施例中,第一缩减电路被配置为生成预缩放的时钟信号,并且时钟管理电路还包括第二缩减电路,第二缩减电路被配置为接收预缩放的时钟信号并根据第二时钟缩放因子生成缩减的时钟信号。在这种情况下,第一缩减电路的第一阈值可以从阈值信号导出,或者另一时钟管理电路可以包括第三缩减电路,该第三缩减电路被配置为接收时钟信号并根据第二时钟缩放因子生成另一时钟信号。

因此,在各种实施例中,UART通信接口的波特率,特别是发送电路和接收电路使用的缩减的时钟信号的频率,经由存储到寄存器的阈值信号来确定,其中当接收信号的两个连续边沿之间的时间由验证电路验证时,寄存器被更新。

如下文将更详细描述的,在各种实施例中,最大值(指示最小允许波特率)可以在标称计数值和标称计数值的两倍之间的范围内选择,或者可以对应于标称计数值的两倍。在各种实施例中,标称计数值可以是固定的或预定的,或者标称计数值可以对应于阈值信号,即,波特率检测电路可以根据存储到寄存器的阈值信号来调整最大值。

在各种实施例中,验证电路还可以被配置为仅当计数值也大于最小值(指示最大允许波特率)时才断言第二控制信号。如下文将更详细描述的,在各种实施例中,最小值可以在标称计数值和标称计数值的一半之间的范围内选择,或者可以对应于标称计数值的一半。因此,同样在这种情况下,当标称计数值对应于阈值信号时,波特率检测电路可以被配置为根据阈值信号来调整最小值。

例如,如上所述,UART通信接口可以用于接收包括微控制器的固件更新的数据。在这种情况下,处理系统因此还包括被配置为执行软件指令的微处理器、被配置为存储软件指令的非易失性存储器、以及被配置为分析接收数据寄存器的内容以便确定用于向非易失性存储器写入新软件指令的一个或多个调试命令包的调试接口,例如JTAG接口。优选地,调试接口被配置为响应于每个调试命令包,将相应的调试响应包存储到发送数据寄存器,从而也发信号通知调试命令包的正确接收。

因此,在各种实施例中,UART发送器电路可以被配置为根据给定波特率数据(例如,包括固件)经由接收信号顺序地发送到处理系统,由此当数据被接收时,处理系统的UART通信接口自动设置由发送电路和接收电路使用的缩减的时钟信号的频率。此外,UART发送器电路可以被配置为在数据的发送期间改变波特率,例如,当UART发送器电路没有从处理系统接收到响应包时降低波特率。

附图说明

现在将参考附图描述本公开的实施例,附图纯粹通过非限制性示例的方式提供,其中:

图1示出了处理系统的示例;

图2示出了用于更新图1的处理系统的固件的系统的示例;

图3示出了用于更新图1的处理系统的固件的方法的示例;

图4示出了根据本公开的处理系统的实施例;

图5、图6和图7示出了用于图4的处理系统的实施例UART接口;以及

图8示出了用于图5、图6和图7的UART接口的波特率检测电路的实施例。

具体实施方式

在下面的描述中,给出了许多具体细节以提供对实施例的透彻理解。可以在没有一个或几个特定细节的情况下,或者用其他方法、部件、材料等来实施实施例。在其他情况下,未详细示出或描述众所周知的结构、材料或操作,以避免模糊实施例的各个方面。

在本说明书中,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在本说明书的各个地方的出现不一定都指同一实施例。此外,在一个或多个实施例中,特定特征、结构或特性可以以任何合适的方式组合。

此处提供的标题仅为方便起见,并不解释实施例的范围或含义。

在下面的图4至图8中,已经参考图1至图3描述的部件、元件或组件由先前在该图中使用的相同附图标记表示;为了不加重本详细描述的负担,下面将不重复对这种先前描述的元件的描述。

图4示出了根据本描述的处理系统10a的实施例。

具体地,在所考虑的实施例中,处理系统10a包括连接到(片上)通信系统114的至少一个处理核心102a,例如n个处理核心(MP)102a1,…,102an。例如,在实时控制系统的背景中,处理核心102a1,…,102an可以是ARM

例如,如处理核心102a1的示例所示,每个处理核心102a可以包括微处理器(m)1020和通信接口(i)1022,通信接口(i)1022被配置为管理微处理器1020和通信系统114之间的通信。在所考虑的实施例中,接口1022是主接口,其被配置为将来自微处理器1020的(读取或写入)请求转发到通信系统114,并将来自通信系统114的可选响应转发到微处理器1020。在各种实施例中,处理核心102a还可以包括从接口(si)1024。例如,以这种方式,第一微处理器1020可以向第二微处理器1020发送请求(经由第一微处理器的通信接口1022、通信系统114和第二微处理器的通信接口1024)。例如,为此目的,通信系统114除了系统总线或NoC之外,还可以包括附加的协处理器总线,例如,连接相同处理核心102a或所有处理核心102a的微处理器1020。

在各种实施例中,每个处理核心102a1,…,102an还可以包括另外的本地资源,例如一个或多个本地存储器1026,通常被识别为紧密耦合存储器(TCM)。

如前所述,通常处理核心102a1、…、102an被布置成与非易失性存储器104和/或易失性存储器104b交换数据。在各种实施例中,这些存储器是系统存储器,即,为处理核心102a1、…、102an共享。例如,在各种实施例中,处理系统10a包括一个或多个存储器控制器100,该存储器控制器100被配置为将至少一个非易失性存储器104和至少一个易失性存储器104b连接到通信系统114。如前所述,存储器104和/或104b中的一个或多个可以集成在包括处理核心102a的集成电路30a中,或者可以外部连接到集成电路30a。例如,非易失性存储器104可用于存储一个或多个微处理器1020的固件。

如前所述,处理系统10a可以包括一个或多个资源106,例如一个或多个通信接口或协处理器(例如,密码协处理器)。具体地,在所考虑的实施例中,处理系统10a包括UART通信接口50,其优选地经由诸如外围桥的从通信接口504连接到通信系统114。

在所考虑的实施例中,UART通信接口50包括硬件发送和接收接口电路506,该硬件发送和接收接口电路506被配置为通过生成发送信号TX和接收接收信号RX来接口UART通信信道。为了管理通信,UART通信接口50还可以包括用于存储要发送的数据的一个或多个发送数据寄存器DATATX、用于存储控制数据的一个或多个控制寄存器CTRL和用于存储已经接收的数据的一个或多个接收数据寄存器DATARX。在各种实施例中,相同的寄存器可以用作发送数据寄存器DATATX和接收数据寄存器DATARX。

因此,从接口504可用于将这些寄存器与通信系统114接口。例如,处理核心102a可以被配置为经由通信系统114向通信接口50的从接口504发送以下请求中的一个或多个:

-写入请求,以便将数据写入发送数据寄存器DATATX;

-写入请求,以便将数据写入控制寄存器CTRL,例如,以便配置通信接口50和/或开始数据传输操作;以及

-读取请求,以便从接收数据寄存器DATARX读取数据。

例如,为此目的,寄存器DATATX、DATARX和CTRL中的每一个可以具有关联的通信系统114的相应物理地址(PA),并且每个读取或写入请求可以包括给定的目标地址。例如,如前所述,通信系统114可以包括高级微控制器总线架构(AMBA)高性能总线(AHB),以及用于将通信接口50连接到AMBA AHB总线的高级外围总线(APB)。

通常,UART接口50还可以包括主接口502,主接口502通常也被识别为集成直接存储器访问(DMA)控制器。例如,在UART接口50必须开始通信以便通过(读取和/或写入)请求与连接到通信系统114的另一电路(例如存储器104/104b、资源106或处理核心102)交换数据的情况下,这样的主接口502可能是有用的。例如,以这种方式,主接口/DMA控制器502可以被配置为生成写入请求,以便将经由接收信号RX接收的数据存储到非易失性存储器104,从而将新固件存储到程序存储器104。

图4还示出了可选的调试接口60,例如JTAG接口。这样的调试接口60可以被配置为从处理系统10a的一个或多个寄存器或存储器位置读取数据或向其写入数据。为此目的,调试接口60可以包括主接口602,主接口602被配置为向通信系统114和/或附加专用调试通信系统发送读取或写入请求。可选地,调试接口60还可以包括从接口604,其可以用于例如编程/配置是否允许或禁止经由调试接口60访问一个或多个寄存器和/或存储器位置。

因此,在各种实施例中,UART接口50可以被配置为与调试接口60交换数据,而不是直接将数据发送到存储器104,调试接口60又可以被配置为将数据存储到非易失性存储器104。例如,这样的布置通常是优选的,因为以这种方式,调试接口60可以管理不同的调试命令和/或可以实现访问保护,这不允许UART接口可以直接将数据存储到存储器104,但是调试接口60可以更新固件,例如,当保护被禁用时,或者当保护被启用并且提供给定命令以解锁保护时,例如,通过经由通过UART接口50接收的调试命令提供密码。

例如,这样的UART/JTAG接口在意大利专利申请第102021000008840号中公开,该专利申请为此目的通过引用并入本文。

例如,在各种实施例中,调试接口60被配置为接收调试命令包和可选地接收一个或多个调试数据包。

例如,在各种实施例中,调试数据包具有对应于处理系统10a的字大小的维度,例如1、2、4或8字节,例如,在32位微处理器1020的情况下为4字节。

相反,调试命令包通常具有多个字节,例如2、4或8个字节,以便指示调试命令。例如,调试命令包可以指示读取请求或写入请求,其中一个或多个后续调试数据包包括相应的数据。通常,写入请求的数据也可以直接包括在调试命令包中,因此调试命令包可以具有可变的大小。

在各种实施例中,调试接口60因此还可以被配置为向UART接口50提供调试(响应)数据包,以经由发送信号TX进行传输。

在各种实施例中,调试接口60还可以生成调试响应包,例如,可以响应于每个调试命令包来发送调试响应包,以便提供相应的状态响应,例如,指示写入请求中包括的数据是否已经存储到相应的地址。例如,调试响应包可能有1或2个字节。通常,读取请求的数据也可以直接包含在调试响应包中,因此调试响应包可以具有可变的大小。

在各种实施例中,调试命令包、调试数据包和调试响应包与UART通信接口50交换,例如,通过从前面提到的寄存器DATARX读取数据并将数据写入前面提到的寄存器DATATX。通常,UART接口50和调试接口60之间的数据交换可以以任何合适的方式实现,例如经由直接连接、主接口502和/或主接口602。

在各种实施例中,UART接口因此被配置为经由UART帧与通信信道20交换相应的数据,例如,通过经由发送信号TX发送一个或多个UART帧来传输调试响应包或可选调试数据包,和/或通过经由接收信号RX接收一个或多个UART帧来接收调试命令包或可选调试数据包。例如,在各种实施例中,每个UART帧具有8个数据位,例如,通过使用帧格式8N1。例如,在各种实施例中,通过使用具有16位的调试命令和具有8个数据位的UART帧,每个调试命令包将经由两个连续的UART帧而被接收。相反,通过使用8位的调试响应包,每个调试命令包将通过单个UART帧而被传输。

通常,这种处理系统10a还包括一个或多个通用直接存储器访问(DMA)控制器110。通常,通用DMA控制器110可以包括连接到诸如UART接口50和/或调试接口60的资源106的至少一个功能通道。通常,还可以根据配置数据选择与给定通道相关联的资源106。具体地,通道是读取或写入通道(其也可以是可编程的),并且通常具有相关联的配置数据,其指示DMA控制器110应该从中读取数据的存储器地址范围或DMA控制器110应该向其写入数据的存储器地址范围。例如,以这种方式,资源106可以经由两个通道连接到DMA控制器110:

-读取通道,被配置为自主地从第一存储器范围读取数据并将已经读取的数据提供给资源106(例如,以便发送相应的数据);以及

-写入通道,被配置为从资源106接收数据(例如,已经接收的数据)并且自主地将这些数据写入第二存储器范围。

因此,通用DMA控制器110通常具有用于向存储器控制器100发送读取或写入请求的主接口1102。通常,为此目的,主接口1102可以经由专用DMA信道直接连接到存储器控制器110,或者主接口1102可以向通信系统114发送请求。例如,在后一种情况下,读取和写入请求可以包括由通信系统114管理的任何地址。类似地,代替经由专用信道直接与资源106接口,通用DMA控制器110也可以被配置为经由通信系统114与资源106交换数据。例如,在这种情况下,DMA控制器110可以被配置为首先经由主接口1102发送包括第一地址的读取请求,然后发送包括第二地址的写入请求。

因此,在各种实施例中,可以使用通用DMA控制器110来代替主接口502和/或602。此外,通常通用DMA控制器110还包括从接口1104,用于接收用于配置DMA控制器110的配置数据。

图5示出了UART接口50的硬件串行通信接口506的实施例。

具体地,在所考虑的实施例中,硬件通信接口506包括两个移位寄存器5060和5062。具体地,在所考虑的实施例中,移位寄存器5060用于存储要发送的数据。因此,一旦请求数据传输,硬件通信接口506可以例如通过使用移位寄存器5060的并行数据输入PDI将发送数据寄存器DATATX的内容传送到移位寄存器5060。为此,发送数据寄存器DATATX和移位寄存器5060优选地具有相同的维度,并且被配置为存储一个UART帧(例如1字节)的数据位和可选奇偶校验位。通常,存储到发送数据寄存器DATATX的UART帧可以包括或不包括UART帧的起始位。例如,在这种情况下,移位寄存器5060的第一位可以被设置为“0”,而移位寄存器5060的其他位被映射到发送数据寄存器DATATX的相应位。类似地,发送数据寄存器DATATX可以包括或不包括UART帧的一个或多个停止位。此外,在各种实施例中,数据寄存器DATATX和移位寄存器5060可以用相同的移位寄存器来实现,该移位寄存器可以例如经由从接口504和/或DMA信道(电路502、602和/或110)而被写入。

在各种实施例中,移位寄存器5060被配置为根据时钟信号CLK

例如,如图6所示,在各种实施例中,时钟管理电路可以包括时钟预缩放电路(PSC)5078,时钟预缩放电路(PSC)5078被配置为生成具有相对于时钟信号CLK的频率降低的频率的预缩放的时钟信号CLK

在各种实施例中,预缩放的时钟信号CLK

如图5所示,在各种实施例中,缩减电路5080的操作响应于同步信号SYNC而改变,然而,该同步信号SYNC仅在接收数据时使用,并且将在此描述。

因此,当发送数据时,时钟信号CLK

如前所述,移位寄存器5060还接收使能信号TX_EN,其使能数据传输操作。具体地,在所考虑的实施例中,移位寄存器5060被配置为当使能信号TX_EN被断言时并且响应于时钟信号CLK

例如,在各种实施例中,发送控制电路5066可以包括计数器,该计数器响应于时钟信号CLK

在各种实施例中,硬件通信接口506包括组合逻辑电路5070,组合逻辑电路5070被配置为当使能信号TX_EN被去断言时将信号TX设置为高。例如,在使能信号TX_EN被去断言时使能信号TX_EN被设置为低的情况下,组合逻辑电路5070可以用逻辑OR门来实现,该逻辑OR门在输入处接收移位寄存器5076的串行数据输出信号SDO和使能信号TX_EN的反相版本,并在输出处提供信号TX。组合逻辑电路5070纯粹是可选的,因为当使能信号TX_EN被去断言时,例如,因为停止位被存储到寄存器5060中,串行数据输出信号SDO也可以被设置为高。

相反,移位寄存器5062被配置为存储经由信号RX接收的位。具体地,当没有发生数据传输时,接收信号RX被设置为高。一旦由另一设备开始传输,就发送开始位,由此接收信号RX被设置为低。因此,在各种实施例中,硬件通信接口506包括接收控制电路(RC)5068。具体地,接收控制电路5068被配置为响应于信号RX从高到低的变化,例如响应于信号RX的下降沿,断言接收使能信号RX_EN。

与发送控制电路5066类似,接收控制电路5068也可以使用计数器,该计数器响应于检测到起始位而复位,并且响应于时钟信号CLK

因此,在各种实施例中,移位寄存器5062被配置为,当使能信号RX_EN被断言时,并且响应于时钟信号CLK

此外,一旦接收到给定数目的位,例如响应于信号RX_OK,硬件通信接口506例如通过使用移位寄存器5062的并行数据输出PDO将移位寄存器5062的内容传送到接收数据寄存器DATARX。为此,接收数据寄存器DATARX和移位寄存器5062优选具有相同的维度。此外,在各种实施例中,数据寄存器DATARX和移位寄存器5062可以用相同的移位寄存器来实现,该移位寄存器可以例如经由从接口504和/或DMA信道(电路502、602和/或110)而被读取。

在这方面,图7示出了修改的硬件通信接口506,其仅包括单个移位寄存器5076。因此,在下文中将仅证明相对于图5的差异。

具体地,在所考虑的实施例中,移位寄存器5076被配置为当使能信号EN被断言时,响应于时钟信号CLK

因此,在这种情况下,串行数据输出SDO可以连接到发送信号TX,或者优选地连接到逻辑门5070。相反,串行数据输入SDI可以通过电路5082连接到接收信号RX。

在各种实施例中,串行数据输入SDI可以连接到附加逻辑门5072,当接收使能信号RX_EN被设置为低时,附加逻辑门5072将提供给串行数据输入SDI的信号RX’设置为高。例如,在各种实施例中,逻辑门5072是在输入处接收接收信号RX和接收使能信号RX_EN的反相版本的OR门。通常,逻辑门5072也可以用于图5的布置中。

具体地,在所考虑的实施例中,当发送使能信号TX_EN或接收使能信号RX_EN被断言时,移位寄存器5076的使能信号EN被断言。例如,为此目的,硬件通信接口506包括逻辑门5074,诸如OR门,其被配置为通过组合发送使能信号TX_EN和接收使能信号RX_EN来生成使能信号EN。

因此,同样在这种情况下,发送帧(具有或不具有起始位)可以例如通过使用移位寄存器5076的并行数据输入PDI通过发送数据寄存器DATATX直接或间接地传送到移位寄存器5076。类似地,接收帧(具有或不具有起始位)可以例如通过使用移位寄存器5076的并行数据输出PDO直接或间接地经由接收数据寄存器DATARX从移位寄存器5076传送。

因此,在所考虑的实施例中,响应于时钟信号CLK

具体地,在各种实施例中,接收控制电路5068被配置为响应于检测到接收信号RX的逻辑电平的改变,即响应于信号RX的下降沿和/或上升沿,断言同步信号SYNC。例如,为此目的,接收控制电路5068可以响应于时钟信号CLK

如关于图5和图6所提到的,缩放电路5080可以与同步信号SYNC同步,以便生成用于采样接收信号RX的边沿。例如,在各种实施例中,缩放电路5080用计数器来实现,该计数器被配置为增加计数值CNT,并在达到最大计数值时重置计数值CNT。此外,为了使计数值CNT与同步信号SYNC同步,可以响应于确定同步信号SYNC被断言而复位计数器CNT。

通常,代替复位计数器5080,可以使用同步信号SYNC的逻辑电平来确定计数器的增加值。例如,默认情况下,增加值可以设置为1。相反,当计数值设置为0时信号SYNC被断言时,计数器的增加值可以设置为0,由此相位“0”被重复两次。相反,当计数值具有其最大值减1(例如3),信号SYNC被断言时,计数器的增加值可以被设置为2,由此计数器被间接复位。

如图7所示,时钟信号CLK

因此,在前面的实施例中,通过阈值/信号BAUD_THR来定义数据传输速率,该阈值/信号BAUD_THR指定时钟缩减电路5078的阈值。例如,通过设置信号BAUD_THR的值,UART接口可以使用具有9600Hz的时钟信号CLK

如前所述,在各种实施例中,通过各自的UART接口连接的两个电路被配置为确定优化波特率。

通常,解决方案是已知的,其中两个UART收发器自动协商波特率。例如,文献ChuckFarrow,应用报告“MSP 430上的自动波特率检测(Automatic Baud Rate Detection onthe MSP430)”,Texas Instruments,SLAA 215,2004年10月(通过引用并入本文),公开了一种解决方案,其中发送器电路以给定的请求波特率发送一个或多个预定符号,并且微控制器对接收的位进行采样,以便确定用于发送一个或多个符号的波特率。基本上,在这种情况下,支持给定的最大波特率MAX_BAUDRATE速率,并且接收器电路使用该频率以便(过)采样所接收的符号,其中所接收的位序列指示该符号是否已经以对应于最大波特MAX_BAUDRATE速率的分数的波特率BAUDRATE发送。例如,当发送器电路以115,200波特的最大支持波特率MAX_BAUDRATE发送符号0x0d(加上附加起始位)时,微控制器可以以115,200Hz采样接收信号RX,并选择以下波特率:

-115,200波特,当接收到的位序列对应于0x0d时;

-57,600波特,当接收到的位序列对应于0xe6时;

-38,400波特,当接收到的位序列对应于0x1c时;

-19,200波特,当接收到的位序列对应于xe0时;或者

-14,400波特,当接收到的位序列对应于0x80时。

已经观察到,这种用于经由预定符号(基本上表示预定同步前导)自动协商波特率的解决方案具有几个不便之处。首先,只支持给定的预定和固定波特率。此外,波特率仅在数据传输开始时协商,然后保持固定。例如,这意味着通信可能在噪声环境中丢失,例如,因为初始波特率不能再保持。类似地,当噪声降低时,即使可以使用更高的波特率,在通信期间波特率也不会增加。

如图4所示,在各种实施例中,UART接口50包括或至少具有相关联的波特率检测电路70,该波特率检测电路70被配置为设置硬件发送和接收接口电路506的时钟信号CLK

图8示出了波特率检测电路70的实施例。

在所考虑的实施例中,波特率检测电路70使用从时钟信号CLK导出的时钟信号CLK

-当UART接口506的缩减电路5064还使用第二时钟缩放电路5080时,时钟信号CLK

-当UART接口506的缩减电路5064不使用第二时钟缩放电路5080时,时钟信号CLK

在所考虑的实施例中,接收信号RX被提供给边沿检测器(ED)700。通常,该边沿检测器700也可以对应于接收控制电路5086的边沿检测器。在这方面,波特率检测电路70也可以直接在接收控制电路5068内实现。

具体地,在所考虑的实施例中,边沿检测器700生成诸如触发信号的信号TRIG,该信号TRIG用于发送接收信号RX中的上升沿和下降沿的信号。例如,边沿检测器700可以响应于检测到接收信号RX中的边沿,例如通过在时钟信号CLK

在所考虑的实施例中,信号TRIG被提供给数字计数器电路(DCC)702。具体地,计数器电路702被配置为当信号TRIG对接收信号RX中的边沿进行发信号时(例如,当信号TRIG被断言时)重置计数值CNT,并且当信号TRIG没有对接收信号RX中的边沿进行发信号时(例如,当信号TRIG被去断言时),增加计数值CNT。如将在下文中更详细描述的,计数器702还可以使用最大计数值MAX_CNT,即,计数器702被配置为增加计数值CNT,直到达到最大计数值MAX_CNT或信号TRIG对接收信号RX中的边沿进行信号发送。

在所考虑的实施例中,计数值CNT和信号TRIG被提供给验证电路704。具体地,验证电路(VC)704被配置为确定计数值CNT是否在给定范围内。例如,在各种实施例中,验证电路704可以确定计数值CNT是否小于最大计数值,例如,对应于前面提到的值MAX_CNT。通常,验证电路704还可以确定计数值CNT是否大于最小计数值MIN_CNT,其中值MIN_CNT小于值MAX_CNT。

具体地,响应于确定计数值CNT在给定的允许范围内,例如小于最大计数值MAX_CNT,验证电路704断言控制信号SEL。相反,响应于确定计数值CNT不在给定的允许范围内,例如大于最大计数值MAX_CNT,验证电路704取消对控制信号SEL的断言。

在所考虑的实施例中,控制信号SEL被提供给寄存器(Reg)708,寄存器(Reg)708被配置为当控制信号SEL被断言时,响应于时钟信号CLK

因此,在各种实施例中,波特率检测电路70被配置为生成指示接收信号RX的两个连续边沿之间的时钟信号CLK

因此,在所考虑的实施例中,波特率检测电路70基于实际位时间自动调整信号BIT_CNT。因此,在各种实施例中,时钟缩放电路5078的阈值BAUD_THR可从信号BIT_CNT导出。具体地,通过使用具有与缩减电路5080相同的缩放因子的缩减电路710(当使用时),信号BIT_CNT可以直接用作阈值BAUD_THR。然而,在缩减电路710被省略或具有与缩减电路5080不同的相同缩放因子(当使用时)的情况下,信号BIT_CNT也可以被缩放以生成阈值BAUD_THR。

因此,在各种实施例中,寄存器708可对应于提供信号BAUD_THR的UART接口50的控制寄存器CTRL的各个位。可选地,控制寄存器CTRL的标志可以指示信号BAUD_THR是应该由控制寄存器CTRL提供还是从信号BIT_CNT导出。

在这方面,波特率检测电路70被配置为仅当两个连续边沿之间的时钟周期数CNT(如由验证电路704验证的)在给定的允许范围内,特别是小于最大值MAX_CNT并且可选地大于最小值MIN_CNT时才更新信号BIT_CNT。

具体地,在各种实施例中,诸如电路30或40的发送器电路预期以给定的标称波特率NOM_BAUD(诸如19,200)发送数据,该给定的标称波特率NOM_BAUD对应于计数器702的给定标称计数值NOM_CNT(基于时钟信号CLK

在这方面,验证电路704允许验证计数值CNT是否确实指示具有相同逻辑值的单个位或多个位的时间。事实上,计数值CNT对于以下位序列是相同的:

-“000011110000”以38,400波特率发送;以及

-“001100”以19,200波特率发送;以及

-“010”以9,600波特率发送。

因此,在各种实施例中,验证电路被配置为仅当计数值CNT小于最大值MAX_CNT时断言信号SEL,最大值MAX_CNT被设置为MAX_CNT=NOM_COUNT x 2,即接收信号RX的波特率必须大于对应于NOM_BOUD/2的最小波特率,例如9,600波特。因此,该条件也过滤具有相同逻辑电平的多个位的传输。

相反,最大波特率可以通过设计来定义和/或验证电路704可以被配置为仅当计数值CNT也大于最小值MIN_CNT时才断言信号SEL,最小值MIN_CNT被设置为MIN_CNT=NOM_COUNT/2,即,接收信号的波特率必须小于对应于NOM_BOUD×2的最大波特率,例如38,400波特。

因此,在这种情况下,发送电路可以在最小波特率和最大波特率之间的范围内改变信号RX的波特率BAUD_RATE,即NOM_BAUD/2

通常,如图8所示,阈值MAX_CNT和阈值MIN_CNT(当使用时)也可以从信号BIT_CNT导出。例如,波特率检测电路70可以包括电路712,该电路712被配置为经由以下操作生成信号MAX_CNT和可选地MIN_CNT:

-MAX_CNT=BIT_CNT x 2,例如,通过执行左移操作,将新的最低有效位添加到信号BIT_CNT;

-MIN_CNT=BIT_CNT/2,例如,通过执行移除信号BIT_CNT的最低有效位的右移操作。

因此,以这种方式,发送器电路可以从初始标称值改变所使用的波特率,以便增加或减少在与处理系统10a的数据交换期间使用的波特率。事实上,在这种情况下,给定UART帧的通信波特率在前一UART帧的波特率的一半和两倍之间的范围内就足够了。

在各种实施例中,当边沿检测器700在给定时间段内没有发送数据接收信号时,电路712还可以将值MAX_CNT和可选的MIN_CNT重置为根据标称值NOM_COUNT所计算的初始值。

在这方面,为了检测通信是否正确地操作,发送器电路30或40可以因此以给定波特率发送一个或多个(例如,调试)命令包,并且验证处理系统10是否(在给定的最大时间内)用指示通信正确地工作的相应调试响应包来响应。因此,发送器电路可以被配置为:

-当(例如,调试)响应包被正确接收时,增加波特率;以及

-当(例如,调试)响应包没有被正确接收时,降低波特率。

特别地,与传统的波特率协商机制相比,所描述的波特率检测和变化解决方案不仅可以在通信开始时使用,例如,为了设置最高可能的波特率,而且发送器电路可以在数据传输操作期间,即实时地调整所发送的UART帧的波特率,并且接收器电路能够通过波特率检测电路70动态地调整用于接收UART帧的波特率。因此,通信更加稳健,因为在来自接收器电路的响应丢失的情况下,发送器电路可以重新发送相同的(命令或数据)包,同时即时降低波特率,直到接收器电路再次用响应包进行响应,从而避免通信中断或者甚至单个包丢失。

权利要求是本文提供的公开的技术教导的组成部分。

当然,在不损害本发明原理的情况下,结构和实施例的细节可以相对于本文纯粹通过示例的方式描述和示出的内容有很大的变化,从而不脱离由所附权利要求书限定的本发明的范围。

相关技术
  • 水处理系统的控制方法、水处理系统及净饮机
  • 处理系统、相关集成电路、设备以及方法
  • 处理系统、相关集成电路以及设备和方法
技术分类

06120116510725