can节点设计

上传人:go****e 文档编号:136837793 上传时间:2020-07-02 格式:DOC 页数:18 大小:603.50KB
返回 下载 相关 举报
can节点设计_第1页
第1页 / 共18页
can节点设计_第2页
第2页 / 共18页
can节点设计_第3页
第3页 / 共18页
can节点设计_第4页
第4页 / 共18页
can节点设计_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《can节点设计》由会员分享,可在线阅读,更多相关《can节点设计(18页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计课程名称 车载总线题目名称 学生学院 专业班级 学 号 学生姓名 指导教师 20 年 月 日摘要:通过iCAN协议,设计单片机对SJA1000连接,进行控制收发器TJA1050的收发,通过iCAN-4050数字I/O产品进行流水灯输出试验。关键词:CAN总线、SJAl000、TJA1050、AT89C521 引言CAN(Controller Area Network)是控制器局域网,主要用于各种设备检测及控制的现场总线。CAN总线是德国BOSCH公司20世纪80年代初为解决汽车中众多控制与测试仪器间的数据交换而开发的串行数据通信协议。这是一种多主总线,无论是在高速网络还是在低成本

2、的节点系统,应用都很广泛。由于采用了许多新技术及独特的设计,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,其主要特点如下:通信方式灵活,可以多主方式工作,网络上任意一个节点均可以在任意时刻主动向网络上的其他节点发送信息,不分主从。CAN节点只需对报文的标识符滤波即可实现点对点、点对多点及全局广播方式发送和接收数据,其节点可分成不同的优先级,节点的优先级可通过报文标识符进行设置,优先级高的数据最多可在134s内传输,可以满足不同的实时要求。 CAN总线通信格式采用短帧格式,每帧字节数量多为8个字节,可满足一般工业领域中控制命令、工作状态及测试数据的要求,同时,8个字

3、节不会占用总线时间过长,保证了通信的实时性。采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息出现冲突时,优先级低的节点会主动退出数据发送,而优先级高的节点可不受影响地继续传输数据,大大节省了总线冲突仲裁时间,在网络重载的情况下也不会出现网络瘫痪。直接通信距离最大可达10 km (速率在5 kb/s以下),最高通信速率可达1 Mb/s (此时距离最长为40 m);节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。CAN总线采用CRC检验并可提供相应的错误处理功能,保证数据通信的可靠性,其节点在错误严重的情况下具有自动关闭输出功能,使总线上其他节点的操作不受影响。2 CAN总线系

4、统结构 由于CAN总线采用多主方式工作,所以具有与DCS(分布式控制系统)不一样的拓扑结构。其控制系统由计算机和智能节点组成,如图1所示。该系统最大的特点是所有的节点都能以平等的地位挂接在总线上。1个总线节点通常至少包括3部分:控制节点任务的单片机、总线控制器及总线驱动器。本文主要介绍CAN总线智能节点的简单设计。智能节点由89C5l型单片机、SJA1000型总线控制器、82C250型总线驱动器及PC构成。在实际应用中可以连接不同的传感器件,完成数据的采集和传输。3 硬件电路设计 协议控制器向收发器的TxD 引脚输出一个串行的数据流收发器的内部上拉功能将TxD 引脚置为逻辑高电平即总线输出驱动

5、器在开路时是无源的在隐性状态中见图2.3 CANH 和CANL 输入通过典型内部阻抗为25k 的接收器连接入网络偏置到Vcc/2 的电平电压另外如果TxD 是逻辑低电平将激活总线的输出级并在总线上产生一个显性信号电平见图2.3 输出驱动CANH 由Vcc 提供一个源输出而CANL 则向GND 提供一个下拉输出图2.2 用TJA1050 方框图作为一个例子如果没有总线节点发送一个显性位则总线处于隐性状态如果一个或多个总线节点发送一个显性位总线就会覆盖隐性状态而进入显性状态线与特性接收器比较器将差动的总线信号转换成逻辑电平信号并在RxD 输出总线协议控制器将接收到的串行数据流译码接收器比较器总是激

6、活的即当总线节点发送一个报文时它同时监控总线这个功能可以用于支持CAN 的非破坏性逐位仲裁策略典型的总线采用一对双绞线考虑到ISO11898 中定义的线性拓扑结构总线两端都端接一个120的额定电阻这就要求总线额定负载是60 终端电阻和电缆阻抗的紧密匹配确保了数据信号不会在总线的两端反射整个系统电源采用+5V电源输入,上电复位芯片(CAT810L)可保证上电时正确的启动系统。微处理器采用PHILIPS的P89C52单片机,该系列单片机是80C51微控制器的派生器件,采用先进的CMOS工艺制造,指令系统与80C51完全相同。CAN控制器采用PHILIPS的SJA1000,SJA1000是一款独立的

7、控制器,用于汽车和一般工业环境中的控制器局域网络。它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品。而且,它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN 2.0B协议,是目前市面上用的最广的一款CAN控制器。该电路中采用了隔离CAN收发器模块,以确保在CAN总线遭受严重干扰时控制器能够正常运行CAN总线接口设计 :4 软件设计在软件编写之前需先确定SJA1000的基地址及复位引脚,然后正确的初始化SJA1000,填写要发送的CAN报文,使能发送请求,即可进行CAN自发自收实验。本例程仅为简单的自发自收CAN报文程序,如图 1

8、.5所示为操作SJA1000自发自收流程图,其中加阴影框内是必需的初始化部分。 程序的总体流程图: SJA1000c初始化 传输框图:中断接受框图:4.1 网络通信规则 CAN总线为多主工作方式,网络上任一节点均可在任意时刻主动向网络上其他节点发送信息而不分主从,通信方式灵活。为禁止总线冲突,CAN总线采用非破坏性总线仲裁技术,根据需要将各个节点设定为不同的优先级,并以标识符ID标定,其值越小,优先级越高。总线的节点之间可以进行实时相互通信,当1个节点需要接收另1个节点的数据时,只需把其代码寄存器的内容设置成和另1节点的标识符一致即可。如果对于标识符和其代码寄存器的内容设置不一致,则节点所发的

9、数据不予理会。4.2 SJAl000的工作模式设置 SJAl000有二种工作模式:复位模式和工作模式。在复位模式下可对接收代码、接收屏蔽、总线时序寄存器O和1及输出控制寄存器进行设置。一般在CAN初始化时完成对以上寄存器的设置,当CAN进入工作模式后,它们的值就不再变化。在工作模式下可进行数据的发送和接收。特别要注意的是:当硬件复位或控制器掉线时会自动进入复位模式,这样就不能进行正常的CAN通信,这就要求对复位位进行监控。当发生硬件复位或控制器掉线而进入复位模式时,要求把复位位置为0并进入工作模式,这样CAN就能进行正常发送和接收。4.3 基于C语言的软件编程/main函数:void main

10、(void) /CPU初始化 SJA_CS = 0; /CAN总线片选有效 SJA_RST = 0;/软件复位SJA1000 delaynms(3); SJA_RST = 1; /a low voltage make it reset TJA_CS = 0;/打开TJA1050 s pin /-mcu中断部分设置- IT0 = 0;/外部中断0电平触发 EX0 = 1;/打开外部中断0 EA = 1; /打开总中断 /- /-CAN初始化- SJA_CS = 1;/片选无效,进入设置内容的操作 CAN_init( ); /SJA1000初始化 _nop_(); _nop_(); CAN_TXD

11、(); while(1) TBSR6 = 0xfe; CAN_TXD1(); TBSR6 = 0xfd; CAN_TXD1(); TBSR6 = 0xfb; CAN_TXD1(); TBSR6 = 0xf7; CAN_TXD1(); TBSR6 = 0xef; CAN_TXD1(); TBSR6 = 0xdf; CAN_TXD1(); TBSR6 = 0xbf; CAN_TXD1(); TBSR6 = 0x7f; CAN_TXD1(); /SJA1000初始化: void CAN_init( void ) /SJA1000 的初始化 uchar Judge; uchar ACRR4; ucha

12、r AMRR4; ACRR0 = 0x00; ACRR1 = 0x07; ACRR2 = 0x09; ACRR3 = 0x03;/接收代码寄存器,节点1 AMRR0 = 0x00; AMRR1 = 0X00; AMRR2 = 0x00; AMRR3 = 0x03;/接收屏蔽寄存器。 全部接收主机发送的信息 do MODR = 0x01; Judge = MODR ;while( !(Judge & 0x01) ); / .0=1-reset MODRe,进入复位模式,以便设置相应的寄存器/防止未进入复位模式,重复写入/-复位模式下的设置- /*1. 时钟分频寄存器设置 */CDR = 0xc8

13、;/ CDR.3=1-时钟关闭, .7=0-basic CAN, .7=1-Peli CAN,旁路输入比较器,/只有RX1起作用,TX1 管脚14 输出模式, /*2.总线定时寄存器*/ BTR0 = 0x00;/总线波特率选择,总线定时寄存器。 BTR1 = 0x1c;/总线波特率设定,500kb/s /*3. 关CAN中断 */ IER = 0x01;/ .0=1-接收中断使能; .1=0-关闭发送中断使能 /*4.输出控制寄存器*/ OCR = 0x1a;/ 配置输出控制寄存器 (本来是aa) CMR = 0x04;/释放接收缓冲器 /*5.验收码寄存器和验收屏蔽寄存器 */ ACR = ACRR0; ACR1 = ACRR1; ACR2 = ACRR2; ACR3 = ACRR3;/初始化标示码 AMR = AMRR0; AMR1 = AMRR1; AMR2 = AMRR2; AMR3 = AMRR3;/初始化掩码 /- do MODR = 0x10; Judge = MODR; while( !(Judge & 0x10) ); /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号