首页> 中国专利> 用于并置控制器区域网络数据有效负载的方法

用于并置控制器区域网络数据有效负载的方法

摘要

一种控制器区域网络(CAN)控制器单元具有:消息汇编缓冲器,其接收串行位流;缓冲器存储器,其与所述消息汇编缓冲器并联耦合;CAN控制单元,其与所述消息汇编及所述缓冲器存储器耦合;及至少一个控制寄存器。所述至少一个控制寄存器可经编程以致使所述CAN控制单元以至少第一及第二模式存储被接收于所述消息汇编寄存器中的消息,其中在所述第一模式中,将所述所接收CAN消息的控制信息及数据有效负载存储于所述缓冲器存储器中,且在所述第二模式中,仅将所述CAN消息的所述数据有效负载存储于所述缓冲器存储器中。

著录项

  • 公开/公告号CN102334314A

    专利类型发明专利

  • 公开/公告日2012-01-25

    原文格式PDF

  • 申请/专利权人 密克罗奇普技术公司;

    申请/专利号CN201080009764.7

  • 申请日2010-04-21

  • 分类号H04L12/56;H04L12/413;

  • 代理机构北京律盟知识产权代理有限责任公司;

  • 代理人孟锐

  • 地址 美国亚利桑那州

  • 入库时间 2023-12-18 04:12:59

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-11-05

    授权

    授权

  • 2012-06-06

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20100421

    实质审查的生效

  • 2012-01-25

    公开

    公开

说明书

相关申请案交叉参考

本申请案请求在2009年4月23日提出申请且标题为“通过剥离控制器区域网络识 别符及其它非数据信息的控制器区域网络消息数据并置(CAN MESSAGE DATA  CONCATENATION BY STRIPPING CAN IDENTIFIER AND OTHER NON-DATA  INFORMATION)”的第61/171,891号美国临时申请案的权益,所述美国临时申请案全 文并入本文中。

技术领域

本发明涉及控制器区域网络(CAN或CAN总线)兼容的微控制器,且特定来说涉 及CAN消息的存储。

背景技术

控制器区域网络(CAN)是有效地以高水平的安全性支持分散式实时控制的串行通 信协议。CAN的应用范围从高速数字通信网络到低成本多路复用布线。CAN是用于实 时应用的高整体性串行数据通信总线。CAN以高达1兆位/秒的数据速率操作,具有优 秀的错误检测与约束能力,且最初开发用于汽车中,但现在也用于其它领域中。CAN总 线与CPU之间的接口通常称为CAN控制器。CAN背后的动机是通过改善汽车电子器件、 引擎控制单元、传感器、防滑刹车系统等的互可操作性同时减小线束重量及复杂性而使 汽车更可靠、安全且燃料高效。由于CAN的出现,CAN协议已在工业自动化及汽车/ 卡车应用中获得广泛普及。CAN总线在嘈杂环境中的强健性及从故障条件检测及恢复的 能力使CAN适合与工业控制设备、医学设备、测试设备、移动及便携式机器、器具等 一起使用。

CAN是具有一个逻辑总线的不同步串行总线系统。其具有具有相等总线节点的开放 线性总线结构。CAN总线由两个或两个以上节点组成。可在不干扰其它节点的通信的情 况下动态地改变总线上节点的数目。

CAN逻辑总线对应于“线与”机构,“空闲”位(通常但未必等于逻辑电平“1”) 被“占有”位(通常是逻辑电平“0”)覆写。只要没有总线节点正在发送占有位,那 么总线在空闲状态中,但来自任一总线节点的占有位产生占有总线状态。因此,对于 CAN总线,选择能够传输两个可能位状态(占有及空闲)的媒体。所使用的常见物理媒 体是双绞线对。总线则称为“CANH”及“CANL”,且可直接连接到CAN控制器节点 或经由连接器连接到其。

在CAN总线协议中,并非寻址总线节点,而是将地址信息包含于所传输的消息中。 此经由识别消息内容(例如,引擎速度、油温等)的识别符(每一消息的部分)来进行。 所述识别符另外指示消息的优先等级。所述识别符的二进制值越低,则消息的优先等级 越高(更多占有位)。

原始CAN规范(版本1.0、1.2及2.0A)将消息识别符定义为具有11位的长度,从 而给出可能2048个消息识别符。“扩展的CAN”规范版本2.0B允许使用11及/或29 位的消息识别符长度(29位的识别符长度允许超过536,000,000个消息识别符)。所述 CAN规范(所有版本)出于所有目的以引用方式并入本文中。

通常,两种方法可用于CAN,因为CAN标准不涵盖CAN控制器的架构,这两种 方法是:“基本CAN”及“完全CAN”(不要与CAN 1及CAN 2或标准识别符及扩展 的识别符混淆);其在消息的缓冲上不同。

基本CAN控制器架构类似于简单UART,除发送完整帧而非字符外。通常,存在 单个传输缓冲器及双缓冲接收缓冲器。举例来说,微控制器将帧放入传输缓冲器中,且 在发送所述帧时接收中断。当在接收缓冲器中接收到帧时,微控制器接收用以腾空所述 接收缓冲器的中断且在接收随后帧之前将所述帧从所述接收缓冲器腾空。在基本CAN 控制器架构中,微控制器必须管理传输及接收,且处置帧的存储。

