CAN总线问题请教 点击:1632 | 回复:5



xingsha

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:5帖 | 8回
  • 年度积分:0
  • 历史总积分:36
  • 注册:2003年7月14日
发表于:2004-02-05 16:37:00
楼主
我们新做了两个CAN节点,硬件组合为AT89C51+SJA1000+P82C250,6N137实现光电隔离。检查电路无误,代码编写完全符合数据手册。试验条件如下: 1.系统中仅有两个节点,采用PeliCan方式; 2.每个节点的AMR0~3均设为0xFF,即接收任何节点发送的信息; 3.波特率设置为40KB; 4.Rs采用47K欧姆,CBP位相应置0; 5.采用中断方式接收,下降沿触发,且中断经试验确认可以响应。 试验时,可以看到发出的波形,问题是: 1.节点发送时,对方始终无法接收; 2.所发送的波形并非只出现10次,然后因总线关闭而消失,而是始终存在; 试验时CAN的初始化源代码如下: #define CAN_BASE 0x0100 //P2.1作为SJA1000的片选 void CanInit() { uchar temp,k; //使CAN控制器进入设置模式 do{ CAN_MODE = 0x01; temp = CAN_MODE; }while(temp&0x01==0); CAN_CDR = 0x88; CAN_INTEN = 0x0D; for (k=0;k<4;k++) XBYTE[CAN_AMRADDR+k] = 0xFF;//AMR全部为0 temp = XBYTE[IDADDR]; //获得节点ID CAN_ACR = 0x00; //接收代码寄存器 XBYTE[CAN_ACRADDR+1] = 0x00; //ACR0和ACR1存储接收广播报文时用的ID,为0000H XBYTE[CAN_ACRADDR+2] = 0x00; //ACR2和ACR3存储接收数据报文时用的ID,为节点自身ID XBYTE[CAN_ACRADDR+3] = temp; //接收代码寄存器ACR3赋初值 CAN_BTR0 = 0x07; //总线时钟寄存器0 CAN_BTR1 = 0xFF; //总线定时寄存器1,设置波特率40KPBS CAN_OCR = 0xAA; //输出控制寄存器 CAN_RBSA = 0x00; //设置接收缓存器FIFO起始地址为0 CAN_TXERR= 0x00; //发送错误计数寄存器,清除发送错误计数寄存器 temp = CAN_ECC; //错误代码捕捉寄存器,清除错误代码捕捉寄存器 //使CAN进入正常模式 do{ CAN_MODE = 0x00; //方式寄存器,设置双滤波接收方式,并返回工作状态 temp = CAN_MODE; }while(temp&0x01); } 试验时的接收源代码: void CanReceive() interrupt 0 using 1 { uchar temp; temp = CAN_STATUS; if (temp&0x01) { //数据处理 ////@@@@@@@@@始终到不了这里!!!!!!!!! } } 各位大侠,可否帮忙分析一下是什么原因?多谢多谢了!



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-01-12 16:01:00
1楼
总线上数据发送出来了吗?你是如何证明数据发送成功的?

远 方

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 401回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2002年1月29日
发表于:2004-01-15 08:11:00
2楼
用示波器看总线上的ACK信号,看看是否ACK已经成功被接收节点填充,如果未填充,则可能是接线,或是波特率,或是CAN工作模式设置,保证接收方是一个正常的CAN节点非常重要哦,不然不知道究竟是哪一个有问题

瑞传

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 44回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2003年4月02日
发表于:2004-02-05 13:33:00
3楼
北京华控技术有限责任公司是专业从事自动化控制技术的研究及自动化产品及项目的开发、制造与销售服务的企业。主要产品包括:符合HART协议、FF协议标准的OEM仪表嵌入产品和测试工具及系列配套产品,符合CAN总线标准,modbus协议、pofibus协议的智能分布式系统(SDS)和集散控制系统、现场总线综合控制系统、智能模块、信号调理模块、数据采集系统、I/O板卡及之配套的软件产品. 010-62965630 010-62960721~25EXT838

鸿鼎

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 13回
  • 年度积分:0
  • 历史总积分:514
  • 注册:2004年2月15日
发表于:2004-02-05 16:37:00
4楼
北京华夏网通数据通信技术有限公司 网址:http://www.sino-netcom.com 邮箱:gaoy_rose@sina.com 北京华夏网通(SINO-NETCOM)数据通信技术有限公司是一家从事智能综合布线与智能完落产品、通信电缆与光缆、工业控制电缆、广电音视频电缆、电缆与光缆检测维护工具及仪表的生产、代理、与分销的专业化公司。因业务发展需要,重庆分公司诚邀业内精英加盟。我们将为员工提供良好的工作环境、优厚的薪酬待遇和培训条件。 有意者请将简历、1寸近期照片、身份证及相关证件复印件邮寄至或E-MAIL至本公司。 招聘职位:销售经理 职位描述:负责重庆及西南地区的业务开拓及产品销售,主要产品:网络布线、门禁系统 及工业控制系统 职位要求:大专以上学历,对网络布线、门禁系统及工业控制产品熟悉,有两年以上 销售经验 联 系 方 式 地 址:重庆市青年路77号万豪酒店国贸中心508室 邮政编码:400010 电 话:023-63803199 联 系 人:高小姐 电子邮箱:gaoy_rose@sina.com

瑞传

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 44回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2003年4月02日
发表于:2004-03-17 15:42:00
5楼
华控公司主要产品包括:符合HART协议、FF协议标准的OEM仪表嵌入产品和测试工具及系列配套产品,符合CAN总线标准,modbus协议、pofibus协议的智能分布式系统(SDS)和集散控制系统、现场总线综合控制系统、智能模块、信号调理模块、数据采集系统、I/O板卡及之配套的软件产品。华控公司于1996年成为现场总线基金会(FF)成员、HART通讯基金会成员、OPC基金会成员,华控公司积多年自动化控制方面的经验,致力于现场总线技术的研究,做为国家"九五"、"十五"科技攻关项目承担单位,完成了新一代现场总线技术的攻关项目。 北京华控技术有限责任公司 北京市海淀区上地创业路8号群英科技园3号楼2层 邮箱:100085 网址:http://www.huakong.com.cn 市场部:010-62960717/62965630

热门招聘
相关主题

官方公众号

智造工程师