- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- jsp实验报告一完整版.doc
- 个人业务自传.doc
- 数字电路实验二--译码器实验报告深圳大学--郭治民.doc
- 会计信息系统上机实验报告.doc
- 《城市轨道交通应急处理》课件 《城市轨道交通应急处理》项目二.ppt
- 广东省义务教育课程(实验)计划表_2.doc
- 实验三 进程通信 实验报告.doc
- 灵敏电流计特性研究.doc
- 怎样和客户交朋友.ppt
- 自动化传感器实验报告十三 光电转速传感器测速实验.doc
- 大学生职业规划大赛《新闻学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《应用统计学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《中医学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《信息管理与信息系统专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《汽车服务工程专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《水产养殖学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《市场营销专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐表演专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
文档评论(0)