《汽车单片机及车载总线技术》-7_第1页
《汽车单片机及车载总线技术》-7_第2页
《汽车单片机及车载总线技术》-7_第3页
《汽车单片机及车载总线技术》-7_第4页
《汽车单片机及车载总线技术》-7_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一节CAN模块介绍瑞萨的CAN模块叫做AFCAN,是AdvanceFullCAN的缩写。这个模块在FLAN的基础上将一些软件处理比较繁琐的功能用硬件的方式解决,降低了软件的复杂度。例如,在FLAN中一般为5个接收Buffer,3个发送Buffer,并且MASK的使用很死板,只能在固定的模块上使用。而AFCAN将CAN模块复杂化,一个AFCAN中有16一64个独立的微型CAN模块,微型模块可以设置MASK,可以设置自己的中断响应,还可以设置是发送还是接收。另外当大量报文发送和接收的时候,可以很容易的查询报文的先后顺序。CAN模块的框图如图7一1所示。该微控制器包含一个必须使用外部收发器与CAN总线进行连接的CAN,如图7一2所示。返回下一页第二节CAN控制器的内部寄存器瑞萨的AFCAN模块设计相对复杂,但从使用上来说还是很简单的,下面我们着重介绍一下它某些特殊的读取与写入寄存器的方法,而对于每个寄存器的含义由于篇幅有限无法一一罗列,请读者自行参考用户手册。CAN控制寄存器包含可通过CPU或CAN接口进行位设置或位清除的寄存器。对于每个CAN缓冲区设置的寄存器的设置方法和其他模块的设置方法是一样的,而对于下列寄存器如果直接写入则会发生操作错误。不要通过位操作、读取/修改/写入或目标值的直接写入而直接写入任何值。1)GAN全局控制寄存器(GOGMG'PRL);下一页返回上一页第二节CAN控制器的内部寄存器2)GAN全局自动块传输控制寄存器(GOGMAB'P);3)GAN模块控制寄存器(GOG'PRL);4)GAN模块中断使能寄存器(GOIE);5)GAN模块中断状态寄存器(GOIN'PS);6)GAN模块接收记录列表寄存器(GORGP'P);7)GAN模块发送记录列表寄存器(GO'PGP'P);8)GAN模块时间标记寄存器(GO'PS);9)GAN报文控制寄存器(GOMG'PRLm)o返回上一页第三节功能介绍一、报文发送在所有操作模式中,如果将满足以下条件的报文缓存器的TRQ位设为1,那么就查找将要发送报文的报文缓存器。l)用作报文缓存器(COMCONFm寄存器的MAO位设为1B)o2)设置为发送报文缓存器(COMCONFm寄存器的MT[2:0]位设为000B)3)准备发送(COMCTRLm寄存器的RDY位设为I)oCAN系统是多主机通信系统,像这样的系统中,报文发送的优先级基于报文标识符(ID)。在有多个报文等候发送时,为了便于使用软件进行发送处理,CAN模块使用硬件检查具有最高优先级的报文的ID并自动识别此报文,这样就不再需要基于软件的优先级控制。发送优先级由标识符(ID)控制。下一页返回第三节功能介绍二、报文接收在所有操作模式下分析全部的报文缓存区域,以定位适于存储新接收的报文的缓存器。用作报文缓存器(COMCONFm寄存器的MAO位设为1s)2)设置为接收报文缓存器(COMCONFm的MT[2:0〕位设为OO1B,OlOB,O11B100B或101B)。3)准备接收(COMCTRLm寄存器的RDY位设为1)上一页下一页返回第三节功能介绍三、接收记录列表功能当接收到大量报文时,最让人头痛的就是判断报文的先后顺序问题,而AFCAN则提供了接收记录列表功能,它使用了类似指针数组的设计,使得读取报文更加方便快捷,如图7一6所示。具体的原理如下:AFCAN使用LIPT寄存器作为末尾指针,它存储的是最后一个报文存储的消息缓存器编号,而在RGPT寄存器中存储的是最近一个未读取的消息缓存器编号。每读取一次RGPT,它便自动更新到下一个未读取的消息缓存器,并把当前记录清空。当LIPT与RGPT中的值相同时,则认为数组为空,没有未读的消息缓存器。数组存储区总共能存储24个缓存器编号,如果数组存储区已满,便会发生溢出,LIPT一1的位置将会被新的消息缓存器编号替代,同时ROVF位会标记。上一页下一页返回第三节功能介绍四、屏蔽功能对于任何一个不用于接收的报文缓存器,可以选择将其指定为四个全局接收屏蔽(或无屏蔽)之一。通过使用屏蔽功能,可通过屏蔽位缩短报文ID比较,从而允许将若干不同ID的报文接收到一个缓存器中。当屏蔽功能有效时,接收报文中通过屏蔽被定义为“1”的标识符位不与报文缓存器中对应的标识符位进行比较。但是,任何通过屏蔽将值定义为"0”的位都要进行比较。上一页下一页返回第三节功能介绍五、多缓存接收块功能多缓存器接收(MBRB)功能用于不和CPU交互时,通过将相同的ID设置给有相同类型的两个或更多的报文缓存器,以在两个或更多的报文缓存器中连续存储数据块。例如,假设给5个报文缓存器10一14设置相同的报文缓存器类型,且给各个报文缓存器设置相同的ID。如果接收到其ID与报文缓存器ID匹配的第1个报文,则将它存储在报文缓存器10。此刻,报文缓存器10的DN位置位,以禁止在接收下一个报文时重写报文缓存器。上一页下一页返回第三节功能介绍六、远程帧接收接收远程帧时,在所有操作模式下,从所有满足下列条件的缓存器中查找用于存储远程帧的报文缓存器。1)用作报文缓存器(COMCONFm寄存器的MAO位设为1s)2)设置为发送报文缓存器(COMCONFm寄存器的MT[2:0]位设为000B)3)准备接收(COMCTRLm寄存器的RDY位设为1)04)设置至发送报文(COMCONFm寄存器的RTR位清为0)。5}未设置发送请求(COMCTRLm寄存器的TRQ位设为1)。上一页下一页返回第三节功能介绍七、自动块传输(ABT)

ABT报文缓存器的数据准备好之后,将ABTTRG位设为“1",然后开始自动块传输。当开始ABT时,第1个报文缓存器(报文缓存器0)中的TRQ位自动置“1"。报文缓存器"0”的数据传输完成之后,下一个报文缓存器,即报文缓存器“1”的TRQ位自动置位。如此这般,连续进行传输。执行连续发送期间,可通过程序在发送请求(TRQ)自动置位的间隔中插入延迟时间。要插入的延迟时间由CnGMABTD寄存器定义。延迟时间的单位是DBT(数据位时间),DBT取决于CnBRP和CnBTR寄存器的设置。在ABT区域内的发送目标之间,未计算发送ID的优先级。连续发送报文缓存器0-7的数据,当来自报文缓存器7的数据帧发送完成时,ABTTRG位自动清为“0”并结束ABT操作。上一页下一页返回第三节功能介绍若不从ABT停止的报文缓存器处恢复发送,可在ABT模式停止时将COGMABT,ABTCLR位置为“1”并将ABTTRG位清为“0",使得内部ABT引擎复位。这种情况下,如果ABTCLR清为0之后将ABTTRG位置1,则发送从报文缓存器0开始。可使用中断来检查所有用于ABT的报文缓存器的数据帧是否已经发送。要这么做,要将除了最末一个报文缓存器之外的各个报文缓存器的CnMCTRLm的IE位清除(0)如果将非ABT功能的报文缓存器(报文缓存器8一15)分配至一个发送报文缓存器,则下一个将要发送的报文由当前发送被挂起的ABT报文缓存器的发送ID以及非ABT功能的报文缓存器的发送ID的优先级所决定。发送来自ABT报文缓存器的数据帧不记录在发送记录列表(THL)中。上一页下一页返回第三节功能介绍八、只收模式只收模式用于监控接收报文而不对CAN总线引起任何干扰,可用于CAN总线分析节点。只收模式中,CAN模块不发送报文到CAN总线,将报文缓存器定义位发送报文缓存器的发送请求挂起待决。在只收模式中,CAN模块中的CAN发送引脚(CTXD)固定为“隐性”电平。因此,即使在报文帧接收期间检测到CAN总线错误,也不能将生成的错误标志从CAN模块发送至CAN总线。因为CAN模块没有产生发送,所以发送错误计数器不更新。因此,CAN模块在只收模式下不进入掉线状态。上一页下一页返回第三节功能介绍九、单次模式在单次模式下,切断CAN协议中所定义的自动重传(根据CAN协议,必须不通过软件控制重复由于仲裁失败或错误产生而中止的报文帧发送)。单次模式的所有其他操作与正常操作模式下相同。单次模式功能不能与使用ABT的正常操作模式结合使用。单次模式根据COCTRL寄存器的AL位的设置禁止已中止报文帧传输的重传。当将AL位清为“0"时,禁止基于仲裁失败和基于错误发生的重传。如果将AL位设为“1",禁止基于错误产生的重传,但是允许基于仲裁失败的重传。因而,定义为发送报文缓存器的报文缓存器的TRQ位通过以下的事件被清除为“0"上一页下一页返回第三节功能介绍十、自检模式自检模式下,可在CAN节点不与CAN总线连接或不影响CAN总线的情况下,对报文帧发送和报文帧接收进行检测。在自检模式下,CAN模块与CAN总线完全断开,但是发送和接收在内部环回。CAN发送引脚(CTXD)固定为隐性电平。然而,如果CAN模块从自检模式进入CAN睡眠模式后,在CAN接收引脚(CRXD)上检测到下降沿,模块从CAN睡眠模式解除时的方法与从其他操作模式解除时相同。为了使模块保持在CAN睡眠模式,将CAN接收引脚(CRXD)用作端口引脚。上一页返回第四节波特率设置进行CAN模块波特率设置首先是时钟的设置,如图7一9所示,其中fCAN为CAN的供应时钟(fPRSfCANMOD为CAN模块系统时钟,fTQ为CAN协议层基础系统时钟。其中每一个数据位分为如图7一10所示的4个部分,通过设置SPT来确定采样点所在的位置,采样点的位置一般根据速率、现场干扰程度和线的长度来综合判断。一个数据位时间(DBT)也就是CAN发送一个字所需要的时间,它与波特率为倒数关系返回第五节CAN控制器的操作在本节中主要介绍初始化以及接收发送的流程图,由于篇幅有限,每种方式不做详细的文字说明,请大家参考随书的大型实验的源代码,其他功能的流程图请查阅手册。初始化主要用来设置CAN模块的波特率、掩码、中断等各报文缓存器公用的部分,详细步骤如图7一11所示。报文缓存器初始化主要包括报文的ID的设置以及报文缓存器的中断等功能,如图7-12所示。下一页返回第五节CAN控制器的操作初始化完成后接下来就是报文的收发处理了,下面给出三种发送报文方式的流程图:图7一13所示为报文发送的基本设置,图7一14所示为采用中断方式使用COLOPT寄存器进行报文发送的方式,图7一15所示为采用中断方式使用COTGPT寄存器进行报文发送的方式,图7一16所示为一般周期性报文常用的报文发送设置方法,它们主要的区别在于是否使用中断以及是否使用发送报文列表功能,大家可以参照下面的设置方法发送报文。上一页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论