完全CAN控制器架构包含专用缓冲器且将帧存储于此专用缓冲器中。可依据所述 专用缓冲器的大小处理有限数目个帧。以映射到每一帧缓冲器的帧的识别符给所述缓冲 器加标签。微控制器可更新所述缓冲器中的帧且对其进行标记以供传输。可检查接收缓 冲器以查看是否已接收到具有匹配识别符的帧。另外,可使用滤波器来预筛选所接收到 的帧,以使得仅既定供特定CAN控制器使用的那些帧存储于接收缓冲器中。

标准CAN对扩展的CAN

CAN协议通常以两个版本获得应用:CAN 1.0及CAN 2.0。CAN 2.0与CAN 1.0向 后兼容,且大多数新控制器根据CAN 2.0构建。CAN 2.0标准存在两个部分:部分A及 部分B。在CAN 1.0及CAN 2.0A的情况下,识别符必须为11位长。在CAN 2.0B的情 况下,识别符可为11位(“标准”识别符)或29位(“扩展的”识别符)。为依从于 CAN 2.0,控制器必须为2.0部分B被动或2.0部分B主动。如果其是被动的,那么其 必须忽略扩展的帧(当CAN 1.0控制器看到具有29位识别符的帧时,其将产生错误帧)。 如果其是主动的,那么其必须允许接收及传输扩展的帧。存在用于发送及接收两种类型 的帧的一些兼容性规则。

CAN 2.0B主动控制器将发送及接受标准帧及扩展的帧两者。CAN 2.0B被动控制器 将发送及接收标准帧,且将丢弃不具有错误的扩展的帧。

CAN 1.0控制器在看到扩展的帧时,其将产生错误。因此,其中网络上存在单个CAN 1.0控制器的所述网络不能够与所述网络上的扩展的帧共处;所有控制器必须使用标准 帧发送。

控制器架构

CAN标准不涵盖控制器的架构,因此如何使用其存在变化形式。虽然存在两种一般 方法:基本CAN及完全CAN(不要与CAN 1.0及2.0或标准识别符及扩展的识别符混 淆);其在消息的缓冲上不同。

如上所述,在基本CAN控制器中,架构类似于简单UART,除发送完整帧而非字 符外:(通常)存在单个传输缓冲器及双缓冲接收缓冲器。CPU将帧放入传输缓冲器中, 且在发送帧时采取中断;CPU将帧接收于接收缓冲器中,采取中断且腾空所述缓冲器(在 接收随后帧之前)。CPU必须管理传输及接收,且处置帧的存储。

如上所述,在完全CAN控制器中,帧存储于所述控制器的专用缓冲器中。可处理 有限数目个帧(通常16个),因为网络上可存在更多的帧,以映射到每一缓冲器的帧 的识别符给所述缓冲器加标签。CPU可更新所述缓冲器中的帧且对其进行标记以供传 输;可检查缓冲器以查看是否已接收到具有匹配识别符的帧。

完全CAN设计的意图是在网络中提供一组“共享变量”;CPU周期性地更新所述 变量(即,缓冲器中的帧的内容);CPU还可检查所述变量。实际上,(当然)事情由 于并行性困难而并不如此简单:当从帧读取一组字节时,控制器可用新帧的内容覆写数 据,且在许多控制器中仅通过状态旗标来用信号通知此情况。

在“基本CAN”实施方案中,通常存在一个具有一个或一个以上相关联消息接受滤 波器的双缓冲接收信道。仅具有一个双缓冲消息信道意指处理器必须能够在此时间内处 置先前消息。在“完全CAN”实施方案中,通常存在多达15个消息缓冲器或信道,每 一消息缓冲器或信道具有一个相关联消息接受滤波器。具有大量接收缓冲器可在处理器 非常慢的情况下有助于处理消息业务的突发,然而,如果总消息业务使得其倾覆处理器 能力,那么没有什么缓冲量可防止消息的最终损失。通常,消息被传送到可由中央处理 单元(CPU)读取的FIFO存储器中。所述CPU接着可响应以中断所接收数据或将控制 信息从数据荷载分离。然而,在许多应用中,至少对于传输的某些部分,极少关注所附 加控制信息且所述数据荷载扩散于必须从FIFO存储器重新汇编的多个消息上。此可导 致不需要的CPU开销。因此,此项技术中需要一种可供用户更方便地处置某些数据传 输的CAN实施方案。

发明内容

根据一实施例,一种控制器区域网络(CAN)控制器单元可包含:消息汇编缓冲器, 其接收串行位流;缓冲器存储器,其与所述消息汇编缓冲器并联耦合;CAN控制单元, 其与所述消息汇编及所述缓冲器存储器耦合;及至少一个控制寄存器,其中所述至少一 个控制寄存器可操作以经编程以致使所述CAN控制单元以至少第一及第二模式存储被 接收于所述消息汇编寄存器中的消息,其中在所述第一模式中,将所述所接收CAN消 息的控制信息及数据有效负载存储于所述缓冲器存储器中,且在所述第二模式中,仅将 所述CAN消息的所述数据有效负载存储于所述缓冲器存储器中。

