当前位置:首页 > 单片机 > 单片机
[导读]CAN总线-控制器局部网(CAN)国际标准(ISO11898)。CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。其特点可概括如下: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所示:

 

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欧的电阻,其作用为匹配总线阻抗,提高数据通信的抗干扰性及可靠性。CAN通信模块的原理图见图2。

 

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模块的原理图见图3。

 

1.3 A/D转换模块

PIC16F877A单片机自带有8路模拟通道,转换精度为10位。本适配卡选择RA0为模拟通道。板卡将A/D转换后的数据通过CAN总线上传给上位机。

1.4 数据流

CAN-RS-232的数据流图见图4。

 

2、系统软件设计

软件设计分为两大块:板卡底层软件设计和PC机上串口操作软件设计。板卡底层软件设计主要是对PIC16F877A编程,用于把从PC机通过串口输人给单片机的数据按照CAN协议帧结构进行打包处理,并操作CAN控制器把数据发送到CAN总线;把从CAN总线上输入的数据转换成串行数据输出给PC机:PC机上串口操作软件设计主要是对串口的操作和通过串口收发数据。

2.1单片机编程

开发工具使用的是MPLAB集成开发环境(IDE),它是综合的编辑器、项目管理器和设计平台,适用于使用Microchip的PICmicro系列单片机进行嵌入式设计的应用开发;编程语言用的是C语言,将HITECH 公司的PICC编译器直接挂接在MPLAB-IDE集成开发平台下,实现一体化的编译连接和原代码调试。

CAN控制器SJA1000T片内有模式寄存器MOD、命令寄存器CMR、状态寄存器SR、中断寄存器IR、中断使能寄存器IER、接收缓冲器RXB、发送缓冲器TXB、仲裁丢失捕捉寄存器ALC、错误代码捕捉寄存器ECC、错误报警限额寄存器EWLR、错误计数寄存器ERR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线时序寄存器BTR、输出控制寄存器OCR和时钟分频寄存器CDR等,单片机就是通过读写这些寄存器来实现对SJA1000T的控制,从而实现CAN报文的接收和发送。文后给出CAN控制器SJA1000T初始化和接收子程序的流程图。下面给出CAN初始化程序,其中WRCAN是自定义的一段对SJAIO00T写数据的子程序。

C程序

void CANINI()

{

WRCAN(MODE,0x09); //进入复位模式,选择单向滤波方式,对SJA1000T进行初始化

WRCAN(CDR,0x88); //选择PeliCAN模式,关闭CLKOUT

WRCAN(IER,0x0D); //中断允许寄存器

//以下根据需要对屏蔽寄存器赋初值,将位设为1表示DON'T CARE,设为0表示CARE

WRCAN(AMR0,0x00);

WRCAN(AMR1,0x00);

WRCAN(AMR2,0xFF);

WRCAN(AMR3.0xFF); //因为AMR3的最低两位是不用的,必须置“1”

//以下根据情况为验收代码寄存器赋初值

WRCAN(ACR0,0x00);

WRCAN(ACR1,0x00);

WRCAN(ACR2,0xFF);

WRCAN(ACR3,0xFF); //ACR,AMR各位设为1,是为了允许任何数据通过滤波器的验收

WRCAN(BTR0,0x03); //总线定时寄存器

WRCAN(BTR1,0xFF); //设置波特率为50kbps

B=fXT/[2*BRP*(1+Tseg1+Tseg2)]

WRCAN(OCR,0xAA); //输出控制寄存器

WRCAN(RBSA,0x00); //接收缓存寄存器FIFO的起始地址为0

WRCAN(TXERR,0x00); //清除发送错误寄存器

RDCAN(ECC); //清除ECC,因为ECC是只读不能写的,当被读出时,其相应位即被清除

WRCAN(MODE,0x08); //设为单滤波方式,并返回工作状态

return

}

void WRCAN(address,data) //向SJA1000T的寄存器写入数据

unsigned char address;

unsigned char data

{

PORTC=0x0D; //RC3=1;RC2=1;Rc1=0;RC0=1;即ALE置1,则锁存地址,其余端口参考时序图

PORTD=address;

PORTC=0x04; //RC0=0;RC1=0;RC2=1;RC3=0;即ALE置0,则传输据.进入写方式,其余端口参考时序图

PORTD=data//将数据写入端口D

PORTC=0x0E; //RC3=1;RC2=1;RC1=1;RC0=0;各端口还原

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

串行通信接口是一种数据传输方式,采用串行通信协议(Serial Communication Protocol)。它通过串行数据线(Serial Data Line)进行数据传输,通常使用标准的RS-232、RS-485或...

关键字: 串行通信 RS-232

异步串行通信是一种通信方式,其中字符或字节以一种串行的方式从一个设备传输到另一个设备。以下是异步串行通信的详细介绍:通信方式:在异步串行通信中,数据以字符为单位进行传输。每个字符都由起始位、数据位、奇偶校验位和停止位组成...

关键字: 异步串行通信 RS-232

串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。

关键字: 异步通信 同步通信 RS-232

在通信和计算机科学中,串行通信(Serial Communication)是一个通用概念,串行通信是指计算机主机与外设之间或者主机系统与主机系统之间数据的串行传送,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。

关键字: 串行通信 RS-232

Pic单片机和51单片机是两种应用广泛的微控制器,它们各自具有不同的特点和优势,选择哪种单片机取决于具体应用需求。下面将对Pic单片机和51单片机进行详细的介绍和对比。

关键字: PIC单片机 51单片机 单片机

PIC单片机是基于RISC系统结构的单片机,最初的设计是支持PDP(编程数据处理器)计算机。大量的操作可以用来控制外围设备。PIC单片机比微控制器具有更快的程序执行能力。它是由微芯片技术公司于1889年发明的,是一种8位...

关键字: PIC单片机 定时器 中断

在通讯、电力领域,要求的直流电源系统输出的电流电压各不相同。对于大容量电源系统,往往采用多个同一电压等级的小容量电源模块并联的方法来实现,但如果并联的电源模块太多,就不利于均流和可靠性,因此用户迫切要求大容量电源模块的出...

关键字: PIC单片机 开关电源 UPS

PIC单片机的技术优势,第一,哈佛总线结构。在设计上这一系列的单片机不仅仅沿用了哈佛体系结构,更尝试了使用哈佛 总线结构,这为其在流水作业中各项指令可以更好地执行提供了技术保障;第二,在寻址方式上,其他类型的单片机寻址方...

关键字: PIC单片机 步进电机 控制器

PIC单片机(Peripheral Interface Controller)是一种基于RISC(Reduced Instruction Set Computing)架构的8位或16位微控制器。它由美国微芯片技术公司Mi...

关键字: PIC单片机 控制器 计算机

电子产品,如电脑,鼠标,充电器,包括汽车等,在我们的身边有很多接口,带你认识这些接口,知道长什么样子,用在什么地方,怎么用,原理是什么?这篇文章仅仅作为简单描述,入门级。 一、串口 二、UART 三、TTL电平 四、US...

关键字: RS-232 串口 USB
关闭
关闭