欢迎来到天天文库
浏览记录
ID:18196771
大小:2.51 MB
页数:30页
时间:2018-09-15
《基于ti的lm3s系列mcu的can开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第1章CAN接口应用1.1概述CAN,全称为“ControllerAreaNetwork”,即控制器局域网,是一种用于连接电子控制单元(ECU)的多主站共用型串行总线标准,并成为国际上应用最广泛的现场总线之一。CAN特别适用于电磁干扰和其它电子噪声强的环境,它可以使用像RS-485这样的平衡差分线或者更稳定可靠的双绞线。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。后来也使用在许多嵌入式控制应用中(比如:工业和医疗)。当总线长度小于40米时位速率
2、可高达1Mbps。位速率会随着节点之间距离的增加而降低(例如:总线长度为500米时位速率为125Kbps)。Luminary公司的LM3S2000/5000/8000系列ARMCortex-M3处理器内建1~3(详细配置请参考芯片手册)路CAN控制器,可同时支持多路CAN总线的操作,使器件可用作网关、开关、工业或汽车应用中多个CAN总线的路由器。1.2特性Stellaris®CAN模块具有以下特性:?支持CAN2.0A/B协议;?位速率可编程(高达1Mbps);?具有32个报文对象;?每个报文对象都具有自己的
3、标识符屏蔽码(过滤器使用后方能使用);?包含可屏蔽中断;?在时间触发的CAN(TTCAN)应用中禁止自动重发送模式;?自测试操作具有可编程的回环模式;?具有可编程的FIFO模式;?数据长度从0到8字节;?通过CAN0Tx和CAN0Rx管脚与外部CANPHY无缝连接。1.3外设驱动库函数说明Stellaris®PeripheralDriverLibrary为用户提供了完整可靠的CAN通信底层API函数,用户通过调用API函数即可完成CAN控制器配置、报文对象配置及CAN中断管理等CAN模块开发工作。使用Stel
4、laris®PeripheralDriverLibrary提供的API函数开发CAN模块应用,必须了解相关的数据结构及枚举类型,下面就先介绍CAN模块API函数所涉及的数据结构及枚举类型。注:在can.h和hw_can.h中我们一直要应用,所有的结构体都是在can.h中已经定义1.3.1数据结构1.tCANBitClkParmstCANBitClkParms是CAN位时钟设置参数的结构类型,其原型定义如程序清单1.1所示。注:后文中将讲到对CAN波特率真设置时,就要对CAN的位时间寄存器进行操作,虽然在驱动库
5、里面已经对其进行了封装,但是我们还要了解它的工作原理.程序清单1.1tCANBitClkParms结构原型typedefstruct{unsignedintuSyncPropPhase1Seg;//这个成员用于保存位时间中的传输段及相位缓冲段1//的和,取值范围2~16unsignedintuPhase2Seg;//这个成员用于保存位时间中的相位缓冲段2的值,//取值范围为1~8unsignedintuSJW;//这个成员用于保存位时间中的同步跳转宽度,取值范围1~4unsignedintuQuantumPr
6、escaler;//CAN波特率预分频值,取值范围为1~1023}tCANBitClkParms;2.tCANMsgObjecttCANMsgObject结构用于组织配置报文对象的所有参数,其原型定义如程序清单1.2所示。程序清单1.2tCANMsgObject结构原型typedefstruct{unsignedlongulMsgID;//11或29位的CAN报文标识符unsignedlongulMsgIDMask;//报文滤波器使能后的标识符掩码,如果不使能报文滤波器的话,可以不用这个数据unsignedl
7、ongulFlags;//由tCANObjFlags列举的配置参数unsignedlongulMsgLen;//报文数据域长度unsignedchar*pucMsgData;//指向配置报文对象数据域数据的指针}tCANMsgObject;1.3.2枚举类型1.tCANObjFlags枚举类型tCANObjFlags中定义的常量将在调用CANMessageSet()和CANMessageGet()函数时的tCANMsgObject型变量中用到,tCANObjFlags的原型定义如程序清单1.3所示。程序清单1
8、.3tCANObjFlags枚举类型typedefenum{MSG_OBJ_TX_INT_ENABLE=0x00000001,//表示将使能或已使能发送中断MSG_OBJ_RX_INT_ENABLE=0x00000002,//表示将使能或已使能接收中断MSG_OBJ_EXTENDED_ID=0x00000004,//表示报文对象将使用或已使用扩展标识符MSG_OBJ_USE_ID_FILTER=0x
此文档下载收益归作者所有