控制器局域网(CAN)实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
控制器局域网(CAN)实验 实验目的 熟悉CAN的功能和应用 熟悉CAN数据帧/远程帧的结构 (3)掌握CAN控制器发送/接收数据的配置 (4)掌握CAN控制器的通讯功能 2.实验内容 (1)CAN节点的初始化 (2)LM3S2110 CAN器件板中CAN控制器收发数据的配置 (3)LM3S8962 评估板中CAN控制器收发数据的配置 (4)演示利用Cortex-M3内部集成的CAN控制器进行双机数据通信的实验 3.Stellaris内部集成的CAN控制器 图1 CAN数据/远程帧的结构图 CAN总线以帧为单位进行数据传送,在CAN总线上发送的有4类信息帧:数据帧、远程帧、错误指示帧和超载帧,图1所示是CAN数据/远程帧的结构图。数据帧用于发送数据,远程帧用于请求数据。 图2 CAN双机通信框图 CAN总线节点的软件设计主要包括CAN节点初始化、报文发送和报文接收。使用控制器之前,必须使能外设时钟,配置用于传输CAN信息的GPIO管脚。CAN的软件初始化有两种方法:一是将CANCTL中的INIT位置位,二是在脱离总线时—一般在发送器错误计数器的值超过255时,会发送脱离总线的现象。在初始化CAN控制器时,应该设置CANBIT,用来编程配置CAN的位速率。CAN控制器的双机通信框图如图2所示。协议控制器从CAN总线上接收和发送串行数据,并将数据传递给报文处理器。报文处理器基于当前的过滤设置以及报文对象存储器中的标识符,将合适的报文内容载入与之对应的报文对象。报文处理器还负责根据CAN总线的事件产生中断;报文对象存储器是一组32个完全相同的存储模块,可为每个报文对象保存其当前的配置、状态以及实际数据;报文存储器在Stellaris存储器映射中是无法直接访问的,因此Stellaris CAN控制器提供了间接访问端口:用户可通过两个CAN接口寄存器组与报文对象进行通讯,这两组报文对象接口也可以并行访问CAN控制器报文对象,因此当多个报文对象同时包含需要处理的新信息时完全可以并行处理,一般一个接口用于发送数据,另一个接口用于接收数据。 4.硬件连接图 图3 主节点CAN收发器连接原理图 5.软件流程图 本实验通过软件编程实现利用Cortex-M3内部集成的CAN控制器进行双机通信实验,LM3S8962评估板与LM3S2110 CAN器件板上的CAN控制器之间互传数据,每完成一次正确的数据传输,计数值加1,最终通过实验板上相应的LED灯的状态来直观的反映。下图列出了主节点部分的软件流程图。 图4 中断服务函数 图5 配置发送FIFO函数 图6 主函数 图7 周期性改变LED状态 6.实验步骤 (1)运行CCS,添加驱动库driverlib,打开路径D:\LM3S8962\My Documents\boards\ek-lm3s8962,选择存放CAN控制器双机通信实验工程的文件夹can_fifo和can_device_fifo,单击完成添加到开发环境界面; (2)浏览实现预定功能的源代码,首先将can_device_fifo设置为当前活跃的工程,编译、连接,检验并修正错误; (3)编链无错误后,通过CAN线缆和JTAG线缆,连接LM3S2110 CAN器件板和LM3S8962评估板,通过USB将评估板与PC机进行连接,下载程序代码到LM3S2110; (4)将can_fifo设置为当前活跃的工程,编译、连接,检验并修正错误,编链无错误后,断开JTAG线缆,下载程序代码到LM3S8962,进入调试界面; (5)调试主节点部分的程序,添加变量g_ulLEDCount、g_sCAN.pucBufferTx、g_sCAN.ulBytesTransmitted、g_sCAN.pucBufferRx和g_sCAN.ulBytesRemaining到Watch窗口,方便在调试程序的过程中观察数据传输的步骤,直观的显示数据传输过程对FIFO缓冲区的处理; (6)通过设置断点和单步调试程序,帮助我们了解CAN通讯的具体实现; (7)连接JTAG线缆,对can_device_fifo工程的调试,请学习者自己完成,注意要对评估板进行复位操作。 实验结果:主节点每成功发送/接收一个报文对象,就挂起中断,发送完64字节,开始响应接收报文中断,接收完64个暂存数据后,完成一次数据收发,计数变量g_ulLEDCount加1,同时点亮评估板上的LED。此时,由主节点发送的数据被从节点接收,再通过从节点回发给主节点。因此,接收数据缓冲区中的数据与发送数据缓冲区中的数据对应相等。当成功传输100次后,器件板上LED点亮,评估板上LED熄灭,成功传输200次后,器件板上LED熄灭,评估板上LED点亮,如此循环。取消所有断点连续运行程序后,两

文档评论(0)

aiwendang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档