- 相关推荐
基于串行外设接口(SPI)的CAN总线隔离扩展设计
摘要:介绍了利用SPI口实现CAN总线隔离扩展的一种通信控制系统,详细叙述了此通信控制系统中主从通信模块的硬件设计控制,软件设计流程及实现方法。关键词: CAN总线 SPI口 XINT1中断
一、引言
CAN总线是一种有效支持分布式控制和实时控制的串行数据通信协议,它是一种多主总线,网络上任意一个节点均可以在任意时刻主动地向网络上的其它节点发送信息,而不分主从,节点之间有优先级之分,因而通信方式灵活;CAN可以点对点、一点对多点(成组)及全局广播等几种方式传送和接收数据 ;CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总线冲突仲裁时间,在重负荷下表现出良好的性能。
CAN上的节点数实际可达110个,通信介质可以是双绞线、同轴电缆或光导纤维,直接通信距离最远可达10km(传输速率为5kbps);最高通信速率可达1Mbps(传输距离为40m)。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码,CAN数据链路层采用短帧结构,每一帧为8个字节,易于纠错。可满足通常工业领域中控制命令,工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。
CAN总线具有较强的纠错能力,每帧信息都有CRC校验及其它检错措施,有效地降低了数据的错误率。CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。支持差分收发,因而适合高干扰环境。
我们设计的一种CAN总线主从通信控制系统如图1所示,该控制系统采用内外两层隔离控制形式,主控台向主CAN网络发送指令和数据,通过主从通信模块与从CAN网络中的节点通信,对分系统控制单位进行数据采集和控制。此系统使CAN总线的节点数增加了n倍;CAN总线的传输速率和通信距离大幅度的提高;抗干扰能力也大幅度的增强。
本文讨论的是CAN总线主从通信控制系统中主从通信模块的硬件、软件设计及实现方法。主从通信模块实现了主控台和从控制单元之间CAN网络数据通信的隔离扩展,对通信数据处理、传输和CAN网络控制有一定的借鉴作用。
二、硬件设计
主从通信模块控制原理框图如图2所示,核心芯片是TI公司TMS320C2000系列的适合于数字控制的一种DSP。它的单个芯片内包含了10位ADC转换器、片内flash程序存储器、事件管理器、数字输入输出I/O口等。为了便于与各种外围设备进行通信,DSP还提供了一些接口:CAN接口、串行外设接口(SPI)、串行通信接口(SCI)等。其中,SPI接口是工业标准的同步串行接口,是一种全双工、三线通信的系统。它允许DSP与各种外围设备以串行方式(可配置成1~16位数据同时、同步地被发送和接收)进行通信。在SPI接口中,数据的传输需要1个时钟信号和两条数据线。SPI可工作在主模式或从模式下。在主模式下,每一位数据的发送/接收需要1次时钟作用;而在从模式下,每一位数据都是在接收到时钟信号之后才发送/接收。
三、SPI的工作原理
1)SPI的信号说明
如图2通信控制部分原理图,两片DSP芯片的SPI使用4条线直接接口:串行时钟线(SPICLK)、主片输入/从片输出数据线SPISOMI、主片输出/从片输入数据线SPISIMO和低电平有效的从片选择线SPISTE。
SPICLK是主片的时钟线,为MISO数据的发送和接收提供同步时钟信号。每一位数据的传输都需要1次时钟作用,因而发送或接收1个字节的数据需要1~16个时钟的作用。主片的时钟是通过主片的硬件设置的,并和从片的SPICLK相连。
MISO是主片的输入/从片的输出数据线。主片的MISO应与从片的MISO相连进行高位在前的数据交换。MOSI是SPI接口的SPI主片输出/从片输入数据脚。这一引脚应当连接主片的数据输出和从片的数据输入端MOSI,进行高位在前数据的交换。
SPISTE只在从方式中用于低电平选中从片,对应的主片SPISTE脚被配置为I/O口作为从片的SPI片选输入脚。
2)主模式
发送和接收可以同时工作在主模式下。主模式的显著特征是不论是发送还是接收始终有SPICLK信号,发送操作是由向SPIDAT(或SPITXBUF)中写数据而触发的。在主模式下,时钟信号的1次作用对应一位数据的发送(M0SI)和另一位数据的接收(MISO)。如图3所示,在主片中数据从移位寄存器中自左向右发出送到从片(MOSI),同时从片中的数据自右向左发到主片(MISO),经过16位时钟周期完成1个字节的发送。输入字节保留在移位寄存器中,此时SPI INT FLAG位自动置位(如果有中断设置,则产生中断),移位寄存器的数据将被锁存到SPIRXBUF中,此后对SPIRXBUF的读操作将把数据读出。
3)从模式
发送和接收同时工作在从模式下。从模式的显著特征是:不论是发送还是接收始终必须在SPICLK信号作用下进行,并且SPISTE信号必须有效。当SPISTE信号无效时,数据的发送无法进行并且输入的数据视为无效。这是因为输入的时钟信号是与SPICLK的逻辑与操作,而SPICLK信号是SPISTE的反转。这样当SPISTE为高时,就没有时钟信号输入。数据的发送和接收的过程见图3所示,与主模式下基本相似,只是移位寄存器的数据移出和输入方向与之相反。
四、软件设计
SPI通信以一帧CAN报文5个字节为一个传送单元进行信息交换。主片控制着SPICLK信号可在任一时刻启动报文传送;从片在传送报文之前,通过口
【基于串行外设接口(SPI)的CAN总线隔离扩展设计】相关文章:
基于PCI总线的CAN卡的设计与实现03-18
基于CAN总线的汽车液晶仪表设计03-07
带热插拔的CompactPCI CAN总线接口板设计03-30
CAN总线控制器与DSP的接口03-07
基于单片机的CAN智能总线节点的设计03-07