基于 S3C44B0X 与 SJA1000 的嵌入式 CAN 总线接口电路设计

2017-08-18 73 0

CAN(Controller Area Network)总线即控制器局域网络,是现场总线之一,由德国 Bosch 公司为汽车的监测、控制系统而设计,是一种总线式串行通信网络,适合于工业过程控制设备和监控设备之间的互联。它是一种多主方式的串行通信总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且能够检测出产生的任何错误,主要应用于汽车电控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面。

CAN 具有下列主要特性:① 低成本;② 远距离传输(长达 10 km);③ 高速的数据传输速率(高达 1 Mbit/s);④ 可根据报文的 ID 决定接收或屏蔽该报文;⑤ 可靠的错误处理和检错机制;⑥ 发送的信息遭到破坏后可自动重发;⑦ 节点在错误严重的情况下具有自动退出总线的功能。

一、嵌入式系统的 CAN 接口电路

基于 ARM7 架构嵌入式系统的 CAN 接口硬件模块,包括 Samsung 公司的嵌入式微处理器 S3C44B0X 以及 Philips 公司的 CAN 控制器芯片 SJA1000 和 CAN 总线收发器 PCA82C250。

S3C44B0X 微处理器是三星公司专为手持设备和一般应用提供的高性价比、高性能微控制器解决方案,它使用 ARM7TDMI CPU 核,工作在 66 MHz,带有 8 KB Cache。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:外部存储器控制器、LCD 控制器、4 个 DMA 通道、2 通道异步 UART 单元、1 个同步串行口(SIO)、1 个多主 I²C 总线控制器、1 个 I²S 总线控制器、5 通道 PWM 定时器及一个内部定时器、71 个通用 I/O 口、8 个外部中断源、实时时钟、8 通道 10 位 ADC 等。

二、CAN 总线控制器

CAN 总线控制器选用 Philips 公司的 SJA1000。SJA1000 是一款独立的控制器,用于汽车和一般工业环境中的控制器局域网络(CAN),是 PHILIPS 半导体 PCA82C200 CAN 控制器(BasicCAN)的替代产品,并且增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的 CAN2.0B 协议。

SJA1000 是新一代 CAN 控制器,具有如下特点:① 和 PCA82C200 独立 CAN 控制器引脚兼容及电气兼容;② 有两种工作模式,即基本 CAN 模式(BasicCAN)和增强 CAN 模式(PeliCAN),支持 CAN2.0A/B 协议;③ 同时支持 11 位和 29 位 ID,位速率可达 1 Mbps,具有总线仲裁功能;④ 扩展的接收缓冲器(64 字节、先进先出 FIFO),增强的环境温度范围(−40~+125 ℃);⑤ 检错和纠错能力加强;⑥ 支持带电插拔。

SJA1000 方框图如图 1 所示。其中接口管理逻辑 IML 负责连接外部主控制器,该控制器可以是微控制器或其他任何控制器:接口管理逻辑 IML 接收来自微控制器的命令,分配控制信息缓存器、发送缓存器 TBF、接收缓存器 RBF0 和 RBF1,并为微控制器提供中断和状态信息。发送缓存器 TBF 由 10 个字节存储单元组成,存储由微控制器写入、将被发送至 CAN 总线网络的报文;接收缓存器 0 和 1(RBF0、RBF1)均由 10 个字节组成,交替存储从总线接收的报文,当一个缓存器分配给 CPU 时,位流处理器可以对另一个进行写操作。位流处理器是一个控制发送缓存器和接收缓存器(并行数据)与 CAN 总线(串行数据)之间数据流的序列发生器;位定时逻辑将 SJA1000 同步于 CAN 总线上的位流;验收滤波器支持 11 位和 29 位标识符的滤波,所有收到的报文由验收滤波器验收并存储在接收 FIFO;错误管理逻辑按照 CAN 协议完成错误界定。

基于 S3C44B0X 与 SJA1000 的嵌入式 CAN 总线接口电路设计

图 1 SJA1000 方框图

三、CAN 总线收发器

CAN 总线收发器选用 Philips 公司的 PCA82C250。CAN 总线收发器是 CAN 协议控制器和物理总线之间的接口,该器件对总线提供差动发送能力并对 CAN 控制器提供差动接收能力,有很强的抗电磁干扰(EMI)能力,至少可挂 110 个节点。

四、接口电路设计

图 2 是嵌入式微处理器 S3C44B0X 的 CAN 接口电路。如图所示,ARM 和 SJA1000 以总线方式连接;由于 ARM 信号为 3.3 V,而 CAN 总线控制器电平为 5 V,所以所有信号之间均需要电平转换,本例中使用了 QS34X245 作为电平转换芯片。QS34X245 为 80 引脚的双列直插芯片,它既有电平转换功能(5 V 变到 3.3 V),又是一个总线开关和隔离器件:内部提供一组 32 位高速 CMOS 兼容的总线开关,当输出使能端 OEn(n 为 1~4)为低电平时开关导通、连通总线 A 和总线 B;当输出使能端 OEn 为高电平时开关断开、总线 A 和总线 B 隔离。其中 OE1 控制总线 A 和总线 B 的低 8 位(即 A7~A0 和 B7~B0),OE2 控制 A15~A8 和 B15~B8,OE3 控制 A23~A16 和 B23~B16,OE4 控制 A31~A24 和 B31~B24。

基于 S3C44B0X 与 SJA1000 的嵌入式 CAN 总线接口电路设计

图 2 S3C44B0X 的 CAN 接口电路

由于 ARM 总线非复用,而 SJA1000 总线复用,所以必须通过逻辑产生地址锁存信号 ALE,在本例中该信号由芯片 GAL22V10 产生;SJA1000 的片选、读写信号均采用 ARM 总线信号,ALE 信号由读写信号和地址信号通过 GAL 产生。在写 SJA1000 寄存器时,首先往总线的一个地址写数据作为地址,读写信号无效,ALE 变化产生锁存信号;然后写另外一个地址,读写信号有效,作为数据,上述逻辑完全通过 GAL 产生。此外,CAN 总线需要在两线间加一个 120 Ω 电阻。

控制 CAN 总线时首先初始化各寄存器以设定通信参数(如模式、位速率、验收码、屏蔽码、字段长、总线定时、输出模式等),BasicCAN 方式控制段共 10 个字节。发送数据时首先置位命令寄存器,然后将被发送的报文写入发送缓冲区,最后置位请求发送,由 SJA1000 完成发送;接收则通过查询状态寄存器、读取接收缓冲区获得信息,然后释放接收缓冲器。

相关文章

压敏电阻的参数、特性与应用
基于 STC12C 与 SIM300 的智能家电防盗系统电路设计
基于 nRF24L01 与 DHT11 的无线温湿度测试系统电路设计
电冰箱电子温控器的原理与半自动除霜电路
基于 586-Engine 的无人机飞行控制器电路设计
三极管开关电路的改进接法:加速电容、图腾柱与驱动电路

发布评论