根据进一步实施例,所述控制寄存器可包含指示所述第二模式被设定的第一位。根 据进一步实施例,所述控制寄存器可经编程以致使所述CAN控制单元进一步将时间戳 信息连同所述控制信息一起存储。根据进一步实施例,所述控制寄存器可包含指示存储 所述时间戳信息的第二位。根据进一步实施例,所述控制寄存器可包含指示何时产生所 述时间戳信息的第三位。根据进一步实施例,当在所述第二模式中时,所述装置可忽略 起始时间戳信息的所述存储的设定。根据进一步实施例,所述缓冲器存储器可为FIFO 存储器。根据进一步实施例,所述FIFO存储器可包含多个可配置FIFO缓冲器。根据进 一步实施例,所述缓冲器存储器可包含多个可配置缓冲器。根据进一步实施例,所述单 元可进一步包含用于每一可配置缓冲器的控制寄存器,所述控制寄存器包含用于确定相 应缓冲器的操作模式的至少一个位。根据进一步实施例,所述单元可进一步包含将多个 屏蔽寄存器及多个滤波器寄存器与所述CAN控制单元耦合的逻辑,其中所述逻辑产生 指示消息汇编缓冲器移位寄存器中的有效条目的信号。

根据另一实施例,一种存储控制器区域网络(CAN)消息的方法可包含以下步骤: -接收CAN消息;-汇编所述CAN消息;及-确定存储模式,其中在第一模式中,将所述 所接收CAN消息的控制信息及数据有效负载存储于缓冲器存储器中,且在第二模式中, 仅将所述CAN消息的所述数据有效负载存储于所述缓冲器存储器中。

根据所述方法的进一步实施例,所述CAN消息可为标准CAN消息以及扩展的CAN 消息。根据所述方法的进一步实施例,可通过设定控制寄存器中的第一位来编程所述第 二模式。根据所述方法的进一步实施例,可提供多个缓冲器存储器且可在相关联控制寄 存器中编程每一缓冲器存储器的操作模式。根据所述方法的进一步实施例,可提供第三 模式,在所述第三模式中将时间戳信息连同控制信息及数据有效负载一起存储。根据所 述方法的进一步实施例,可以可编程方式产生时间戳信息。根据所述方法的进一步实施 例,可通过设定控制寄存器中的第二位来编程所述第三模式。根据所述方法的进一步实 施例,当在所述第二模式中时,可忽略起始时间戳信息的所述存储的设定。根据所述方 法的进一步实施例,所述缓冲器存储器可为FIFO存储器。根据所述方法的进一步实施 例,所述FIFO存储器可包含多个可配置FIFO缓冲器,且所述方法进一步包含配置所述 FIFO缓冲器的步骤。根据所述方法的进一步实施例,可通过消息汇编缓冲器移位寄存 器来执行所述汇编CAN消息的步骤。根据所述方法的进一步实施例,所述方法可进一 步包含借助多个屏蔽寄存器及多个滤波器寄存器来产生有效性信号的步骤,所述有效性 信号指示所述消息汇编缓冲器移位寄存器中的有效条目。

根据又一实施例,一种微控制器可包含:中央处理单元(CPU);控制器区域网络 (CAN)控制器,其包含:消息汇编缓冲器,其接收串行位流;FIFO存储器,其与所 述消息汇编缓冲器且与所述CPU并联耦合;CAN控制单元,其与所述消息汇编及所述 FIFO存储器耦合;及控制寄存器,其中所述控制寄存器可操作以由所述CPU通过设定 一位来编程以致使所述CAN控制单元以至少第一及第二模式将所接收的消息存储于所 述消息汇编寄存器中,其中在所述第一模式中,将所述所接收CAN消息的控制信息及 数据有效负载存储于所述FIFO存储器中,且在所述第二模式中,仅将所述CAN消息的 所述数据有效负载存储于所述FIFO存储器中。

根据所述微控制器的进一步实施例,所述微控制器可进一步包含时间捕获单元,其 中所述控制寄存器包含可经编程以致使所述CAN控制单元进一步将来自所述时间捕获 单元的时间戳信息连同所述控制信息一起存储的第二位。

根据下文更特定来说对如附图中所图解说明的本发明优选实施例的说明将明了本 发明的上述及其它目标、特征及优点。

附图说明

图1展示根据一实施例的CAN模块/控制器的部分的框图;

图2展示根据另一实施例的具有CAN模块/控制器的微控制器的部分的框图;

图3展示标准CAN消息与扩展的CAN消息之间的差异;

图4展示在第一操作模式中的FIFO的组织;

图5展示在第二操作模式中的FIFO的组织;

图6展示在第三操作模式中的FIFO的组织;

图7展示来自图1的CAN协议引擎的实施例;

图8展示比较器单元的例示性实施例;

图9展示位比较器单元的另一例示性实施例;及

图10展示常规CAN控制器模块。

具体实施方式

参照图10,其图解说明供用于微控制器中的常规CAN控制器的接收缓冲器818、 820及822以及相关联屏蔽802、808及滤波器寄存器804、806、810、812、814、816。 缓冲器820(指定为消息汇编缓冲器(MAB))发挥作用以仅监视用于传入消息的CAN 逻辑总线(未展示)。MAB 820保持来自总线的经去充填位流。所述位流由包含识别符 及数据字段的消息(即,数据帧、远程帧或其它帧)组成(未展示)。CAN控制器包含 两个可由微控制器的CPU存取的专用缓冲器818及822。MAB 820允许这些接收缓冲 器818及822并行存取所述消息。MAB 820还允许接受滤波器806及816存取所述消息 的识别符部分。位流消息到接收缓冲器818或822的并行传送在接受屏蔽802及808以 及接受滤波器804、806、810、812、814及816将接受匹配测试施加到所述消息之前可 不被允许。

