logo资料库

英飞凌单片机CAN介绍.pdf

第1页 / 共127页
第2页 / 共127页
第3页 / 共127页
第4页 / 共127页
第5页 / 共127页
第6页 / 共127页
第7页 / 共127页
第8页 / 共127页
资料共127页,剩余部分请下载后查看
TC1728 CAN控制器(MultiCAN) 20 CAN控制器(MultiCAN) 本章描述TC1728 MultiCAN 控制器。它包括如下几个部分: • CAN 基本知识(见页20-2) • TC1728中的CAN模块概述(见页20-11) • MultiCAN 内核功能描述(见页20-14) • MultiCAN 内核寄存器描述(见页20-56) • TC1728 的具体实现 (端口连接和控制、中断控制、地址译码、时钟控制,见页20-113) 注:本章描述的MultiCAN 寄存器的名称在TC1728 用户手册其它章节引用时,需要添加模块 名前缀“CAN_”。 表20-1 固定模块中的常量 常量 n_objects n_interrupts n_pendings n_pendingregs n_lists n_nods 功能描述 可用报文对象的数目 可用中断输出线的数目 可用报文挂起位的数目 有n_pendings/32 个报文挂起寄存器。 报文对象分配的可用数目列表 可用CAN节点的数目 因为每个CAN节点除了其自己的列表 外还有未分配的元素列表,所以关系n_nods < n_lists 为真。 用户手册 MultiCAN, V2.24 20-1 V1.0, 2011-12
20.1 CAN 基本知识 TC1728 CAN控制器(MultiCAN) CAN 为单一逻辑总线的异步串行总线系统,具有开放的线性总线结构,每个通信参与 者都是平等的,称之为节点。CAN 总线包含两个或多个节点。 总线逻辑采用“线与”机制,隐性位(等同于逻辑 1 电平)被显性位(等同于逻辑0 电平)改 写。只要没有节点发送显性位,总线就处于隐性状态。在这种状态下,从任何总 线节点发 出的显性位产生一个显性总线状态。从定义上讲,CAN 总线的最大速度为 1Mbit/s。该速 度下,CAN 总线长度最多为40 米。对于超过40 米的总线,必须降低总线速 度。 CAN 帧的二进制数据编码为 NRZ码(非归零)。为了确保所有总线节点都能够重新同 步, 使用位填充方法。这意味着发送报文期间,最多5 个连续位可以具有相同的极性。发送5 个 同极性的连续位之后,发送器将插入一个与先前发送的位流极性相反的附加位(填充位), 之后才能继续发送后面的位。接收器也会检查具有相同极性位的位个数,并从位流中删 除 填充位(=去填充)。 20.1.1 寻址和总线仲裁 CAN 协议中,地址信息由报文中的标识符域给出。标识符指示报文内容和优先级。 标识符的二进制数值越小,报文优先级越高。 使用带 NDA 的 CSMA/CD(非破坏性仲裁的载波侦听多路访问/冲突检测)进行总 线仲 裁。如果总线节点 A 试图通过网络发送报文,该节点先检测总线是否处于空闲状态(“载 波侦听”),也就是说,没有节点在进行发送操作。如果情况如此(且没有其它 节点要同 时启动一次报文发送操作),节点 A 成为总线主设备并发送报文。所有其它节 点在第一 个发送位(帧起始位)期间切换到接收模式,每个总线节点检查报文标识符, 如有需要, 存储该报文,否则忽略该报文。 如果两个或多个节点同时启动发送操作(“多路访问”),通过按位仲裁(“冲突 检测/非 破坏仲裁”和“线与”机制,显性位占先(显性位改写隐性位))避免报文发送 的总线冲突。每 个发送报文的节点都读回总线电平。当一个节点发送隐性位而读回显性 位,该节点丢 失总线仲裁并从发送模式切换到接收模式。例如,当一个竞争节点的报文 标识符具有 较低的二进制值,因此具有较高发送优先级时,会出现上述情况。在这种情 况下,具 有最高优先级的总线节点赢得仲裁且不需要重复发送报文(从而不需要损失时 间),一旦 总线返回空闲状态,其它失去仲裁的节点将自动重复发送操作。因此,数据 帧中同一 个标识符只能被系统中的一个节点发送。也就是说,一定不能设置为由多个节 点发送带 同一个标识符的数据帧。 用户手册 MultiCAN, V2.24 20-2 V1.0, 2011-12
标准报文标识符长度为11 位,CAN 规范2.0B 将报文标识符扩展为29 位,称为扩展标 TC1728 CAN控制器(MultiCAN) 识符。 20.1.2 CAN 帧格式 共有3种类型的CAN帧: • 数据帧 • 远程帧 • 错误帧 数据帧包含长度为0 到8 字节的数据域。远程帧不包括数据域,通常用来请求数据 (如请求来自传感器的数据)。数据和远程帧可以使用带11 位“标准”标识符和29 位“扩 展” 标识符。检测到总线错误的任意节点都可以产生错误帧。 20.1.2.1 数据帧 共定义了2种类型的数据帧(见图20-1): • 标准数据帧 • 扩展数据帧 标准数据帧 数据帧的第一位是帧起始位(SOF = 显性位),用于硬件同步所有节点。SOF 之后 是 12 位仲裁位域,由 11 位标识符(指示报文内容和优先级)和 1 位 RTR(远程发送 请求)组成。 RTR 为显性电平,指示该帧为数据帧。RTR 为隐性电平,则该帧为远程帧。 仲裁域之后是 6 位控制位域。该位域的第一位是 IDE(标识符扩展)位,该位为显 性电 平,表示该帧为标准数据帧。IDE 位之后一位保留,为显性电平。其余 4 位为数据 长度码 (DLC),指示数据域长度(字节个数)。数据域宽度为 0 到 8 字节。循环冗余(CRC)域紧跟数 据字节,用于检测可能出现的数据字节发送错误。该位域由 15 位CRC 序列组成,其最后 一位是隐性 CRC 分隔符位。 标准数据帧的最后一个位域是应答域。在 ACK 时隙期间,发 送节点发出隐性位。无论该节点是否配置为接收该报文帧,接收到无错帧的任何节点都发 回一个显性位指示该节点正确接收了该报文帧。该特性表明 CAN 协议属于“位回应”类型协 议。隐性 ACK 分隔符 位,不能由显性位改写,是应答位域的最后一位。 用户手册 MultiCAN, V2.24 20-3 V1.0, 2011-12
TC1728 CAN控制器(MultiCAN) 7 个隐性帧结束(EOF)位是数据帧的最后一个位域。在连续两帧之间,总线必须处 于 隐性状态至少 3 个位时间(称为帧间间隔)。帧间间隔之后,如果没有其它节点试图发 送, 那么总线保持隐性电平的空闲状态。 图20-1 CAN 数据帧 扩展数据帧 扩展数据帧的报文标识符被扩展为29 位。可分为两部分,11 位低位部分(和标准帧 中的相同)和18 位高位部分,在标准帧和扩展帧中,必须确保标识符扩展位(IDE) 位于相 用户手册 MultiCAN, V2.24 20-4 V1.0, 2011-12
TC1728 CAN控制器(MultiCAN) 同的位置上。 扩展 CAN 数据帧中,SOF 位之后是 32 位仲裁域。前 11 位是 29 位标识符低位部 分(“基本 ID‖),随后是隐性电平的替代远程请求(SRR)位。SRR 之后是隐性IDE 位, 指 示该帧为扩展 CAN 帧。如果发送标识符 11 位低位部分之后,仲裁仍未解决,且如果 参 与仲裁的一个节点发出标准 CAN 帧,因为其 IDE 位为显性,标准 CAN 帧赢得仲裁。 因此, 设置扩展 CAN 帧的 SRR 位为隐性以允许正在发送标准 CAN 远程帧节点设置其 RTR 位为 显性。SRR 和 IDE 位之后是扩展标识符高 18 位和 RTR 位。 扩展数据帧的控制域和帧结束域与标准数据帧相同。 20.1.2.2 远程帧 通常自动执行数据发送操作,由数据源节点(例如传感器)发出数据帧。然而,也可 能由一个(或多个)目标节点从数据源节点请求数据。为了实现该功能,目标节点发出一 个标识符与所请求数据帧标识符匹配的远程帧。对应的数据源节点将发送数据帧,以回 应 该远程请求。 远程帧和数据帧有两点不同: • 远程帧RTR 位为隐性电平 • 远程帧没有数据域 如果同时发送标识符相同的数据帧和远程帧,因为数据帧标识符 之后的RTR 位为显性,所以数据帧赢得仲裁。在此情况下,发送远程帧的节点立 即接收所请求的数据帧。标准和扩展远程帧格式见图20-2。 用户手册 MultiCAN, V2.24 20-5 V1.0, 2011-12
TC1728 CAN控制器(MultiCAN) 图20-2 远程帧 用户手册 MultiCAN, V2.24 20-6 V1.0, 2011-12
20.1.2.3 错误帧 TC1728 CAN控制器(MultiCAN) 由检测到总线错误的任意节点产生错误帧。错误帧由两部分组成,错误标志域和其 后的错误分隔符域。错误分隔符位域由 8 个隐性位组成,出现错误之后,允许总线节点 重新开始通信。然而,错误标志域有两种格式,由检测到错误的节点的错误状态决定其 格式。 当错误激活节点检测到总线错误,该节点产生一个带错误激活标志的错误帧。错误 激活标志由 6 个连续显性位组成,故意违反位填充规则。其它节点识别到位填充错误, 这些节点自身也产生错误帧。因而CAN 总线上的错误标志域由6 到12 个连续显性位组成 (由一个或多个节点产生)。错误分隔符域为错误帧的结束部分。发送错误帧之后,总 线 返回到正常状态且中断的节点试图再次发送被中止的报文。 如果错误认可节点检测到总线错误,该节点发送一个错误认可标志,其后是错误分 隔符域。错误认可标志由 6 个连续隐性位组成,因此错误帧(对错误认可节点来说)由14 个隐性位组成(也就是说,无显性位)。因此,错误认可节点发送错误帧的操作不会 影响 网络中任何其它节点,除非检测到该总线错误的节点正在发送报文(即,其为总线主设 备)。如果总线主设备节点产生一个错误认可标志,可能会导致其它节点因违反位 填充 规则而产生错误帧。错误认可节点发送错误帧之后,必须在总线上等待 6 个连续隐性位 才能尝试再次参加总线通信。 图20-3 CAN 错误帧 用户手册 MultiCAN, V2.24 20-7 V1.0, 2011-12
TC1728 CAN控制器(MultiCAN) 20.1.3 标准位时间 一个位时间单元(对应于NRZ 码的高或低脉冲)由4 个时间段组成。每个时间段 由 整数个基本时间单元tQ 组成,基本时间单元是CAN 节点使用的最小离散时序精度单 位。各段额定(标准)位时间定义见图20-4。 图20-4 标准位时间的组成 同步段(SYSNC_SEG)用于同步各总线节点。如果在前一位和当前位之间位状态发生改 变,那么在该段期望总线状态发生改变。该段长度始终为1 tQ。 传播段(PROP_SEG)用于补 偿通过网络时产生的信号延迟。该延迟由总线上的信号传播延迟和通过总线节点接口电路 的延迟两部分组成。 相位缓冲段 1 和 2(PHASE_SEG1 ,PHASE_SEG2)用于补偿边沿相位错误。这 些段可能 被重新同步操作拉长或缩短。PHASE_SEG2 用于计算紧跟着的位电平,且≥2tQ 。 在 采 样 点 处 , 读 出 总 线 电 平 并 将 其 解 释 为 位 单 元 的 值 。 采 样 点 位 于PHASE_SEG1 末 尾。 一个位时间所包含的tQ个数在8 到25 之间。 重新同步可能拉长 PHASE_SEG1 或者缩短 PHASE_SEG2。相位缓冲段的拉长或 者缩 短量有一个上限,由重新同步跳转宽度给出。重新同步跳转宽度可能在 1tQ和 4tQ 之间,但 是不能超过PHASE_SEG1。 用户手册 MultiCAN, V2.24 20-8 V1.0, 2011-12
分享到:
收藏