基于PIC单片机的RS-232转CAN通信适配卡设计
扫描二维码
随时随地手机看文章
can总线-控制器局部网(can)国际标准(iso11898)。can总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。 其特点可概括如下:can为多主方式工作。在报文标识符上,各节点分成不同的优先级。采用非破坏总线仲裁技术。只需通过对报文的标识符滤波即可实现点对点、一点对多点方式传送接收数据。直接通信距离最远可达零10km(速率5kbps以下);通信速率最高可达到1mbps(此时通讯距离最长为40m)。can上的节点数主要取决于总线驱动电路,目前可达110个。报文采用短帧结构,传输时间短,受到干扰的概率低。每帧信息都有crc校验及其他检错措施,具有极好的检错效果。通信介质可为双绞线、同轴电缆或光纤,选择灵活。节点在错误严重的情况下具有自动关闭输出功能,使得其他节点的操作不受影响。它具有较高的性能价格比。can协议是建立在国际标准组织的开放系统互联模式基础上的,由于can的数据结构简单,又是范围较小的局域网,因此不需要其他中间层,应用层数据直接取自数据链路层或直接向链路层写数据。结构层次少,有利于系统中实时控制信号的传送。
本实验通信网络通过can总线传输数据,设计的can-rs-232通信适配卡,可挂接在通信网络的任一节点位置,对于通过rs-232总线连入can网络的pc,可用windows自带的超级终端或者我们用vc编写的串口操作程序来接收和发送数据,可以实现点对点,及一点对多点的通信,实现can协议里的数据帧和远程请求帧的传送所谓远程请求帧就是接收端通过发送远程帧启动其资源节点传送它们各自的数据,板卡还可实现10位精度的a/d转换并将得到的数据通过can总线上传给上位机can总线系统结构。
1系统硬件设计
板卡电路主要由四部分组成:pic16f877a单片机、独立can通信控制器sja1000t、can总线驱动器tja1050和rs-232总线驱动器max232。主要实现基于can总线的数据传输,同时通过rs-232把pc作为终端接人can总线以及采集模拟信号并通过can总线上传给上位机。sja1000t是集成的独立can控制器(与philips早期的can控制器pca82c200完全兼容),它负责完成can总线通信协议的物理层和数据链路层的功能。对于微处理器来说,它相当于一个存储器i/o 映象设备。由于can控制器和微控制器内部都有自己的时钟产生电路,为了让两者之间协调,外加了10m 晶振在微控制器上作为整个系统的时钟,并将微控制器的时钟输出作为can控制器的时钟输入;sja1000t的中断输出信号/int接到单片机的int中断,但也可通过查询方式实现单片机与can控制器的通信;为了使can控制器和微控制器能同时可靠的复位,外加了手动复位电路。
pic16f877a单片机是目前使用非常广泛的中端单片机,在本系统中,它主要是用于控制can控制器sja1000t,对sja1000t进行初始化和读/写操作以及将从can总线或从rs-232总线传来的数据进行打包处 后再转传到rs-232总线或can总线上,即对两个总线上的数据流按照协议进行处理和传送。下位机的单片机主要是采集模拟信号并实现a/d转换,并通过can总线上传给上位机。 1.1 can通信模块
sja1000t的ad0~ad7是地址、数据复合总线,与pic16f877a的portd端口相连,即单片机通过sja1000t的这个并口来传递数据和地址;需要注意的是51系列的单片机有专门的读、写和地址锁存的引脚,而pic16f877a并没有,所以我们只能用其他端口来模拟控制,在本系统中sja1000t的ale、cs、rd 、wr分别与单片机的rc0-rc3引脚相连,即 用rc0-rc3来控制sja1000t的地址锁存、片选和读/写操作。
tja1050是can 协议控制器和物理总线之间的接口,主要应用在波特率范围从60kbps到1mbps。tja1050可以为总线提供差动的发送功能,为can控制器提供差动的接收功能,而且完全符合iso11898标准。can控制器sja1000t通过一条串行数据输出线txd 和一条串行数据输人线rxd 连接到can总线驱动器tja1050,而tja1050则通过两个有差动接收和发送能力的总线终端连接到can总线。总线终端为120欧的电阻,其作用为匹配总线阻抗,提高数据通信的抗干扰性及可靠性。 1.2 rs-232模块
rs-232标准是美国eia电子工业联合会制定的一种串行物理接口标准,广泛用于汁算机与终端或外设之间的近端连接 完整的rs-232接口有25根线,一般在计算机串口采用简化的9芯插头座:工作时,应保证电平在±(5-15)v之问。因此为了能够同计算机或控制器的ttl器件连接,必须在rs-232与ttl电路之问进行电平和逻辑关系的变换。常用的转换芯片是max232。max232内部有电压倍增电路和转换电路,只需5v电源便可实现ttl电平与rs-232电平转换。rs-232模块的原理。
1.3 a/d转换模块
pic16f877a单片机自带有8路模拟通道,转换精度为10位。本适配卡选择ra0为模拟通道。板卡将a/d转换后的数据通过can总线上传给上位机。 1.4 数据流
can-rs-232的数据流图见图4。
2