分别使用可编程接受滤波器屏蔽802及808来选择应将未经充填位流消息的哪些位 与接受滤波器804及806以及810、812、814及816的内容进行比较。

接受匹配测试如下进行:滤波器804、806、810、812、814及816接收所述消息的 识别符字段且将所述字段与滤波器值进行比较。如果所述识别符字段与滤波器值之间存 在匹配,那么将所述消息加载到匹配滤波器的对应接收缓冲器818或822中。滤波器804 及806连接到缓冲器818,滤波器810、812、814及816连接到缓冲器822。

接收缓冲器存在暗示的优先等级。缓冲器818是较高优先等级缓冲器且具有与其相 关联的消息接受滤波器804及806。缓冲器822是较低优先等级缓冲器且具有与其相关 联的接受滤波器810、812、814及816。与缓冲器818相关联的滤波器比与缓冲器822 相关联的滤波器少意指缓冲器818比缓冲器822更具限制性。更具限制性的缓冲器818 含蓄地具有与其相关联的较高临界点。

在MAB 820快速连续地接收两个“高优先等级”消息时,接收缓冲器818(其被指 定为第一高优先等级缓冲器)将接收第一高优先等级消息。在接收第二高优先等级消息 时,MAB 820发现缓冲器818当前由高优先等级消息占据。MAB 820接着引导缓冲器 822(其被指定为第二高优先等级缓冲器)接收所述第二高优先等级消息。在此情境中, 缓冲器818及822分别被排定等级为所述第一高优先等级缓冲器及所述第二高优先等级 缓冲器。

中央处理单元(CPU)(未在图10中展示)可在接收缓冲器818及822中的一者 上操作,而另一者供用于接收或保持先前接收的消息。

在两个高优先等级消息的到达的情况下的协议由接收缓冲器818及822的控制寄存 器(未展示)中的BUKT位实现。表I描绘并解释接收缓冲器818的控制寄存器,其中 R/W意指可读取/可写入位,且其中R意指只读位。

表I

位7    位6    位5    位4    位3    位2    位1    位0

R/W    R/W    R/W    R/W    R/W    R/W    R      R/W

位7:消息就绪状态

1=接收缓冲器含有有效所接收消息

0=接收缓冲器打开以接收新消息

位仅由CAN模块设定,位仅由CPU清空。

位6到5:接收缓冲器操作模式

11=接收所有消息,包括那些具有错误的消息

10=仅接收具有扩展的识别符的有效消息

01=仅接收具有标准识别符的有效消息

00=接收所有有效消息

位4:消息接收中断启用

1=中断被启用

0=中断被停用

位3:所接收远程传送请求

1=接收到远程传送请求

0=未接收到远程传送请求

位2:(BUKT)启用到接收缓冲器122的过流

1=接收缓冲器118过流将写入到缓冲器122

0=不允许到缓冲器122的过流

位1:只读取位2(BUKT)的拷贝

位0:指示哪一接受滤波器启用消息接收

1=与缓冲器122相关联的接受滤波器

0=与缓冲器118相关联的接受滤波器

如果设定为“1”,那么BUKT位实施基于优先等级的协议。表II描绘并解释接收 缓冲器822的控制寄存器。

表II

位7    位6    位5    位4    位3    位2    位1    位0

R/W    R/W    R/W    R/W    R/W    R/W    R/W    R/W

位7:消息就绪状态

1=接收缓冲器含有有效所接收消息

0=接收缓冲器打开以接收新消息

位仅由CAN模块设定,位仅由CPU清空。

位6到5:接收缓冲器操作模式[这些位是任选的]

11=接收所有消息,包括那些具有错误的消息

10=仅接收具有扩展的识别符的有效消息

01=仅接收具有标准识别符的有效消息

00=接收所有有效消息

位4:消息接收中断启用

1=中断被启用

0=中断被停用

位3:所接收远程传送请求

1=接收到远程传送请求

0=未接收到远程传送请求

位2到0:指示哪一接受滤波器启用消息接收

101=接受滤波器116

100=接受滤波器114

011=接受滤波器112

010=接受滤波器110

001=接受滤波器106[仅在缓冲器118的控制寄存器中BUKT位设 定为“1”的情况下]

000=接受滤波器104[仅在缓冲器118的控制寄存器中BUKT位设 定为“1”的情况下]

图1展示根据一实施例的常规CAN控制器的修改。此处,仅展示CAN控制器的最 相关部分。消息汇编缓冲器(MAB)块110与缓冲器存储器120耦合。存储器120可配 置为FIFO存储器且可为独立的存储器装置。然而,根据其它实施例,也可由微处理器 系统或微控制器的主存储器来形成存储器120。因此,微控制器可使用其通用存储器(举 例来说,其数据存储器),且指派所指定的存储器空间以形成缓冲器存储器120。特定 来说,在缓冲器存储器120由标准存储器装置形成的情况下,可添加额外电路以将FIFO 存储器的功能性添加到缓冲器存储器120。

