logo资料库

SJA1000独立的CAN控制器应用指南(中文).pdf

第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
资料共44页,剩余部分请下载后查看
广州周立功单片机发展有限公司 http://www.zlgmcu.com SJA1000 独立的独立的独立的独立的 CANCANCANCAN 控制器应用指南 控制器应用指南 控制器应用指南 控制器应用指南 关键词 SJA1000 独立的 CAN 控制器 CAN2.0B PeliCAN 1 介绍 控制器局部网 CAN 是一个串行的 异步的 多主机的通讯协议 SJA1000 是一个独立的 CAN 控 制器 它在汽车和普通的工业应用上有先进的特征 由于硬件和软件的兼容 它将会替代 PCA82C200 它与 PCA82C200 相比具有更先进的特征 因此特别适合于轿车内的电子模块 传感器 制动器的连接和 通用工业应用中 特别是系统优化 系统诊断和系统维护时特别重要 本文倾向于在设计 SJA1000 为基础的 CAN 节点上引导用户 同时还提供典型的应用电路图和用于编 程的流程图 2. 概述 独立的 CAN 控制器 SJA1000 有 2 个不同的操作模式 Basic CAN 模式 PCA82C200 兼容 PeliCAN 模式 上电时 Basic CAN 模式是默认的操作模式 因此 已经使用 PCA82C200 开发出的硬件和软件可以 直接被 SJA1000 使用而不用作任何修改 PeliCAN 模式是操作的新模式 它能够处理所有的 CAN2.0B 定义的帧类型 而且它还提供一些增强功 能使 SJA1000 能应用于更宽的领域 2.1 SJA1000 特征 SJA1000 的特征能分成 3 组 1 已建立好的 PCA82C200 功能 这组的特征在 PCA82C200 里已经生效 2 提高的 PCA82C200 功能 部份这些功能在 PCA82C200 里已经生效 但是 在 SJA1000 里 它们在速度 大小和性能方面已得 到提高 3 在 PeliCAN 模式里的增强功能 在 PeliCAN 模式里 SJA1000 支持一些错误分析功能 如支持系统诊断 系统维护 系统优化 而且 这个模式里也加入了对一般 CPU 的支持和系统自身测试的功能 在下面的表中 SJA1000 所有的特征已被列在表里 包括它们在应用中主要的优点 表 1 SJA1000 应用中的优点 已建立好的 PCA82C200 功能 灵活的处理器接口 可编程的 CAN 输出驱动器 对各种物理层的分界面 CAN 位频率高达 1Mbit/s 允许接入大部分的微型处理器和微型控制器 SJA1000 覆盖了位频率的所有范围 包括高速应用 提高的 PCA82C200 功能 CAN2.0B(隐性的) 64 个字节接收 FIFO 24MHz 时钟频率 接收比较器旁路 SJA1000 的 CAN2.0B 隐性特征允许 CAN 控制器接收带有 29 位 ID 的信息 高达 21 条信息能被存储在接收 FIFO 中 这延长了最大中断服务时间 避 免了数据溢出 较快的处理器访问和更多的位定时选择 缩短间隔延迟 由于一个改进的位定时编程 产生更高的 CAN 总线长度 - 1 -
广州周立功单片机发展有限公司 http://www.zlgmcu.com 在 PeliCAN 模式里强大的功能 CAN2.0B 有效 发送缓冲器 增强的验收滤波器 可读的错误计数器 可编程的错误警告限制 错误代码捕捉寄存器 错误中断 仲裁丢失捕捉中断 单次发送 仅听模式 自我测试模式 CAN2.0B 活跃支持带有 29 位 ID 网络扩展应用 用于带有 11 位或 29 位 ID 信息的单个信息发送缓冲器 两个验收滤波器模式 支持 11 位和 29 位 ID 过滤 支持错误分析 在标准相位和在正常操作期间可被用于 诊断 系统维护 系统优化 支持系统优化包括信息等待时间分析 使软件命令最小化和允许快速重载发送缓冲器 SJA1000 能够作为一个隐性的 CAN 监控器操作 可以分析 CAN 总线通 信或自动的位速率检测 支持全部 CAN 节点的功能性自我测试或在一个系统内的自身接收 2.2 CAN 节点结构 一般来说 每个 CAN 模块能够被分成不同的功能块 CAN 总线的连接通常由被优化的 CAN 收发器收发器收发器收发器建 立 收发器控制逻辑电平信号从 CAN 控制器到达总线上的物理层 反之亦然 上面一层是一个 CAN 控制器控制器控制器控制器 它执行在 CAN 规约里定义的 CAN 协议 它通常用于信息缓冲和验收 滤波 而所有这些 CAN 功能都被一个模块控制器 模块控制器控制 它用于执行功能性的应用 例如 控制调节器 读传 模块控制器 模块控制器 感器和处理人 机接口 MMI 如图 1 所示 SJA1000 独立的 CAN 控制器总是位于微型控制器和收发器之间 在一般情况下 这个 控制器是一个集成电路 传感器 变送器 MMI 传感器 变送器 MMI 总线 图 1 CAN 模块装置 - 2 -
广州周立功单片机发展有限公司 http://www.zlgmcu.com 2.3 方块图 下图是 SJA1000 的方块图 SJA1000 发送 缓冲器 收发器 图 2 SJA1000 的方块图 根据 CAN 规约 CAN 核心模块 核心模块控制 CAN 帧的发送和接收 核心模块 核心模块 接口管理逻辑完成对外部主控制器的连接 该控制器能可以是微型控制器或其他器件 经过 SJA1000 接口管理逻辑 接口管理逻辑 接口管理逻辑 复用的地址/数据总线访问寄存器和控制读/写选通信号都在这里处理 另外除了 PCA82C200 已有的 BasicCAN 功能 还加入了一个新的 PeliCAN 功能 因此 附加的寄存器和逻辑电路主要在这块里生效 SJA1000 的发送缓冲器 发送缓冲器能够存储一个完整的信息 扩展的或标准的 无论什么时候主控制器初始化 发送缓冲器 发送缓冲器 发送 接口管理逻辑会迫使 CAN 核心块从发送缓冲器读 CAN 信息 当收到一个信息时 CAN 核心块将串行位流转换成用于验收滤波器的 验收滤波器的并行数据 通过这个可编程的 验收滤波器的 验收滤波器的 滤波器 SJA1000 能确定哪些信息实际上被主控制器收到 所有收到的信息由验收滤波器接收并存储在接收接收接收接收 FIFO 储存信息的多少由工作模式决定 而最多能 存储 32 个信息 因为数据溢出的可能性被大大降低 这使用户能更灵活地指定中断服务和中断优先级 3. 系统 为了连接到主控制器 SJA1000 提供一个复用的地址/数据总线和附加的读/写控制信号 SJA1000 能 被看作外围存储器并为主控制器映射 I/O 设备 3.1 SJA1000 应用 SJA1000 的寄存器和管脚配置允许它使用于各种各样的集成的或分立的 CAN 收发器 这使不同微控 制器之间的接口能够被灵活运用 一个包括 80C51 微型控制器和 PCA82C251 收发器的典型 SJA1000 应用图如图 3 所示 CAN 控制器 功能作为一个时钟源 复位信号由外部复位电路产生 在这个例子里 SJA1000 的片选由微控制器的 P2.7 口控制 否则 这个片选输入必须接到 VSS 也可以通过地址解码控制 例如 当地址/数据总线用于其他 外围器件 - 3 -
广州周立功单片机发展有限公司 http://www.zlgmcu.com AD0 / P0.0 AD1 / P0.1 AD2 / P0.2 AD3 / P0.3 AD4 / P0.4 AD5 / P0.5 AD6 / P0.6 AD7 / P0.7 P2.7 ALE / PROG RD / P3.7 WR / P3.6 INT0 / P3.2 XTAL1 RST 23 24 25 26 27 28 1 2 4 3 5 6 16 7 17 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 CS ALE RD WR INT CLK OUT RST TX0 TX1 RX0 RX1 MODE VDD1 VSS1 VDD2 VSS2 VDD3 VSS3 XTAL1 XTAL2 13 14 19 20 11 22 8 18 21 12 15 9 10 TXD CANH * RXD CANL V ( Intel 模式 ) V V CAN 总线 C1 C1 = C2 = 15pF 6 ... 24 MHz C2 * 比较器旁路 = 有效 图 3 典型的 SJA1000 应用 3.2 电源 SJA1000 有三组电源引脚 用于 CAN 控制器内部不同的数字和模拟模块 VDD1/VSS1 VDD2/VSS2 VDD3/VSS3 为了更好 EME 电源应该分开 例如用于比较器的 VDD2 可一个 RC 滤波器解耦来抑制噪音 内部逻辑 输入比较器 输出驱动器 数字 模拟 模拟 3.3 复位 为了得到一个恰当的复位 一个稳定的振荡器时钟必须接在在 CAN 控制器的 XTAL1 管脚上 见 3.4 章 引脚 17 上的外部复位需要被同步并被内部延长到 15 个 tXTAL 这保证了 SJA1000 所有的寄存器正确 的复位 见[1] 要注意的是上电时必须要考虑振荡器的起振时间 3.4 振荡器和时钟策略 SJA1000 能使用片内振荡器或带有片外时钟源工作 另外 CLK OUT 管脚可被使能 为主控制器输出 时钟频率 图 4 显示了四个不同的计时原理 如果不需要 CLK OUT 信号 可以通过置位被时钟寄存器 clock Off 1 关掉 这将提高 CAN 节点的 EME 性能 fXTAL/时钟分频因子 1 2 4 6 8 10 12 14 CLK OUT 信号的频率可通过时钟分频寄存器改变 fCLKOUT 上电时或硬件复位 时钟分频因子的默认值取决于所选的接口模式 引脚 11 如果使用 16MHz 的晶 振 在 Intel 模式下 CLK OUT 的频率是 8 MHz 在 Motorola 模式 复位之后的时钟分频因子是 12 这 种情况会产生 1.33MHz - 4 -
广州周立功单片机发展有限公司 http://www.zlgmcu.com Clock Off = 1 Clock Off = 1 Clock Off = 0 Clock Off = 1 图 4 时钟方案 3.4.1 睡眠和唤醒 置位命令寄存器中的睡眠位 BasicCAN 模式 或模式寄存器 PeliCAN 模式 的睡眠模式位后 如 果没有总线活动和中断等待 SJA1000 就会进入睡眠模式 振荡器保持运行直到已过了 15 个 CAN 位 此 时 允许微型控制器与 CLK OUT 频率同步来进入低功耗模式 如果三个唤醒条件之一[1]发生 振荡器会再次启动并产生一个唤醒中断 振荡器稳定下来后时 CLK OUT 频率被激活 3.5 CPU 接口 SJA1000 支持对两个著名的微型控制器系列的直接连接 80C51 68xx 通过 SJA1000 的 MODE 引 脚 可选择接口模式 Intel 模式 Motorola 模式 MODE 高 MODE 低 在 Intel 模式和 Motorola 模式里 地址/数据总线和读/写控制信号的连接如图 5 所示 飞利浦基于 80C51 系列 8 位微控制器和带有 XA 结构的 16 位微型控制器 都使用 Intel 模式 为了和其他控制器的地址 数据总线和控制信号匹配 必须要附加逻辑电路 但是必须确保在上电期 间不产生写脉冲 另一个方法在这个时候使片选输入高电平 CAN 控制器无效 - 5 -
广州周立功单片机发展有限公司 http://www.zlgmcu.com 80C51 C SJA1000 68xx C SJA1000 AD0 : : : : AD7 E R/W AS AD0 : : : : AD7 RD WR ALE MODE AD 7 .. 0 GND AD0 : : : : AD7 RD WR ALE 80C51XA C A0 A3 AD 7 .. 0 AD0 : : : : AD7 RD WR ALE MODE V SJA1000 A4D0 : : : : A11D7 AD 7 .. 0 AD0 : : : : AD7 RD WRL ALE RD WR ALE MODE V 图 5 SJA1000 的 CPU 时钟接口 3.6 物理层接口 为了和 PCA82C200 兼容 SJA1000 包括一个模拟接收输入比较器电路 如果收发器的功能由分立元 件实现 这个集成的比较器就能使用 - 6 -
广州周立功单片机发展有限公司 http://www.zlgmcu.com 比较器旁路 = 不激活 (CBP = 0) t 比较器旁路 = 激活 (CBP = 1) t 图 6 SJA1000 接收输入比较器 如果外部集成收发器电路有效 而比较器旁路功能在时钟分频寄存器里无效 RX1 必须被连接到 2.5V 的参考电压上 现存的收发器参考电压输出 图 6 显示了两种设置的相应电路 CBP 激活 CBP 非激活 另外唤醒信号的通道被引出 一个集成的收发器电路使用所有的新应用 都建议激活 SJA1000 的比较器旁路功能 图 7 如果这 个功能被使能 施密特触发器有效 内部的传播延迟 tD2 比接收比较器延迟的 tD1 要小得多 这在最大总线 长度[8]上有积极的影响 另外 它在休眠模式里将显著地降低电流 SJA1000 n.c. TX0 TX1 RX0 RX1 PCA82C250 PCA82C251 TJA1053 TxD RxD CANH CANL OCR = 1A H CDR = X1XX XXXX H 4 CAN 通迅的控制 图 7 带有集成收发电路的标准应用 4.1 控制 SJA1000 的基本功能和寄存器 SJA1000 由主控制器的程序进行功能配置和激活 因此 SJA1000 能满足不同属性的 CAN 总线系统的要 求 主控制器和 SJA1000 之间的数据交换经过一系列的寄存器 控制段 和一个 RAM 信息缓冲器 完 成 对于主控制器来说 构成发送和接收缓冲器的寄存器和一部份 RAM 的地址窗口 就象是外围的寄存 - 7 -
广州周立功单片机发展有限公司 http://www.zlgmcu.com 器 表 2 列出了这些寄存器 并根据它们在系统中的作用分组 注意 一些寄存器只在 PeliCAN 模式有效 控制寄存器就仅在 BasicCAN 模式里有效 而且一些寄存 器是只读的或只写的 还有一些只能在复位模式时被访问 关于寄存器的读 和 或 写访问 位定义和复位值的更多信息 可在数据表[1]中找到 表 2 SJA1000 内部寄存器的分类 使用类型 寄存器名称 符号 寄存器地址 模式 控制 命令 时钟分频 验收代码 屏蔽 总线定时寄存 器 0 1 输出控制 命令 状态 中断 中断使能 控制 仲裁丢失捕捉 错误代码捕捉 MOD CR CMR CDR ACR AMR BTR0 BTR1 OCR CMR SR IR IER CR ALC ECC 错误警告限制 EWLR RX 错误计数 RXERR PeliCAN 模式 0 31 16 29 20 23 6 7 8 1 2 3 4 11 12 13 14 选择不同的 操作模式的 要素 设 定 CAN 通讯的要素 复杂的错误 检测和分析 的要素 信息缓冲器 BasicCAN 模式 0 1 31 4 5 6 7 8 1 2 3 0 功能 验收滤波器 仅听 自 和复位 休眠 我检测 模式选择 BasicCAN 模式里的复位模 式选择 BasicCAN 模式里的休眠模 式命令 PeliCAN 模式 比较器旁路 模式或 TX1 管脚 14 输出 模式的 CLKOUT 管脚 7 时钟信号的设定选择 验收滤波器位模式的选择 位时序参数的设置 输出驱动器属性的选择 用于自我接收 清除数据溢 出 释放接收缓冲器 发送 中止和发送请求的命令 信息缓冲器的状态 CAN 核 心模块的状态 CAN 中断标志 在 PeliCAN 模式里中断的使 能和禁能 在 BasicCAN 模式里中断的 使能和禁能 显示仲裁丢失位的位置 显示最后一次错误类型和位 置 产生错误警告中断的限值选 择 反映接收错误计数器的当前 值 反映发送错误计数器的当前 值 接收 FIFO 里的信息数目 显示在接收缓冲器里有效信 息的当前内部 RAM 地址 TX 错误计数 TXERR 14 15 Rx 信息计数 器 RX 缓冲器开 始地址 发送缓冲器 接收缓冲器 RMC RBSA 29 30 TXBUF RXBUF 16 28 16 28 10 19 20 29 4.1.1 发送缓冲器/接收缓冲器 要在 CAN 总线上发送的数据被载入 SJA1000 的存储区 这个存储区叫 发送缓冲器 从 CAN 总线 上收到的数据被存储在 SJA1000 的存储区 这个存储区叫 接收缓冲器 这些缓冲器包括 2 3 或 5 个 - 8 -
分享到:
收藏