现场总线实验报告_3.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?CAN总线通信实验 ? 实验目的 基于SJA1000 CAN总线控制器和单片机系统完成CAN总线数据收发实验、掌握CAN总线波特率设置、消息ID和接收滤波器配置,完成两个以上节点的数据通讯。 实验器材 实验器材如下(不含编程计算机)。 SJA1000 CAN接口模块 单片机最小系统板 串行下载线(USB转TTL电平串口线) USB转DC5.5mm供电线(可选) 杜邦线 5V电源适配器(可选) 实验内容]——简要说明 (1)硬件连接 1、单片机和SJA1000的连接 使用杜邦把CAN模块的P0口连接到单片机开发板的P0扩展口上;把ALE,WR,RD,INT0,CS,KEY分别对应连接到单片机的ALE,P3.6,P3.7,P3.2,P2.0和P2.5上;把5V和GND分别对应接到单片机的电源接口上。 2、SJA1000的连接 将SJA1000的CAN_H,CAN_L对应连接,即可完成通信线路的连接 (2)软件编程: 1、测试通信线路实验 可先将资料中演示程序路径下已编译好的三个测试程序分别下载到三个节点上,测试三个节点间的通信,可实现如下功能:模块1发送模块2接收;模块2发送模块3接收;模块3发送模块1接收。 2、单滤波器设定实验 通过改变屏蔽码和接受码内容,实现以下功能: 1发送:2,3接受 2发送:1,3接受 3发送:1接受,2不接受 (3)CAN通信的编程实现:列出与CAN通信相关的代码,并加注释。 //屏蔽码和接受码的宏定义 #define USER_ACCCODE 0 #define USER_ACCMASK 0x1fffffff //初始化SJA1000 _mode = USER_MODE;//帧格式 标准帧11-bit还是扩展帧29-bit _accCode = USER_ACCCODE; //验收码 _accMask = USER_ACCMASK; //屏蔽码 _baudrate = USER_BAUDRATE; //波特率 //设置波特率 switch(_baudrate) { case CAN_BAUDRATE_125K: *(unsigned char xdata *)(SJA1000_BTR0)=0x03; *(unsigned char xdata *)(SJA1000_BTR1)=0x1c; break; case CAN_BAUDRATE_250K: *(unsigned char xdata *)(SJA1000_BTR0)=0x01; *(unsigned char xdata *)(SJA1000_BTR1)=0x1c; break; case CAN_BAUDRATE_500K: *(unsigned char xdata *)(SJA1000_BTR0)=0x00; *(unsigned char xdata *)(SJA1000_BTR1)=0x1c; break; case CAN_BAUDRATE_1M: *(unsigned char xdata *)(SJA1000_BTR0)=0x00; *(unsigned char xdata *)(SJA1000_BTR1)=0x14; //break; Default;//任意波特率 } //设置验收代码 //下面为29-bit,扩展帧格式验收代码的设置,标准帧格式略有不同 *(unsigned char xdata *)(SJA1000_ACR0) = (UINT8)(_accCode 21); *(unsigned char xdata *)(SJA1000_ACR1) = (UINT8)(_accCode 13); *(unsigned char xdata *)(SJA1000_ACR2) = (UINT8)(_accCode 5); *(unsigned char xdata *)(SJA1000_ACR3) = (UINT8)(_accCode 3); //设置验收屏蔽 *(unsigned char xdata *)(SJA1000_AMR0) = (UINT8)(_accMask 21); *(unsigned char xdata *)(SJA1000_AMR1) = (UINT8)(_accMask 13); *(unsigned char xdata *)(SJA1000_AMR2) = (UINT8)(_accMask 5); *(unsigned char xdata *)(SJA1000_AMR3) = (UINT8)(_accMask 3) | 0x04; //设置工作模式 _data =*(unsig

文档评论(0)

135****0879 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档