提供CAN控制引擎130以控制所接收缓冲器条目到存储器120中的传送。至少一 个控制寄存器140与CAN控制引擎130耦合且可编程以选择各种各样的不同操作模式。 缓冲器存储器或FIFO存储器120可划分成多个缓冲器或FIFO 0..31,如图所示。每一缓 冲器/FIFO 0..31可具有多个消息条目,其中所述缓冲器/FIFO在大小及操作特性上是可 编程的。举例来说,FIFO0具有四个消息缓冲器(MB0到MB3)条目,FIFO 1具有两 个缓冲器条目等。图1还展示每一FIFO 0..32的例示性相关联开始地址。根据一个实施 例,经指派以存储来自MAB 110的消息的缓冲器条目150可由四个32位双字组成。根 据各种实施例,配置寄存器140可具有第一位160且任选地还具有第二位170,第二位 170指示来自MAB 110的数据以其来存储于缓冲器存储器120中的模式。举例来说,第 一位160可指示仅CAN消息的数据荷载传送到FIFO 120中。因此,当被设定时,所有 进一步控制信息被清除掉且仅所述数据荷载传送到FIFO存储器120中。根据另一实施 例,可使用第二位170来将来自时间捕获单元180的额外时间戳信息添加到所接收消息。 根据进一步实施例可实施多个第二位170,如寄存器140中的点线额外位所指示,以规 定在消息的第一位(开始位)处还是在消息的结束(停止位)处捕获时间。因此,导致 时间戳的实际事件可为可选择的。具有更多指定模式位的其它配置是可行的。

通常可存在用于装置中的每一FIFO的配置寄存器,如点线所指示。具有图1中的 用于每一FIFO的单独位将允许应用程序将一个FIFO当作数据积累FIFO(其中位160 被设定)且将单独FIFO视为用于需要由CPU进行进一步处理的通用FIFO(其中位160 清空)。

图1展示其中FIFO0配置为位160清空的情景。在此实施例中,每一消息缓冲器 (MB0到MB3)包含4个32位字,其中数据如图4(其中170清空)或图5(其中170 被设定)中所示布置。根据另一实例,如果FIFO0配置为位160被设定,那么图1中的 缓冲器条目150将仅具有两个32位字(数据0及数据1),其对应于来自CAN协议的 数据,如图6中所示。因此,根据一实施例,当位160被设定时,CAN控制引擎130 控制CAN消息的传送,以使得仅所述CAN消息的数据有效负载传送到FIFO 120中。 可这样做,以使得在没有任何间歇控制信息的情况下在FIFO 120内形成连续数据流。

模块含有用以存储CAN消息的若干个FIFO缓冲器FIFO0..31。所述FIFO可完全配 置,其中CAN消息存储于模块外部,系统存储器中的任何地方。每一FIFO可配置为传 输或接收FIFO,具有独立的大小、用户可读头部/尾部指针、可独立配置的中断、其它 状态位以在传输或接收消息时给出其状态。

根据一实施例,可执行以下步骤来配置CAN模块FIFO:将模块置于配置模式 (OPMOD=100);分配将FIFO定位于其中的存储器的区域(通常是SRAM的块); 以FIFO的物理开始地址(基址)更新相应寄存器;以FIFO大小更新FIFO控制寄存器 (CFIFOCON.FSIZE);选择FIFO成为传输还是接收FIFO(CFIFOCON.TXEN);设 定控制寄存器140中的控制位中的任一者(举例来说,位160或170);及将模块置于 正常模式(OPMOD=000)。

一旦FIFO存储器120的FIFO缓冲器已配置为传输FIFO,那么用户能够使用所述 FIFO缓冲器来传输数据。用户可读取FIFO尾部指针(CFIFOUA),其给出用以放置待 传输的消息的FIFO中的下一位置。将必须由CPU将此地址翻译成虚拟地址。应加载 CAN消息,在CFIFOUA所给出的位置处开始。一旦FIFO缓冲器已加载有待传输的消 息,那么用户通过设定CFIFOCON.UINC位来递增FIFO头部指针。此将递增头部指针 且将CFIFOUA所指向的地址增加四个32位字或16个字节。那么消息已准备好被传输。

一旦FIFO存储器120的FIFO缓冲器已配置为具有由控制位160、170或任何其它 控制位设定的相应传送模式的接收FIFO,那么用户将能够在消息由FIFO接收时读取所 述消息。在接收到消息之后,用户将从CFIFOUA读取消息的开始的物理地址。接着可 从此地址读取消息。在从FIFO读取消息之后,用户可通过设定CFIFOCON.UINC位来 更新尾部指针。此将递增尾部指针且将CFIFOUA所指向的地址增加4或2,此取决于 控制寄存器140中的位160的值。然而,可自动执行此递增,如下文将关于图2更详细 地解释。

CAN模块连续地监视CAN总线上的消息。当消息由CAN模块接收时,可将消息 识别符与目前配置的滤波器/屏蔽组合进行比较,如下文将结合另一实施例更详细地解 释。如果匹配发生,那么模块会将消息存储于指针寄存器所指向的FIFO中。

图3展示标准CAN消息及扩展的消息的结构。两种类型在添加到消息的控制数据 的大小上不同。特定来说,扩展的消息允许显著更长的识别位,而两种消息中载运的实 际数据的大小总是8个字节。在CAN控制引擎130的控制下,这些消息间断地存储于 消息汇编缓冲器110中且接着传送到存储器120的相应FIFO中。依据缓冲器存储器120 的设计及组织,存储那些消息的不同方式适用。举例来说,在32位系统中,每一缓冲 器条目MB0、MB1、MB2、MB3可具有四个32位字数据0、数据1、数据2及数据3。 在第一操作模式中,所接收标准或扩展的消息可存储于这四个32位字内,其中前两个 字数据0及数据1可含有识别符(SID、EID)及控制位,举例来说,指示消息中所含有 的实际数据(DLC)的长度,而实际数据总是存储于第三及第四字数据2及数据3中。 此情况的实例展示于图4中。第二模式可类似于第一模式且可通过设定(举例来说)控 制寄存器140中的相应位170来触发。如果此位被设定,那么可从选择性地由消息的接 收(或消息的开始)触发的时间捕获单元180获得的额外信息可存储于前两个数据字 DAT0及DAT1中。因此,可将从时间捕获单元180中的相应计时器捕获的时间戳信息 添加到消息。此情况的实例展示于图5中。

