杨鹏飞
山东沂水县供电公司 山东 沂水 276400
现场总线是用做现场控制系统的、直接与所有受控(设备)节点相连的,全数字化、双向、多站点的串行通信网络。控制器局域网CAN(Controller Area Network)是现场总线的一种,是在1986年的SAE(汽车工程人员协会)大会上由Rober Bosch公司提出的。CAN是一个多主总线网络,可实现全分布式多机系统,网络各节点均可在任意时刻向其他节点发送信息,通信介质可以是双绞线、同轴电缆或光纤;直接通信距离最远可达10km(速率5kbps以下),通信速率最高可达1Mbps(距离不大于40m);网络节点数可达110个;在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据最多可在134us内得到传输;通过对报文标识符的滤波即可实现点对点、一点对多点及全局广播发送接受数据;采用非破坏总线仲裁技术,当两个节点同时向网上发送信息时,优先级低的节点主动停止发送数据;支持4种报文帧即数据帧、远程帧、出错帧、超载帧,采用短帧结构,传送时间短、受干扰概率低;采用CRC校验及其他校验措施,保证了极低的信息出错率;具有自动关闭功能,当节点错误严重时,自动切断与总线的联系,不影响系统的工作。
CAN总线系统中共有两种类型的节点:不带微控制器的非智能节点和带微控制器的智能节点。智能节点的设计也可划分为两种类型:1)微控制器外加CAN总线控制器方式,此方式的主要特点是系统构建灵活,微控制器的选型随意,可选8位、16位也可选32位控制器,即可选常用的也可选新推出的,目前国内常用的CAN总线控制器主要是SJA1000;2)内嵌有CAN总线控制器的微控制器,此方式的主要特点是系统稳定,抗干扰能力强,缺点是系统灵活性差,目前国内常见的有P8Xc591、TMS240xDSP等。
本文将介绍利用美国Cygnal集成产品公司新推出的带CAN总线控制器的高速、高性能混合信号处理微机C8051F040实现的CAN总线智能节点软硬件设计。
C8051Fxxx系列微机是集成在一块芯片上的混合信号系统级微机,其内核是与MCS-51指令集完全兼容的、采用流水线结构的CIP-51微控制器内核,在最大系统时钟频率25MHz时其峰值速度可达25MIPS。以下是C8051F040微机片上资源及其特点:
①1个12 Bit 100ksps、8通道带片内温度传感器、可编程增益放大器的ADC,1个8 Bit 500 ksps带可编程增益放大器的ADC,2个可程控更新的12 Bit DAC;
②具有6个捕捉/比较模块的可编程计数/定时器阵列;
③4352 Bytes片内RAM,64KB在系统可编程FLASH存储器,可外扩64KB的存储器接口;
④耐5V电压的64位数字I/O;
⑤20个中断源;
⑥Bosh CAN、SMBusTM、SPITM、2个UART;
⑦5个通用16Bit定时器/计数器,片内看门狗定时器、VDD监视器;
⑧供电电源2.7V~3.6V;
⑨支持非侵入式、全速、在系统调试和边界扫描功能。
可以说C8051F040微机是真正的、可单独工作的、完整的SoC(System on Chip)。片上所有的数字和模拟外设与交叉开关相连,完全由用户设置。片内JTAG调试系统支持观察和修改存储器和寄存器、支持断点、观察点、单步及运行和停机命令。
C8051F040片内集成的CAN总线控制器是Bosh CAN控制器,支持CAN协议CAN 2.0A和CAN 2.0B。C_CAN由CAN核心模块、报文RAM(Message RAM)、报文句柄状态机和控制寄存器组成。C8051F040片内没有CAN总线驱动器。其结构如图1所示:
图1 CAN控制器
C_CAN的特点如下:
1)支持CAN协议CAN 2.0 A和CAN 2.0B;
2)位速率可达1 MBit/s;
3)可存储32条报文;
4)可编程的FIFO模式;
5)可编程的自检操作和回环模式;
6)可程控的自动重发功能;
CAN控制器的工作是在一系列的寄存器的控制下进行的,其工作状态也由相关寄存器来反映。控制寄存器, 如CAN0CN、CAN0STA、CAN0TST等,用来配置CAN控制器,产生中断,监视总线状态等;报文句柄寄存器是只读的,它负责向处理器提供报文的相关信息,如报文有效性、发送请求、中断状态等;报文单元接口寄存器用来配置RAM中的报文单元,并与RAM中的报文单元和处理器交换数据,它们避免了处理器直接读RAM单元时,RAM还要发送或接受数据所导致的冲突,起到了缓冲作用。C8051F040中的CAN控制器是作为外设的,它的寄存 器 除 了 CAN0CN、CAN0STA、CAN0TST 都 不 是SFR。对它们的访问要通过SFR:CAN0ADR、CAN0DATH、CAN0DATL。CAN0ADDR写入要访问的寄存器的偏移量,CAN0DATL(或加CAN0DATH组成16位二进制数)与待访问的寄存器进行数据交换。
由于C8051F040片内没有CAN驱动器,笔者选择了TEXAS公司与C8051F040供电电压一致的3.3V的CAN驱动器SN65HVD230。SN65HVD230具有速度高达1Mbps的差分发送、差分接收能力,提供三种工作模式:高速、低电流待机、斜率控制。自身具有短路保护、失地保护、过压保护和过热保护。常态下工作电压是-2V~7V,瞬时耐压范围是-25V~25V。SN65HVD230的第8脚经10K电阻与P15相联可以选择SN65HVD230的工作模式,P15置0时选择高速工作模式,P15置1时选择低电流待机模式。SN65HVD230与CAN总线的接口部分采用了一定的安全和抗干扰措施。与CANH、CANL串连的5Ω电阻可起到一定的限流作用;并联在CANH、CANL和地之间的32pF的小电容,可以起到滤出总线上的高频干扰和一定的防电磁辐射的能力;在CAN总线的输入端与地之间所接的防雷击管,可以通过它们的放电起到消除CAN总线输入端和地之间的瞬变干扰作用。C8051Fxxx系列微机的JTAG接口的PCB封装是IDC10。按照C8051F040技术资料,在晶振的两端并联了10MΩ的电阻。如上所述,由于C8051Fxxx系列微机具有丰富的片内资源,基本上满足了传统微机测控系统的需要,扩展的要求小。基于此类微机的测控系统,体积轻巧,性能稳定,抗干扰能力强。图2是CAN总线原理图。
图2 CAN总线原理图
系统软件是在Cygnal公司提供的开发环境Cynal IDE 1.72下利用C语言开发的。Cynal IDE以标准的Windows作为界面,支持C语言和汇编语言的源程序级调试。IDE在硬件上使用PC的串行口与具有JTAG的C8051F040微机目标系统相连的支持下,可进行非插入式、全速地在线调试和在系统编程,不需要另外的目标RAM、程序存储器或占用其他的通信信道即可实现程序调试。
在C_CAN中,报文的控制由报文接口寄存器(Message Interface Register)来管理。 C_CAN的一条数据帧最多可发送8Bytes的数据,对于整块大批量的数据接收就需要使用缓冲(FIFO Buffer)。在此写出了读取FIFO缓冲区的流程图和利用SFR配置一个发送报文单元的例程。
图3 C_CAN FIFO缓冲区的读取图
以下是配置发送报文单元的例程:
目前,传统微机由于速度低、功耗高、功能少,越来越受到冷落。以C8051Fxxx为代表的新一代微机采用了一系列的新技术,功耗低,性能稳定,处理速度也较大幅度提高,片内集成的外设越来越多,已逐步开始取代以往微机。本文提出的包括CAN总线在内的基于C8051F040微机数据测控系统工作稳定可靠,达到了技术指标要求,而且此系统具有很强的扩展能力。
[1]饶运涛等.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.
[2]李刚,林凌.与8051兼容的高性能、高速微机-C805Fxxx[M].北京:北京航空航天大学出版社,2002.
[3]USA:CYGNAL Integrated Products.Inc.,DS005_0.9APR02.,2002.
[4]USA:Robert Bosch GmbH,C_CAN User’s Manual Revision 1.2,2000.