以 TMS320LF2407 为核心芯片,PCA82C250 为驱动 CAN 控制器和物理总线间的接口, 对总线提供差动发送能力,对 CAN 控制器提供差动接收能力。因为 TMS320LF2407 用 3.3V 的电压,PCA82C250 用 5V 的电压,所以需要电平转换。图中:R2、R3、R4 和二极管 D 组成的电路为电平转换电路,R1 为 CAN 终端匹配电阻。接口电路如图 2 所示。
如果考虑到提高系统的抗干扰能力,可以在 CAN 总线收发器 PCA82BC250 前增加 2 个 高速光电隔离器件 6N137 芯片,实现总线与控制器的隔离,可以保护总线不受瞬态冲击的影响,并可提高节点的总线驱动能力。
4 软件设计
图 3 从节点主程序流程图
节点的软件设计主要包括四大部分:CAN 现场智能测控装置初始化、报文查询发送及中断接收、用户 A/D、D/A 转换子程序即协议实现程序。其主程序的实现流程如图 3 所示。 本测控装置的节点通信软件采用的语言是 DSP 的 C 语言嵌入汇编语言,因为在用 C 语言开发 DSP 应用程序时,可能会遇到一些对实时性要求较高或是需要对 DSP 的底层资源进 行操作的场合。这时如果用 C 语言编写相应的代码就会给开发带来一定的难度,甚至某些操作 C 语言根本就无法实现。这时,就需要在 C 语言中嵌入汇编语言。
4.1 节点的通信初始化流程
CAN 现场测控装置节点的初始化主要包括:系统初始化、CAN 初始。系统初始化包括 开中断优先级、清中断标志等。CAN 初始化主要包括:局部接收屏蔽寄存器的设置、主控制寄存器的设置、邮箱方向控制寄存器的设置、波特率参数设置、邮箱标识符的设置、邮箱的设置和中断允许寄存器的设置等。
1、位定时器的初始化
在对位定时器(BCR1 和 BCR2)进行初始化时,首先注意要对 CAN 模块主控制寄存器 MCR 中的 CCR(改变配置请求位)置 1,并对全局状态寄存器 GSR 中的 CCE(改变配置始能 位)置 1,方可进行下面的初始化。因为此时 CAN 控制器处于脱离 CAN 总线状态,因此当 配置完位定时器后,将 CCR 位清零,使 CAN 控制器恢复总线。CAN 控制器波特率的计算 方法如下:
波特率=ICLK/ [(BRP+l)+Bit Time]
其中:TCLK 为 CAN 控制器的时钟频率,也就是 DSP 的系统频率。BRP 为波特率预分频位,决定CAN 控制器的时间片(TQ)。TQ= (BPR+1)/ ICLK
位时间(Bit Time)=(TSEGl+1)+(TSEG2+1) +1
TSEG1 为时间段1,可编程为 3 到 16 个 TQ 时间片。TSEG2 为时间片 2,可编程为 2
到 8 个 TQ 时间片,但必须满足小于或等于时间段 1。
2、CAN 初始化。对 CAN 控制器的访问是以外部存储器的方式。
4.2 CAN 信息的发送与接收
本系统中数据的传输速率设置为 1Mbps,将邮箱 0、2 配置为接收邮箱,其中邮箱 2 为 命令信息专用邮箱,用于接收上位机发来的控制命令。邮箱 0 用来接收上位机发来的节点参 数,节点可根据这些参数来重新配置节点的信息。将邮箱 3 配置为发送邮箱,这个邮箱用于 节点给上位机发送信息。
4.2.1 CAN 发送程序