根据各种实施例,存在特殊接收模式,其中仅存储数据,且识别符、被保留位及其 它控制信息不与消息一起存储。用户通过设定控制寄存器140中的位160来启用此模式。 在此模式中,存储8个数据字节,而不管控制信息如何。因此,根据一特定实施例,忽 略数据长度信息(DLC)且可用00h来填充未使用字节。此模式的一个可能用途是并置 其数据跨越多个消息的消息,举例来说,跨越CAN总线传输串。根据一个实施例,不 与数据一起存储时间戳,即使上文所解释的相应位170被设定。

举例来说,如果将串“Hello World”从节点1发送到节点2,那么必需两个消息, 因为所述串长于8个字节。在前两个操作模式中,消息将如下被存储:

 SID  EID  DLC=8  D0=’H’  D1=’e’  D2=’l’  D3=’l’  D4=’o’  D5=’‘  D6=’W’  D7=’o’  SID  EID  DLC=4  D0=’r’  D1=’l’  D2=’d’  D3=0x00

而在其中位160被设定的第三模式中,消息将如下被存储:

 D0=’H’  D1=’e’  D2=’l’  D3=’l’  D4=’o’  D5=’‘  D6=’W’  D7=’o’  D0=’r’  D1=’l’  D2=’d’  D3=0x00

因此,在第三模式中,仅用每一CAN消息的数据顺序地填充存储器120。因此,当 剖析完所接收的CAN消息时,第三模式将移除显著软件开销。此还将允许更简单地并 置扩散于多个消息上的消息且节约保存消息所需要的硬件,因为通常需要四个32位字 来存储地址与数据有效负载,而第三模式将仅需要两个32位字来存储数据有效负载。

图2展示例示性实施例的更详细框图。第一及第二屏蔽寄存器215及220是可逐位 寻址的且包含单个输出位。此外,多个滤波器寄存器0...N(仅展示两个)由编号225 及230指定。滤波器寄存器225、230也包含单个输出位且是可逐位寻址的。另外,屏 蔽寄存器215及220以及所有滤波器寄存器225、230可由中央处理单元297以并行模 式读取及写入(图2中未展示连接)。定序器与控制单元210作为位选择单元操作且产 生地址信号,所述地址信号被馈送到屏蔽寄存器215及220以及所有滤波器寄存器225、 230。每一滤波器寄存器225、230包含相关联位比较器单元235、240。屏蔽寄存器215 及220的位输出信号被馈送到位比较器单元235、240的第一及第二输入。此外,滤波 器寄存器225、230的每一位输出被馈送到其相关联位比较器单元235、240的第三输入。 来自CAN总线的位流信号由CAN协议引擎295提供且被馈送到每一位比较器单元235、 240的第四输入。滤波器寄存器225、230可提供额外存储位,所述额外存储位与每一相 关联位比较器单元的第四输入耦合。每一位比较器单元235、240的输出载运接受信号 且与相关联缓冲器指针245、250的控制输入耦合。提供具有与滤波器寄存器的数目一 样多的输入的OR门255。每一输入从相应位比较器单元235、240接收接受信号。每一 缓冲器指针245及250的输出与连接到多功能地址寄存器260的地址输入的缓冲器指针 总线262耦合。OR门255的输出与多功能寄存器260的控制输入耦合。多功能寄存器 260进一步包含模式控制输入265、指示缓冲器存储器285是否已满的第一状态输出275、 指示缓冲器存储器285是否为空的第二状态输出280及用于多功能地址寄存器260的计 数器功能的增加/减少控制输入。多功能地址寄存器260的地址输出264与缓冲器存储器 285的地址输入耦合。缓冲器存储器285可完全配置为FIFO且可具有可在大小上可变 的多个FIFO缓冲器。缓冲器存储器285可配置为双端口存储器,其第一端口与从CAN 协议引擎295接收串行数据流的消息汇编缓冲器移位寄存器290耦合。CAN协议引擎 295可具有一个或一个以上配置寄存器。图2展示FIFO模式寄存器299,其控制指示以 其来将数据从消息汇编缓冲器移位寄存器290传送到缓冲器存储器285的相应FIFO缓 冲器中的方式的操作模式。缓冲器存储器285的第二端口可与中央处理单元297耦合, 中央处理单元297此外与用于存储程序及数据信息的存储器296耦合。

此实施例再次提供用以将来自串行数据流的数据写入到缓冲器存储器285中的相同 模式,如下文将解释。可以逐位方式而非并行地实现滤波器寄存器225、230中所存储 的滤波器值与所传输识别符的比较。因此,可避免需要相对大量的硅面积的并行比较器。 CAN协议引擎295所提供的串行数据流包含识别符,所述识别符被直接馈送到所有位比 较器单元235、240。定序器与控制单元210寻址屏蔽寄存器215、220及所有滤波器寄 存器225、230以将对应位输出到位比较器单元235、240。位比较器单元235、240将所 有滤波器寄存器位与帧内的相应识别符位进行比较。通过将结果与相应屏蔽寄存器位进 行比较来对其进行进一步处理。为此,每一滤波器寄存器225、230的额外存储位可指 示哪一屏蔽寄存器应用于此比较。下文将更详细地解释此功能。将针对帧内的每一识别 符的所有位积累最终比较结果。如果单个比较失败,那么将不产生接受信号。如果每个 位比较为正,那么会将接受信号馈送到相应缓冲器指针245、250且馈送到OR门255 的相应输入。

中央处理单元297可以以下方式控制多功能地址寄存器260。根据一实施例,可通 过模式信号265选择两个功能模式。在第一功能模式中,缓冲器指针245、250含有缓 冲器存储器285中的地址以将数据直接写入到缓冲器存储器285中规定位置处。多功能 地址寄存器260锁存已被放在地址总线262上的地址且寻址并行存储已由消息汇编缓冲 器移位寄存器290汇编的数据的缓冲器存储器285,其中CAN协议引擎295控制哪些数 据从消息汇编缓冲器移位寄存器290传送到缓冲器存储器285中。

可借助控制信号265选择第二功能模式。在此模式中,不需要缓冲器指针245、250 且因此将忽视其输出信号。当此模式被激活时,多功能地址寄存器内的实际地址寄存器 (举例来说)被设定为“Fh”且状态信号280将用信号通知空缓冲器。每当位比较器单 元235、240产生接受信号,此触发多功能地址寄存器260的递增功能且其内容因此将 递增1。因此,在CAN协议引擎295的控制下,由消息汇编缓冲器移位寄存器290汇编 的第一数据将存储于存储器位置0处。此功能提供其中没有缓冲器与任一位比较器相关 联的CAN模块的纯FIFO功能性。FIFO存储器285将被顺序地写入,直到地址再次到 达“Fh”,其指示缓冲器已满,除非CPU已读取先前条目。已满FIFO存储器285将由 控制信号275指示。在额外模式中,控制信号270可在地址寄存器的递增与递减功能之 间进行选择。额外信号可由CPU 297提供以指示是否已读取缓冲器值以用于产生恰当状 态信号275及280且确保没有值将在由CPU 297提取之前被覆写。可实施缓冲器存储器 285的其它功能模式。

FIFO模式控制寄存器299可具有多个位,其每一者指示FIFO 285的特定操作模式, 如上文关于图1所解释。图4到7更详细地展示先前解释的三个可能操作模式。在图4 中,展示以其存储标准或扩展的CAN消息的正常模式。第一32字使用11位来存储识 别符SID。使用第二32位字的27位来存储各种控制位DRR、IDE、扩展的识别符EID、 位RTR、RB1、RB0及数据长度信息DLC。第三及第四32位字存储数据字节0到7。 图5展示以其来将时间戳信息CMSGTS存储于第一32位字的上部16位中且将滤波器 信息存储于第一32位字的接下来5个先前未使用位中的时间戳模式。使用与第一操作 模式相同的其它三个32位数据字。

图6展示当FIFO模式寄存器299中的相应位被设定时存储消息的方式。现在,仅 存储数据有效负载,占据第一及第二32位字。接着使用第三及第四32位字来存储连续 消息的数据。

图7更详细地展示来自图1的CAN协议引擎480。协议引擎480组合数个功能块。 引擎480的心脏是协议有限状态机310(FSM)。此状态机逐位地定序经过消息,从而 在传输或接收各种帧类型的各种字段时改变机器的状态。FSM 310为控制分别RX/TX 移位寄存器320、325、CRC寄存器330以及接收总线350及传输总线360之间的顺序 数据流的定序器。移位寄存器320、325可为消息汇编寄存器490的部分。提供额外组 件355及365以转换数据流且适应总线350及360上的相应计时。FSM还控制错误管 理逻辑340(EML)及TX/RX移位寄存器320、325与CAN模块的其它组件之间的并 行数据流RecData。根据CAN协议执行接收仲裁、传输及错误信令的过程。FSM 310 还处置总线上消息的任何自动传输。

到协议引擎480的数据接口由字节宽的传输及接收数据组成。并非汇编及移位整个 帧,而是将帧破分成字节。来自协议FSM 310的接收或传输地址表明帧的哪一字节是当 前的。对于传输,选择来自传输缓冲器的适当字节且将其呈现给引擎,引擎接着使用8 位移位寄存器来将数据串行化。对于接收,8位移位寄存器汇编字节,所述字节接着被 加载于消息汇编缓冲器490中的适当字节内。

循环冗余校验寄存器330产生供在数据字节上传输的循环冗余校验(CRC)码且校 验传入消息的CRC码。错误管理逻辑(EML)340负责CAN装置的故障约束。通过来 自位流处理器的命令递增及递减其计数器,接收错误计数器及传输错误计数器。根据错 误计数器的值,CAN控制器被设定成主动错误状态、被动错误状态或总线关断状态。

单元355内的位计时逻辑(BTL)监视总线输入且根据CAN协议处置与总线相关 的位计时。如果CAN控制器本身不传输占有位,那么BTL在帧的开始的空闲到占有总 线转变上及在任何进一步空闲到占有总线转变上同步。BTL还提供可编程时间段以补偿 传播延迟时间及相移,且在界定位时间中的取样点的位置时进行补偿。BTL的编程取决 于波特率及外部物理延迟时间。

在图8中,展示比较器单元的例示性实施例。展示单个位比较器单元的细节,但所 述细节相应地适用于所有其它位比较器单元。编号600指示提供CAN串行数据流的单 元,所述CAN串行数据流被馈送到消息汇编缓冲器寄存器490及异NOR门690的第一 输入。滤波器寄存器620的单个位输出与异NOR门690的第二输入耦合,异NOR门 690的输出与NOR门650的第一输入连接。NOR门650的第二输入从屏蔽寄存器630 接收单个位输出信号。NOR门650的输出与AND门660的第一输入耦合,AND门660 的输出与D触发器670的控制输入耦合。D触发器670的输入D与逻辑“低”信号(例 如,Vcc)耦合。D触发器670的反相输出与AND门640的第一输入耦合,AND门640 的输出提供接受信号。AND门640及660分别包含第二输入ACC_RDY及BIT_RDY, 其用于与相应输入信号同步。位选择逻辑610与滤波器寄存器620及屏蔽寄存器630耦 合以选择将用于每一帧内的比较的相应位。

传入CAN位流与位选择逻辑610同步。换句话说,位选择逻辑610选择滤波器寄 存器620及屏蔽寄存器630中对应于串行位流的传入位的相应位。实际比较器由在两个 输入信号相同的情况下仅在其输出处产生逻辑“高”的异NOR门690形成。NOR门650 用作屏蔽单元以在屏蔽寄存器630内的相应位被设定的情况下屏蔽掉结果。D触发器670 用作寄存器以积累一连串比较内的结果且在帧的开始被预设定为“1”。仅在帧内的所 有比较成功的情况下,将产生AND门640的输出处的接受信号AccN。否则,D触发器 670由错误比较结果设定为“0”且保持为“0”直到帧的结束。使用两个控制信号ACC_RDY 及BIT_RDY来同步及激活相应信号。

图9更详细地展示具有甚至更多功能性的位比较器单元435、440的另一例示性实 施例。而且,展示位比较器单元0的细节,但所述细节相应地适用于所有其它位比较器 单元。屏蔽寄存器415及420的输出与4:1多路复用器520的第一及第二输入耦合。可 在多路复用器520的第三及第四输入处提供额外输入560及570。举例来说,输入560 与由编号580指定的滤波器寄存器15的输出耦合。滤波器寄存器425包含(举例来说) 与多路复用器520的选择输入耦合的两个额外输出。多路复用器520可具有任何大小, 举例来说,可扩充到N:1多路复用器,从而将屏蔽的数目增加到N。多路复用器520的 输出连接到NOR门530的第一输入。NOR门530作为确认单元操作,从而指示是否将 使用或忽略比较结果。NOR门530的第二输入与异NOR门510的输出耦合,异NOR 门510的第一输入从滤波器寄存器425接收位输出信号且其第二输入从CAN协议引擎 495接收串行数据流。NOR门530的输出与D触发器540的控制输入耦合。D触发器 540的D输入接收逻辑低信号。在D触发器540的求反输出550处载运接受信号。

第一比较级由异NOR门510形成。在此级中,将串行位流的识别符位与滤波器寄 存器425的相应位进行比较。异NOR门510仅在两个输入信号相同的情况下在其输出 处产生逻辑“高”。定序器单元410选择滤波器寄存器425内的相应位。滤波器寄存器 425包含指示应使用哪一屏蔽寄存器的额外数据位。在此例示性实施例中,可选择四个 不同值。可选择屏蔽寄存器415或420中的任一者或可由另一滤波器寄存器(举例来说, 滤波器寄存器15)提供第三值。可使用第四可能选择570来指示通过提供相应电平(举 例来说,逻辑“1”)将不使用屏蔽。因此,可给每一滤波器寄存器425、430指派个别 屏蔽功能。选定屏蔽值将放在NOR门530的第一输入处。如果所述屏蔽值指示应使用 滤波器寄存器425中的相应位,那么NOR门530将作为可控制开关操作且将异NOR门 510的比较结果馈送到控制输入D触发器540。D触发器540用作被预设定为“1”的寄 存器。如果一个比较的结果为负(指示没有匹配)且相应屏蔽位无效,那么将清空D触 发器540且将不产生接受信号550。D触发器540因此将重设为“0”。D触发器540将 预设定为“1”,从而再次以下一帧开始以比较另一识别符,如上文所描述。

可使用任何其它类型的适当逻辑来实施比较器。举例来说,可使用可控制开关、等 效布林运算器等。此外,可将确认单元放在比较器前面或比较器之后。确认单元的基本 功能是并入选定位或将其从比较中排除。

因此,本发明极适于实施所述目标并获得所提及的结果及优点以及其中固有的其它 结果及优点。虽然已参照本发明的特定优选实施例描述、描述及界定了本发明,但此些 参照并不暗示对本发明的限制,且不应推断出存在此种限制。本发明能够在形式及功能 上做出大量修改、替代及等效形式,所属领域的技术人员将联想到所述修改、替代及等 效形式。所描绘及所描述的本发明的优选实施例仅为例示性,且并非对本发明的范围的 穷尽性说明。因此,本发明既定仅由所附权利要求书的精神及范围的限制,从而在所有 方面赋予对等效物的完全认知。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号